导航:首页 > 操作系统 > 基于51单片机的电压表设计

基于51单片机的电压表设计

发布时间:2022-05-15 06:19:48

Ⅰ 基于单片机的数字电压表设计 (请不要完成抄袭)

我给你看看我以前做过的数字电压表,汇编的
COM EQU 50H ;指令寄存器
DAT EQU 51H ;数据寄存器
RS EQU P2.1 ;LCD寄存器选择信号
RW EQU P2.2 ;LCD读/写选择信号
E EQU P2.3 ;LCD使能信号

ORG 0000H
LJMP MAIN ;主程序入口地址
ORG 000BH
LJMP BT0 ;T0中断入口
ORG 0030H ;主程序,初始化

MAIN:
MOV SP,#60H
LCALL INT
MOV 30H,#30H ;电压整数位
MOV 31H,#02EH ;小数点位
MOV 32H,#30H ;小数个位
MOV 33H,#30H ;小数十位
MOV 34H,#30H ;小数百位
MOV 35H,#56H ;字符"V"
MOV R7,#30H
LCALL STR0 ;显示字符串0
LCALL DELAY
LCALL STR1 ;显示字符串1
LCALL DELAY
LCALL N2 ;显示Voltage=0.000V

;***********定时器初始化程序***********

MOV TMOD,#00H ;定时器T0设为方式0
MOV TH0,#00H ;装入定时常数定时100us
MOV TL0,#00H
SETB TR0 ;启动T0
MOV 24H,#08H;装入T0中断次数
MOV IE,#82H ;开中断
LP:
MOV R7,#30H ;显示缓冲区首地址
LCALL DISPLY
SJMP LP ;循环显示
LED1:CLR P3.0
RET
DISPLY: ;LCD显示子程序
MOV COM,#0CAH
LCALL PR1
MOV DAT,30H
LCALL PR2
MOV DAT,31H
LCALL PR2
MOV DAT,32H
LCALL PR2
MOV DAT,33H
LCALL PR2
MOV DAT,34H
LCALL PR2
MOV DAT,35H
LCALL PR2
RET
STR0:
MOV COM,#01H
LCALL PR1
MOV COM,#06H
LCALL PR1
MOV COM,#090H ;设置DDRAM地址
LCALL PR1 ;调写指令代码子程序
MOV DPTR,#TAB4
MOV R2,#16
MOV R3,#00H
WRIN0:
MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DJNZ R2,WRIN0
MOV COM,#0D0H
LCALL PR1
MOV DPTR,#TAB5
MOV R2,#16
MOV R3,#00H
WRIN1:
MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DJNZ R2,WRIN1
MOV R3,#10H
ZUOYI:
MOV COM,#18H
LCALL PRX
DJNZ R3,ZUOYI
LCALL DELAY00
LCALL DELAY00
LCALL DELAY00
LCALL DELAY00
RET

RET

STR1:
MOV COM,#01H ;LCD清0命令
LCALL PR1 ;调写指令代码子程序
MOV COM,#06H ;输入方式命令,光标右移
LCALL PR1 ;调写指令代码子程序
MOV COM,#40H
LCALL PR1
MOV R5,#20H
MOV DPTR,#ZI
MOV R4,#0

LOOP1:MOV A,R4
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R4
DJNZ R5,LOOP1
MOV COM,#80H
LCALL PR1
MOV DPTR,#TAB2
MOV A,#00H
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
MOV A,#01H
MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
MOV A,#02H
MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
MOV A,#03H
MOV DPTR,#TAB2
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
MOV R1,#00H
MOV R0,#0dH
MOV DPTR,#TAB3
LOOP2:MOV A,R1
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R1
DJNZ R0,LOOP2

RET

N2: MOV COM,#0C0H
LCALL PR1
MOV DPTR,#TAB1
MOV R2,#10
MOV R3,#00H
WRIN:
MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DJNZ R2,WRIN
RET
TAB1: DB "VOLTAGE = "
TAB2: DB 00H
DB 01H
DB 02H
DB 03H
DB 04H
DB 05H

TAB3:DB "10701 tcw "

ZI: DB 009H,00AH,00CH,01FH,00CH,00AH,00CH,009H
DB 004H,004H,01FH,004H,00AH,00AH,011H,000H
DB 004H,004H,01FH,01FH,01FH,004H,007H,000H
DB 004H,00EH,010H,00EH,000H,00EH,003H,000H
TAB4:DB " welcome ! "
TAB5:DB "DESIGN BY tcw"
TAB6:DB "123456"

;********************************************************************
;定时器T0中断服务子程序,读取ADC0809第0通道的A/D转换结果并化为显示值*
;********************************************************************
BT0:
PUSH ACC
PUSH PSW
MOV PSW,#08H
CLR TR0
MOV TH0,#00H ;重新装入初值
MOV TL0,#00H
DEC 24H
MOV A,24H
JNZ RTN1
MOV 24H,#08H

LCALL ADC
RTN1: SETB TR0
POP PSW
POP ACC
RETI
ADC:
MOV DPTR,#0F6FFH
MOV A,#0 ;选择通道0
MOVX @DPTR,A ;启动AD转换
MOV A,#40H
DJNZ ACC,$
MOVX A,@DPTR
MOV 22H,A
MOV 21H,#0CCH
CJNE A,21H,BJ0
BJ0:JNC LED
SJMP LL0
LL0:SETB P3.0
SJMP LL
LED:LCALL LED1
LL: MOV A,22H
MOV B,#05H ;A/D转换结果化为显示值
MUL AB ;(AD*5)/256
MOV 30H,B ;AD*5的高字节为整数部分
MOV B,#0AH
MUL AB ;AD*5的低字节为/256的结果,为小数部分
MOV 32H,B ;二进制小数换为10进制数
MOV B,#0AH
MUL AB
MOV 33H,B
MOV B,#0AH
MUL AB
MOV 34H,B
MOV A,30H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 30H,A
MOV A,32H
MOVC A,@A+DPTR
MOV 32H,A
MOV A,33H
MOVC A,@A+DPTR
MOV 33H,A
MOV A,34H
MOVC A,@A+DPTR
MOV 34H,A
RET
TAB: DB "0123456789"
;*****************************************
;****LCD间接控制方式下的初始化子程序******
;*****************************************
INT:
LCALL DELAY
MOV COM,#38H ;设置工作方式
LCALL PR1
MOV COM,#01H
LCALL PR1
MOV COM,#06H
LCALL PR1
MOV COM,#0CH
LCALL PR1
RET

DELAY: ;延时子程序
MOV R6,#0FH
MOV R7,#00H
DELAY1:
NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET

DELAY00: ;延时子程序
MOV R6,#0FFH
MOV R7,#0FFH
DELAY0:
NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
;*********************************************
;*******LCD间接控制方式下的驱动子程序*********
;*********************************************
;2 写指令代码子程序
PRX:
PUSH ACC
CLR RS
SETB RW
PR110:
MOV P0,#0FFH
SETB E
LCALL DELAY00
NOP
MOV A,P0
CLR E
JB ACC.7,PR11
CLR RW
MOV P0,COM
SETB E
CLR E
POP ACC
RET

PR1:
PUSH ACC
CLR RS
SETB RW
PR11:
MOV P0,#0FFH
SETB E
LCALL DELAY
NOP
MOV A,P0
CLR E
JB ACC.7,PR11
CLR RW
MOV P0,COM
SETB E
CLR E
POP ACC
RET
;3 写显示数据子程序

PR2:
PUSH ACC
CLR RS
SETB RW
PR21:
MOV P0,#0FFH
SETB E
LCALL DELAY
MOV A,P0
CLR E
JB ACC.7,PR21
SETB RS
CLR RW
MOV P0,DAT
SETB E
CLR E
POP ACC
RET
END

Ⅱ 基于AT89C51单片机的数字电压表设计和proteus仿真

A/D转换芯片是用ADC0808吗?既然是仿真,就不用单片机产生ADC0808的时钟脉冲,可以用proteus的时钟信号。

数码管一直在不停的闪烁,估计是你的仿真图有问题,下图是用你的程序运行的仿真图,数码管可以正常显示,不闪烁。对照一下你的仿真图。

最后问一句,关于ADC转换后的计算,是要计算什么呢,显示出来的值没有什么规律。

Ⅲ 基于AT89C51单片机的数字电压表设计

推荐:08 0809八路电压监测.rar( http://ishare.iask.sina.com.cn/f/10779994.html )

推荐:21 ADC0832数字电压表.rar( http://ishare.iask.sina.com.cn/f/10779995.html )

Ⅳ 单片机设计制作数字电压表

3.系统板上硬件连线

a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。

b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。

c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。

d)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。

e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。

f)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。

g)把“模数转换模块”区域中的A2A1A0端子用导线连接到“把其他形式的能转换成电能的装置叫做电源">电源模块”区域中的GND端子上。

h)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压">电压模块”区域中的VR1端子上。

i)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。

4.程序设计内容

i.由于ADC0809在进行转换为相应的数宇量的电路">A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。因此产生CLK信号的方法就得用软件来产生了。

ii.由于ADC0809的参考电压VREF=VCC">CC,所以转换之后的数据要经过数据处理,在数码管">数码管上显示出电压值。实际显示的电压值(D/256*VREF)

5.汇编源程序

(略)

6.C语言源程序

#include<AT89X52.H>

unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x00};

unsignedchardispbuf[8]={10,10,10,10,0,0,0,0};

unsignedchardispcount;

unsignedchargetdata;

unsignedinttemp;

unsignedchari;

sbitST=P3^0;

sbitOE=P3^1;

sbitEOC=P3^2;

sbitCLK=P3^3;

voidmain(void)

{

ST=0;

OE=0;

ET0=1;

ET1=1;

EA=1;

TMOD=0x12;

TH0=216;

TL0=216;

TH1=(65536-4000)/256;

TL1=(65536-4000)%256;

TR1=1;

TR0=1;

ST=1;

ST=0;

while(1)

{

if(EOC==1)

{

OE=1;

getdata=P0;

OE=0;

temp=getdata*235;

temp=temp/128;

i=5;

dispbuf[0]=10;

dispbuf=10;

dispbuf=10;

dispbuf=10;

dispbuf[4]=10;

dispbuf[5]=0;

dispbuf[6]=0;

dispbuf[7]=0;

while(temp/10)

{

dispbuf[i]=temp%10;

temp=temp/10;

i++;

}

dispbuf[i]=temp;

ST=1;

ST=0;

}

}

}

voidt0(void)interrupt1using0

{

CLK=~CLK;

}

voidt1(void)interrupt3using0

{

TH1=(65536-4000)/256;

TL1=(65536-4000)%256;

P1=dispcode[dispbuf[dispcount]];

P2=dispbitcode[dispcount];

if(dispcount==7)

{

P1=P1|0x80;

}

dispcount++;

if(dispcount==8)

{

dispcount=0;

}

}

Ⅳ 怎样用单片机设计多路数字电压表

单片机设计多路数字电压表,主要是设计采集,将输入的电压量(模拟信号)转换成数字量(二进制),通常老的方案都是用51单片机+AD转换芯片。AD转换芯片的位数就决定了你的分辨率,你的是5V/0.019=263,转换成为二进制数8位AD芯片可能精度不够,要选用10位AD芯片,最小分辨率可以达到0.0048V,如果按照经典老方案来做,你的成本会比较高51单片机6元+10位AD芯片20元。建议你采用带有51内核并自带AD功能的单片机,如STC5412AD,价格只要13-14元就可以了,而且编程方便,不需要增加外围电路。因为STC5412AD芯片IO口比较少,只有23个IO口,我数码管显示和键盘扫描用的ZLG7289,我自己做出来一个,效果很好,电压能精确到0.001V显示。我只了1路显示,STC5412AD单片机还有其他AD口可以用,一块芯片可以做出4路电压采集来。多路的话建议用多路开关进行切换就好了,否则成本太高。

Ⅵ AD转换CC14433与C51单片机联合设计数字电压表

摘要 采用ADC0809和AT89C51单片机及显示电路完成0~5V、0~15V两个量程的直流电压的检测,并通过LCD1602液晶屏实时显示。通过开关SW1和SW2选择5V或15V,当所测电压超过量程时,报警电路的小灯闪烁、蜂鸣器发出警报,同时液晶屏显示QAQ,当两个开关同时按下也会触发报警电路。

Ⅶ 毕设:基于单片机的数字电压表的设计

2路3相应该算6路
0.5%的话只要8bit就够了
找一个带ad的51
max232
串口通信
c8051f320也可以
奢侈了点
输入用电阻分压
加运放
就可以了
还有几个按键和数码管显示电路
不是很复杂

Ⅷ 基于51单片机的交直流电压表设计

需要了解供电方式才可以做出设计,比如电池供电还是交流供电,我指的是仪器使用的电源情况!

Ⅸ 怎么用用51单片机怎么做一个电压表能够实现如下

1 机根据滑动变阻器电阻大小,就可以改变电压的大小,就可以控制两灯亮度了。
也没有必要再使用单片机了。
2 单片机的按键不但可以控制小灯的亮灭还可以控制亮度。
即由按键控制修改送给小灯的脉冲信号的脉冲宽度(占空比)

Ⅹ 基于51单片机的数字电压表总结与体会

通过与同学的讨论与认真计算设计分析所完成的,课程设计的任务是设计、组装并调试一个数字电压表测量系统。需要我们综合运用单片机等课程的知识,通过查阅资料、方案论证与选定;设计和选取电路和元器件;分析指标及讨论,完成设计任务。
在这次课程设计中,我学会了怎样去根据课题的要求去设计电路和调试电路。动手能力得到很大的提高。从中我发现自己并不能很好的熟练去使用我所学到的高频电路知识。在以后学习中我要加强对使用电路的设计和选用能力。但由于电路比较简单、定型,而不是真实的生产、科研任务,所以我们基本上能有章可循,完成起来并不困难。把过去熟悉的定型分析、定量计算逐步,元器件选择等手段结合起来,掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。这对今后从事技术工作无疑是个很好的训练。通过这种综合训练,我们可以掌握电路设计的基本方法,提高动手组织实验的基本技能,培养分析解决电路问题的实际本领,为以后毕业设计和从事电子实验实际工作打下基础。
还有就是每次在组团做试验都会感觉特别的充实,我们可以按照自己设计的电路去完成,老师也不是死板的要求我们怎么怎么,而是给了我们尽可能大的自己决定的余地,这次的元器件都是按照我们设计出来的电路参数给定的,而且每位老师都很耐心的为我们解决试验中所出现的问题,最后真心的感谢老师对我们课程设计的建议和帮助,我们才得以圆满的完成这次课程设计!

阅读全文

与基于51单片机的电压表设计相关的资料

热点内容
手机已加密怎么办 浏览:199
安卓手机截屏怎么传到苹果 浏览:525
京管家app哪里下载 浏览:33
文件夹横向排列的竖向排列 浏览:451
51单片机驱动摄像头模块 浏览:689
政府文件加密没法转换 浏览:372
android判断栈顶 浏览:331
凭证软件源码 浏览:860
androidwebview滚动事件 浏览:11
如何将电脑上的图片压缩成文件包 浏览:899
程序员转金融IT 浏览:834
黑马程序员培训效果如何 浏览:913
本地集成编译 浏览:528
韩国电影哪个app可以看 浏览:703
玖月授权什么app什么梗 浏览:785
怎么使用服务器上的ip地址是什么情况 浏览:752
手机密码加密后怎么解密 浏览:343
华为云的服务器的ip地址怎么访问不 浏览:367
webstormvue在线实时编译生效 浏览:184
3225pdf 浏览:171