1、基于STC89C52的数字电压表设计报告荆楚理工学院 单片机课程设计成果学院: 电子信息工程学院 班 级: 13电气2班 学生姓名: xxx 学 号: xxxxxxxxxxxxxxxx 设计地点(单位) 单片机实验室D1302 设计题目: 数字电压表 完成日期: 2015年 7月 3日 指导教师评语: _ 成绩(五级记分制): 教师签名: 摘要电压表是测量仪器中不可缺少的设备,目前广泛应用的是采用专用集成电路实现的数字电压表。本系统以STC89C52单片机为核心,以逐次逼近式A/D转换器ADC0809、数码管显示器为主体,设计了一款简易的数字电压表,能够测量05V的直流电压。该设计大体分为以下
2、几个部分,同时,各部分选择使用的主要元器件确定如下:1、单片机部分。使用常见的STC89C52单片机,同时根据需要设计单片机电路。2、测量部分。该部分是实验的重点,要求将外部采集的模拟信号转换成数字信号,通过单片机的处理显示在显示器上。根据需要本设计采用逐次逼近型AD转换器ADC0809进行模数转换。3、数码管显示部分。其中一位为整数部分,其余位小数部分。关键词:STC89C52模数转换数码管显示 1.方案设计与论证数字电压表(Digital Voltmeter)简称DVM,目前采用单片机设计的数字电压表,由于精度高、抗干扰能力强、可扩展性强、集成方便,还可以与PC进行实时通信,所以以下方案均
3、采用单片机设计。1.1方案设计方案一:使用AT89C51单片机作为核心控制芯片,并用TLC549串行芯片作模数采样芯片。其占用的单片机的I/O口少且占用电路面积小。其缺点是编程比较复杂。方案二:使用STC89C52RC单片机作为核心控制芯片,并采用ADC0809数模转换芯片其需要占用一个I/O口,可以循环采样8路模拟通道。编程相对更为简单。1.2方案论证结合实际情况,采用TLC549串行芯片实现电路不具有可行性,所以本设计采用方案二。2.系统硬件电路设计2.1系统原理框图图2-1系统原理框图2.2 A/D转换电路本设计采用ADC0809芯片进行数模转换,ADC0809是具有8通道、8位逐次逼近
4、式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。A/D转换工作原理:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。其结构原理图和外部引脚图如图1-2所示。 图2-2 ADC0809内部结构
5、框图及引脚图本设计通过输入电路将8路输入电压送入ADC0809。并通过单片机P3端口控制实现模数转换,并将转换后的数字信号送入单片机的P2口。ADC0809芯片的时钟信号由单片机产生,送入芯片clock端口。芯片的基准电压和电源电压均由单片机学习板提供。2.3单片机主控电路2.3.1STC89C52性能STC89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,
6、ATMEL的STC89C52是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。STC89C52功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。2.3.2 STC89C52RC各引脚功能 2-3-2引脚配置图P0端口: P0口是一个漏极开路的8位双向I/O口。作为输出端口每个引脚能驱动8个TTL负载对端口P0写入“1”时可以作
7、为高阻抗输入。在访问外部程序和数据存储器时P0口也可以提供低8位地址和8位数据的复用总线。此时P0口内部上拉电阻有效。在Flash ROM编程时P0端口接收指令字节而在校验程序时则输出指令字节。验证时要求外接上拉电阻。P1端口: P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动吸收或者输出电流方式4个TTL输入。对端口写入1时通过内部的上拉电阻把端口拉到高电位这是可用作输入口。P1口作输入口使用时因为有内部上拉电阻那些被外部拉低的引脚会输出一个电流。P2端口:P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动吸收或输出电流方式4个TTL输入。对端口写入
8、1时通过内部的上拉电阻把端口拉到高电平这时可用作输入口。P2作为输入口使用时因为有内部的上拉电阻那些被外部信号拉低的引脚会输出一个电流。 在访问外部程序存储器和16位地址的外部数据存储器如执行“MOVX DPTR”指令时P2送出高8位地址。在访问8位地址的外部数据存储器如执行“MOVX R1”指令时P2口引脚上的内容就是专用寄存器SFR区中的P2寄存器的内容在整个访问期间不会改变。 在对Flash ROM编程和程序校验期间P2也接收高位地址和一些控制信号。 P3端口:P3口是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动吸收或输出电流方式4个TTL输入。对端口写入1时通过内部的
9、上拉电阻把端口拉到高电位这时可用作输入口。P3做输入口使用时因为有内部的上拉电阻那些被外部信号拉低的引脚会输入一个电流。 在对Flash ROM编程或程序校验时P3还接收一些控制信号。2.4电压显示电路在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸型号不同的LED显示器供选择。在本设计中,选择四位一体的数码型LED显示器,即SMA420564: 图2-4 SMA420564显示器引脚图它是一个共阴极接法的四位LED数码显示管,其中a,b,c,d,e,f,g为四位LED各段公共输出端,1,2,3,4分别为每一位的位数选端,dp是小数点引出端2.5总体电路设计2
10、.5.1元器件清单品名规格型号数量单片机STC89C52RC18位模数A/D转换器ADC08091四位共阴数码管SMA42056413296W电位器10310k2IC座28P、40P1三极管9012、80501独石电容100PF、0.01F1排阻1K1电阻10K3弹性小按键2LED灯红色22.5.2仿真图经过以上的设计过程可设计出在pruteus软件中基于单片机的简易数字直流电压表硬件电路原理图如图2-5-2所示 图 2-5-2数字直流电压表硬件电路原理图原理是采用中断方式,对2路05V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存。超过界限时指示灯闪烁。本质上是以单片机为控制器,
11、ADC器件采用ADC0809,要求的电压显示,是对ADC采集所得信号的进一步处理。为得到可读的电压值,需根据ADC的原理,对采集所得的信号进行计算,并显示在LED上。本项目中ADC0809的参考电压为+5V,根据定义,采集所得的二进制信号addata所指代的电压值为:而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:将小数点显示在第二位数码管上,即为实际的电压。本程序将1.25 V和2.5 V作为两路输入的报警值,反映在二进制数字上,分别为0x40和0x80。当A/D转换结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声2.5.3软件设计 主程序包括初始化部分,
12、A/D转换控制部分和定时子程序。同时还设置了多路循环显示和报警子程序。程序框图如图1-3-2所示。图2-5-2 主程序流程图3.系统测试3.1测试方法与结果(1)测试方法实物电路的测试,首先根据仿真电路图焊接实物电路,连接好后,将C语言程序下载到单片机内,进行测试,将侧的的数值记录下来,然后再用已有的数字电压表对可变电阻的电压进行测量,将两组数据进行比较,看结果是否一致,如果不一致,计算测量误差。(2)测试结果R0 R1R2R3R4R5R6R7第一次真实值(v)3.173.021.783.341.833.632.882.13测得值3.203.031.803.341.843.652.892.14
13、第二次真实值3.274.981.680.924.152.153.151.33测得值3.284.981.680.924.172.173.171.34表3-1实物电路的测试结果3.2测试结论通过使用万用表多次测量,并与实际值进行对比。测试结果表明,本设计完成了基本要求。3.3误差分析通过分析以上测试数据,得出一下结论:(1)测量值与实际值有一定的误差,其主要原因是因为A/D转换芯片自身的转换误差和实际电路延时问题造成的。(2)两次测量值有一定的偏差,其主要原因是因为使用单片机学习班提供5V供电,由于单片机输出电压不稳定,造成以上结果。4.设计总结经过近二周的单片机课程设计,终于完成了我的数字电压表
14、的设计,基本达到设计要求。对于此次课程设计,有许多的感触与体会,遇到的难题多,学习到的知识也就更多。第一,硬件电路遇到了ADC0809无内部时钟,需外接外部时钟,如何解决这个问题,我们小组进行了多次讨论,最终确定了在程序中提供时钟信号,大大降低了硬件电路的复杂度。第二,在一个课题中,要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,重要的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理
15、解。第三,在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整,这就要求我们应更加注重实践环节。最后,还要在此感谢课程设计的指导老师们和我的组员们,他们在整个过程中都给予了我充分的帮助与支持。参考文献1. 李建忠,单片机原理及应用第二版,西安电子科技出版社,20082. 李光飞 楼然苗,单片机课程设计指导航空航天大学出版社,20073. 周立功.单片机实验与实践.北京航空航天大学出版社,20114. 吴国经.单片机应用技术.中国电力出版社,2003.5. 徐惠民安德宁丁玉珍.
16、单片微型计算机原理、接口及应用.北京邮电大学出版社,2007年.6. 徐爱钧.智能化测量控制仪表原理与设计第二版.北京航空航天大学出版社,2004.附录#includesbit led1=P10;sbit led2=P11;sbit led3=P12;sbit led4=P13;sbit led=P31;sbit beep=P17;sbit ADDA=P16;sbit ADDB=P15;sbit ADDC=P14; /地址选择端sbit ALE=P34; /高电平锁存地址 ,低电平改变地址sbit OE=P35; /AD转换结束,置1,读数据sbit START=P37; /高电平启动转换sb
17、it EOC=P32;/ 外部中断0#define uchar unsigned char#define uint unsigned intuchar channel=0;uchar voltage_temp;uchar aa,ab1,ab2,ab3;bit flag;uchar code table=0xd7,0x12,0x67,0x37,0xb2,0xb5,0xf5,0x13,0xf7,0xb7;void delay(uint z) uint i,j; for(i=z;i0;i-) for(j=110;j0;j-);void main(void) uchar i; led=1; beep=
18、1; OE=0; / START=0;/高电平启动转换 EA=1; EX0=1;/允许外部中断 EX1=1; IT0=1;/跳变沿触发中断 IT1=1; TMOD=0x21; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=6; TL1=6; ALE=0; /允许改变地址 ADDA=0; ADDB=1; ADDC=0; ALE=1; /锁存地址 while(1) display(voltage_temp); delay(2); START=1; delay(2); START=0; if(voltage_temp)=0x80) ET0=ET1
19、=1; TR0=TR1=1; else ET0=ET1=0; TR0=TR1=0; led=1; beep=1; void ext_0(void) interrupt 0 OE=1; P2=0xff; voltage_temp=P2; START=0; OE=0; ALE=0; /允许改变地址 if(channel=0) ADDA=0; ADDB=0; ADDC=1; else ADDA=0; ADDB=1; ADDC=0; ALE=1; void Timer_0(void) interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa+; if(aa=10) aa=0; led=led; void Timer_1(void) interrupt 3 ab1+; if(ab1=3) ab1=0; beep=beep;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1