直流电压表的设计单片机实训分析Word下载.docx
《直流电压表的设计单片机实训分析Word下载.docx》由会员分享,可在线阅读,更多相关《直流电压表的设计单片机实训分析Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
![直流电压表的设计单片机实训分析Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/31/41f8aa51-223f-4578-8c95-dc9d5a0be70f/41f8aa51-223f-4578-8c95-dc9d5a0be70f1.gif)
二、元器件清单及简介
1、设计思路:
多路数字电压表应用系统硬件电路由单片机、A/D转换器、数码管显示电路和按键处理电路组成,由于ADC0808在进行A/D转换时需要有CLK信号,本试验中ADC0808的CLK直接由外部电源提供为500kHz的方波。
由于ADC0808的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值(D/256*VREF)ADC0808采用逐次逼近法转换,把模拟电压转换成16进制的D,由于是对直流电压0~5V进行采集,所以D对应的电压为V0
,我们的目的就是要把V0显示在LED显示器上,因为单片机不好进行小数点计算,所以有:
V0=2*D扩大了100倍,扩大100倍后的结果高八位放寄存器B,低八位放寄存器A,分寄存LED显示器。
2、元器件清单:
1、总体电路图
元件名称
序号
参数
数量(个)
AT89C51
U1
/
1
四位LED数码管
74LS373
U2
ADC0809
U3
晶振
X1
电阻
R9
1k
电容
C1,C2,C3
22p,22p,10uF
各1个
三、设计原理分析
2、分块电路
(1)LED数码管的接口简介
LED的段码端口A~G分别接至AT89C51的P1.0~P1.7口,位选端1~4分别接至P3.5、P3.4、P3.1、P3.0,如下图所示。
(2)AT89C51的功能介绍
AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
如下图所示
功能如下:
1.4K字节可编程闪烁存储器。
2.32个双向I/O口;
128×
8位内部RAM。
3.2个16位可编程定时/计数器中断,时钟频率0-24MHz。
4.可编程串行通道。
5.5个中断源。
6.2个读写中断口线。
7.低功耗的闲置和掉电模式。
8.片内振荡器和时钟电路
(3)ADC0808的功能介绍
它是由8位A/D转换器,一个8路模拟量开关,8位模拟量地址锁存译码器和一个三态数据输出锁存器组成;
+5V单电源供电,转化时间在100us左右;
内部没有时钟电路,故需外部提供时钟信号。
如图所示:
ADC0808引脚简介
1.IN0~IN7:
8路模拟量输入端。
2.D0~D7:
8位数字量输出端口。
3.START:
A/D转换启动信号输入端。
4.ALE:
地址锁存允许信号,高电平有效。
5.EOC:
输出允许控制信号,高电平有效。
6.OE:
输出允许控制信号,高电平有效。
7.CLK:
时钟信号输入端。
8.A、B、C:
转换通道地址,控制8路模拟通道的切换。
A、B、C分别与地址线或数据线相连,三位编码对应8个通道地址端口,A、B、C=000~111分别对应IN0~IN7通道的地址端口。
(4)74LS373的功能介绍
74LS373是一种带有三态门的8D锁存器,其在本设计中是锁存P0口的低8位地址,芯片模型如下图所示。
引脚介绍
1.D0~D7:
8位数据输入线;
2.Q0~Q7:
8位数据输出线
3.G:
数据输入锁存选通信号。
当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。
4.
:
数据输出允许信号,低电平有效。
当该信号为低电平时,三态门打开,锁存器中的数据输出到数据输出线上,当该信号为高电平时,输出线为高阻态。
(5)调试结果如下:
连接好的实物图如下:
测得数据如下:
通过上面对比可以看出电压源显示的数据为5.00V,LED显示的数据为5.10V,有一定的误差,误差来源可能是因为时钟信号的频率还是达不到500K,各器件之间的连线可能也会对它造成干扰,在老师的允许下顺利的结束实验。
四、设计中的问题及改进
为了产生一个时钟信号,我们想尽了各种方法,如下:
1.0809仿真时,外加时钟信号,实际要51自己产生,而我们就在p0加了个反向器产生信号给了0809,结果实际操作和老师所说,我们产生的信号太小了,无法驱动。
2.为了产生一个信号我们修改了程序,用方式2从51的P2.0口产生一个时钟信号,但是实际操作之后得不到理想的频率,无法实现。
1、经过两天的努力和在许老师辛勤的指导下,我们的电路终于设计成功,LED的显示结果在误差允许的范围内和用电压表显示的结果是一样的,在刚开始着手做的时候,在程序编写修改部分也是很麻烦的,最后和同学合作编写好了软件仿真也很顺利,可是在搭面包板却困难重重,总是得不出结果,老师告诉我们软件仿真往往在硬件电路得不到实现,有的软件可以而硬件不可以、硬件可以而软件不可以。
例如:
在仿真时可以不要加晶振,但实际电路板上却要搭上,否则就不会工作。
还有为了产生一个时钟信号,如上诉我们想尽了和尝试了各种方法最后才成功。
2、本实验综合性较强,考察了理论分析与动手实践的综合能力,让我们通过实验,更深的理解了模拟电路的知识精髓。
特别是搭面包板,真的是让我们尝尽各种苦头,都有种崩溃的感觉,但也让我们认识到,当遇到自己不会或者不懂的问题时一定要及时去查资料、询问老师和同学讨论,最终得到的很多知识和经验也是书本得不到的。
[1]《单片机应用实例开发》高等教育出版
[2]《过程控制与仪表》陈乐中国计量学院出版社,2007-3
[3]《新型AT89S52系列单片机及其应用》孙育才北京:
清华大学出版社
附录程序:
LED_0EQU30H;
个位
LED_1EQU31H;
十位
LED_2EQU32H;
百位
LED_3EQU33H;
存放千位段码
ADCEQU35H
CLOCKBITP1.4;
定义0809时钟位
STBITP1.5
EOCBITP1.6
OEBITP1.7
ORG0000H
SJMPSTART
ORG000BH
LJMPINT_T0
ORG0030H
START:
MOVLED_0,#00H
MOVLED_1,#00H
MOVDPTR,#TABLE;
段码表首地址
MOVTMOD,#02H
MOVTH0,#245
MOVTL0,#00H
MOVIE,#82H
SETBTR0
WAIT:
CLRST
SETBST
CLRST;
启动AD转换
JNBEOC,$;
等待转换结果
SETBOE
MOVADC,P2;
读取AD转换结果
CLROE
MOVA,ADC;
AD转换结果转换成BCD码
MOVR7,A
MOVLED_3,#00H
MOVLED_2,#00H
MOVA,#00H
LOOP1:
ADDA,#20H;
一位二进制码对应20mV电压值
DAA
JNCLOOP2
MOVR4,A
INCLED_2
MOVA,LED_2
CJNEA,#0AH,LOOP4
INCLED_3
LOOP4:
MOVA,R4
LOOP2:
DJNZR7,LOOP1
ACALLBTOD1
LCALLDISP
SJMPWAIT
ORG200H
BTOD1:
MOVR6,A
ANLA,#0F0H
SWAPA
MOVLED_1,A
MOVA,R6
ANLA,#0FH
MOVLED_0,A
RET
INT_T0:
CPLCLOCK;
提供0809时钟信号
RETI
DISP:
MOVA,LED_0;
显示子程序
MOVCA,@A+DPTR
CLRP1.3
MOVP0,A
LCALLDELAY
SETBP1.3
MOVA,LED_1
CLRP1.2
SETBP1.2
CLRP1.1
SETBP1.1
MOVA,LED_3
CLRP1.0
SETBP1.0
RET
DELAY:
MOVR6,#10;
延时5ms
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
TABLE:
DB3FH,06H,5BH,4FH,66H;
共阴数码管7段值
DB6DH,7DH,07H,7FH,6FH
END
安徽师范大学皖江学院
课程设计成绩评定单
题目:
直流电压源的设计
学生姓名
学号
成绩
指导教师
许长安
1182120
袁旭
1171060
任武
1171
朱国强
指导教师评语:
指导教师评定
设计成绩等级
指导教师(签章):
年月日