《用单片机实现电压采集单片机课程设计报告书.doc》由会员分享,可在线阅读,更多相关《用单片机实现电压采集单片机课程设计报告书.doc(36页珍藏版)》请在三一办公上搜索。
1、中国矿业大学单片机课程设计姓 名: 学 号: 专 业: 电子科学与技术 题 目: 用单片机实现电压采集 专 题: 单片机系统设计 指导教师: 设计地点: 时 间: 2011-04 2011 年 4月单片机课程设计任务书专业年级 学号 学生姓名 任务下达日期: 2011 年 4月 18日设计日期: 2010年4月18日 至 2010年 4月29日设计题目:用单片机实现电压采集设计专题题目:单片机系统设计设计主要内容:1、制作可产生0至+5V电压模块2、制作单片机电压采集装置设计要求:一、基本要求(1)制作可产生0至+5V电压模块(2)制作单片机电压采集装置电压采集功能 在ADC0809的0通道输
2、入05V电压,实时显示被测电压值(显示精度0.001V,即显示1位整数,3位小数)。二、扩展要求(1)指定通道采集 默认采集通道为0,按2:通道1,按3:通道1,按1:进入下一模式。(2)循环采集显示 ,默认每通道显示2秒钟。按1:进入下一模式。 (3)报警设置 报警上限默认为4.0V ,警下限默认为0.0V按2进行上限设置,按3进行下限设置,按1:进入制定通道选择。指导教师签字:摘要随着电子科技的不断进步,电压测量成为广大电子领域中必须掌握的过程,并且对测量的精度和采集功能的要求越来越高,而电压的测量与显示系统甚为重要。本文介绍的重点是电压数据采集与显示系统,数据采集与通信控制采用了模块化设
3、计,数据采集与通信控制采用了单片机52来实现,硬件部分是以单片机为核心,还包括模-数转换模块,显示模块,和串行接口部分,还有一些简单的外围电路。8路被测电压通过通用ADC0809模-数转换,实现对采集到的数据进行模拟量到数字量的转换,由单片机对数据进行处理,用数码管显示模块来显示所采集的结果,由相关控制器完成数据接收和显示。本系统主要包括四大模块:数据采集、控制模块、显示模块、A/D转换模块。绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。在软件编程上,采用了C语言进行编程,开发环境使用相关集成开发环境。开发了显示模块程序、通道切换程序、A/D转换程序。关键词:单片机
4、ADC0809 A/D转换 模块显示 电压测量目录一 绪论. 11.1系统概述. 11.1.1设计性质、目的、任务. . 11.2系统设计方案 . .11.2.1系统设计原理框图 . .2二 硬件电路设计. . 22.1 主要芯片介绍. 22.1.1 AT89S51 .22.1.2 A/D0809. 32.2 单片机电路 .42.1.1 单片机电路板.42.2.2 单片机最小系统. 42.2.3 单片机的复位电路 .52.2.4 开关电路 .52.2.5 显示译码电路 .62.2.6 蜂鸣器和继电器电路 .72.3 A/D转换 .72.3.1 ADC0809内部结构 .72.3.2 ADC08
5、09转换原理 .82.3.3电路设计.82.3.4采集数据和对应电压的转换 .8三 软件设计 .93.1 设计任务. 93.1.1 基本任务 .93.1.2 扩展任务 .93.2 程序代码.93.2.1 C语言实现基本功能 .93.2.2主程序框图 .17四 系统调试 .174.1 硬件部分 .174.2 软件部分 .18五 总结.18参考文献:.18附录一 A/D转换板原理图 .19附录二 A/D转换板PCB图.20附录三 单片机板电路原理图 .21附录四 单片机印刷电路板布线图 .22一 绪论1.1系统概述1.1.1设计性质、目的、任务单片机系统设计是在学习模拟电子技术、数字电子技术、单片
6、机原理及应用等相关理论课程之后,所设置的重要的综合性实践教学环节,课程的任务是通过选题的设计、安装和调试,巩固已学的理论知识,综合应用所学知识,进行电子系统的设计,从而培养工程实践能力、创新能力,培养严肃认真的工作作风和科学态度。通过查阅资料、选定方案、设计电路、安装调试、写报告等过程,得到一次科学研究工作的启蒙训练,也为以后利用单片机开发电子产品奠定坚实的基础。1.2系统设计方案本次实验要求设计电压采集装置,课程设计分设计、制作和调试三个部分。设计选题以单片机为核心,基本内容应包括单片机最小系统、键盘和LED显示电路,以及设计系统涉及的其他电路。系统硬件电路由标准电路和自制电路两部分组成。标
7、准电路包括单片机学习板,这部分电路已制成电路板,可根据设计需要进行配置选用。自制电路需自行设计焊接,包含标准电路不具备的其他电路。设计中采用了模数转换器,利用AD0809型8位MOS型A/D转换器。可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,实现模拟信号到数字信号的转换。控制部分采用单片机AT89C52来完成。显示部分利用LED数码管显示模块,来显示采集到的电压分量。1.2.1系统设计原理框图VCCGND输入信号调理A/D0809AT89S52数码管键盘复位二 硬件电路设计系统硬件电路由标准电路和自制电路两部分组成。标准电路包括单片机最小系统、8个L
8、ED数码管电路和键盘电路,这部分电路已制成电路板,可根据设计需要进行配置选用。自制电路需自行设计焊接,包含标准电路不具备的其他电路。2.1 主要芯片介绍2.1.1 AT89S52AT89S52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89S52单片机在电子行业中有着广泛的应用。兼容MCS51指令系统;8k可反复擦写(大于1000次)Flash ROM;
9、32个双向I/O口; 256x8bit内部RAM;3个16位可编程定时/计数器中断;时钟频率0-24MHz;2个串行中断,可编程UART串行通道;2个外部中断源,共8个中断源;2个读写中断口线,3级加密位; 2.1.2 A/D0809共28脚,双列直插式封装。主要引脚功能如下:(1)IN0IN7:8路模拟信号输入端。(2) D0D7:8位数字量输出端。(3) C 、B 、A:控制8路模拟通道的切换,C、B、A=000111分别对应IN0IN7通道。(4) OE、START、CLK:控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。(5)VR(+)和VR(-):参
10、考电压输入端。 2.2 单片机电路2.1.1 单片机电路板CPU电路复位电路晶振电路数码管显示电路按键电路LED显示电路图2:电路框图单片机电路板电路框图如图2;原理图见附录3;PROTEL绘制的电路排版图见附录4。2.2.2单片机最小系统 上图为CPU原理图。该原理图包含单片机以及外部连接译码,锁存电路端口,其中的ALE,REST为高电平时用来启动ADC0809.P0、P2口控制数码输出显示,P1口的低四位控制按键,P1.3P1.6控制通道选择。晶振采用12MHZ,该频率有利于提高串口的通信可靠性,同时又保证单片机有较高的运行速度。2.2.3单片机的复位电路当开关断开的时候,VCC对电容充电
11、,RESET端为低电平;在开关闭合时电容放电,RESET端为高电平。2.2.4 开关电路4位脉冲按键,共用端口。 按下:输入高电平2.2.5 显示译码电路显示电路采用6位共阴极LED动态扫描显示,输出所需字形,74LS273选择字位。在动态方式中,逐个地循环地点亮各位显示器。如图所示: 74LS273芯片是用来控制显示时候的字位的,由于单片机的管脚是有限的通过使用273芯片可以避免少使用些单片机的管脚,两片273一个控制字形选择,一个控制字位选择,选择方式为总线地址结构。2.2.6 蜂鸣器和继电器电路 2.3 A/D转换2.3.1 ADC0809内部结构ADC0809由8路模拟开关、地址锁存与
12、译码器、比较器、256电阻阶梯、树状开关、逐次逼近式寄存器SAR、控制电路和三态输出锁存器等组成。startclock输出允许(1,输入信号)转换结束(1,输出)地址锁存,输入信号500KHz1MHz启动(高电平脉冲,输入)2.3.2 ADC0809转换原理图11:ADC0809转换工作时序工作原理: 当单片机端的P3.3接低电平时,可以使两个非门打开(1)当模拟量送至某一输入通道后,CPU将标识该通道编码的三位地址信号经数据线或地址线输入到ADDC、ADDB、ADDA引脚上。 (2)地址锁存允许ALE锁存地址信号,启动命令START启动A/D转换。(3)转换开始,EOC变低电平,转换结束,E
13、OC变为高电平。EOC可作为中断请求信号。 (4)转换结束后,可通过执行IN指令,设法在输出允许OE脚上形成一个正脉冲,打开三态缓冲器把转换的结果输入到DB,一次A/D转换便完成。 2.3.3电路设计硬件资源分配数码管显示电路:用总线结构,字型码地址为efff;字位码地址为dfff;键盘电路:4个键P3.2,P3.3,P3.4,P3.5蜂鸣器 p1.0继电器 p1.6ADC0809电压转换电路控制信号:/wr=p3.6 /rd=p3.7 eoc= p3.2 Cs= p3.3 (可以不要,使0809常选通)AD总线地址为7fff,p1.1,p1.2,p1.3控制通道选择。2.3.4采集数据和对应
14、电压的转换一个8位二进制的AD采集数据转换为5位10进制显示数据。对应关系:00HFFH 0.000V5.000V;AD分辨率为:5/25519.6mV;算法: Y=X19.6=X196/10具体步骤:1、求 YX 196 ,结果为双字节二进制数 2、将 Y转换为十进制数, 最大是一个5位的十进制数 3、去掉十进制数的最低位,相当于除10 三 软件设计3.1 设计任务3.1.1 基本任务 进行电压采集并显示 3.1.2 扩展任务 1、指定通道采集 2、循环采集显示 ,默认每通道显示2秒钟,并具有锁定通道功能。3、报警设置 报警上限默认为4.0V 报警下限默认为0.0V 3.2 程序代码3.2.
15、1 C语言实现基本功能#includeUnsigned char code dispcode=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;unsigned char xdata zixin _at_ 0xefff;unsigned char xdata ziwei _at_ 0xdfff;unsigned char xdata ad _at_ 0x7fff;unsigned char getdata;unsigned char a,b,c,d,e,f,g,gt;uns
16、igned int get ; unsigned int n,q,z=0,j,p,sx,xx;sbit K1=P35;sbit K2=P34;sbit K3=P33;sbit BE=P10;sbit JD=P16;unsigned char channel=0x0f1;unsigned char i=0;void delay(unsigned int cnt)cnt-;void int0(void) interrupt 0 getdata=ad;get=getdata*196;a=get/10000;b=get%10000/1000;c=get%10000/1000/100;d=get%100
17、00/1000/100/10;sx=a*10+b;xx=p*10+q;zixin=dispcodei;ziwei=1;delay(200);ziwei=0; zixin=dispcodea|0x80; ziwei=16; delay(200);ziwei=0; zixin=dispcodeb; ziwei=32;delay(200);ziwei=0;zixin=dispcodec; ziwei=64; delay(200);ziwei=0; zixin=dispcoded; ziwei=128;delay(200);ziwei=0;if(a=4 & b=j )BE=0;JD=0;delay(2
18、000); zixin=dispcode4|0x80; ziwei=4; delay(100); ziwei=0; delay(100); zixin=dispcodej; ziwei=8; delay(100); ziwei=0; delay(100);else if(sx=40)q=0;TR0 = 0;TH0=0x3C;TL0=0x0b0;channel=channel+2;i+;if(i=8)channel=0x0f1;i=0;P1=channel;zixin=dispcodei;ziwei=1;delay(200);ziwei=0;else TH0 = 0x3C;TL0 = 0x0B0
19、;TR0 = 1;void main(void) TMOD |=0x01;IT0=1; EX0=1;EA=1; TH0=0x3c;TL0=0xbb;ET0=1;ad=0;while(1) if (!K1) z+;if(z2)z=0;if(z=0)TR0=0;if(z=1)TR0=TR0;if(z=2)TR0=0; while(!K1) for(n=0;n9)j=0;while(!K2) ;delay(2000);if(!K3)q+;if(q9)q=0;p+;if(p1)p=0; if(p=1&q5)p=0;q=0;while(!K3);delay(2000); if(z=0) TR0=0; i
20、f(!K2)for(n=0;n100;n+);channel=channel+2;i+;if(i=8)channel=0xf1;i=0;while(!K2); for(n=0;n100;n+);if(!K3) for(n=0;n1000;n+);channel=channel-2;if(i=0)channel=0xf1;i=1;i-;while(!K3); for(n=0;n100;n+); 3.2.2主程序框图开始系统初始化显示初始化读键值第一次按下第二次按下第三次按下按键选通道循环选通道修改上下限四 系统调试系统调试是设计的最后一部分,此部分用于检查硬件和软件错误。硬件上此次实验主要焊接了
21、扩展板上的A/D转换部分,电路简单,容易检查,软件上编程是分段进行,按模块编写。4.1 硬件部分扩展板上主要难度在于芯片之间的连接,由于是手工布线,不可避免的会出现虚焊等情况,由于粗心,把两个焊点连接了起来,调试的过程出了一点问题,不过还好,借助万用表成功找出了问题。4.2 软件部分软件程序设计是花费时间最多的地方,在同学的指导下,程序的编写循序渐进,先实现比较简单的功能,再在此基础上扩展功能。由于单片机知识当时学的不牢固,现在用到了得现场去书上查,一边学习一边编程。困难出现在最后的上下限处理,手动设置上下限上出现了困难,最后在同学的共同讨论和老师的指导下,终于实现了功能。中间进行调试程序使用
22、到了仿真器,掌握了用仿真器调程序的技巧。五 总结本次课程设计的内容是基于51单片机的直流电压采集与显示系统的设计,核心部分是模数转换及电压显示,这一知识点在本学期的教学过程中已经广泛使用,对模数转换芯片ADC0809有进一步了解,故我将此次设计的重点放在了功能的扩展部分的实现方法及显示的改变上。大四学期教学实验中,通过网上资料及课本信息,我了解了简单编程和设计最重要的是排版效果,此次,我之前基础上,扩展了模数转换的通道,增添了量程选择功能,在数码管显示上,采用了动态扫描的方法,并且编程由由汇编转变为C语言。在这些过程中我获益匪浅,加深了对穆数转换的了解,能对其功能进行多元化的应用,数码管的显示
23、技术上,我在以前所存静态显示的基础上,又掌握了动态扫描方法,有利于简化硬件设施。通过这次综合课程设计,我对单片机的开发和应用产生了浓厚的兴趣,课外也在进行一些探究,希望能熟练地掌握它。在此基础上,我发现学习好它的一个有效方法就是动脑动手进行一些开发和设计,在开发和设计的过程中去思考和学习,边学边用,则能真正的理解原理和过程,达到掌握相关知识点的目的。当前机遇单片机的应用非常广泛,其强大的控制功能在各个领域都得到广泛的应用。所以,今后我将会在老师的指导下,更深入的去理解与探究这块领域。参考文献:1、胡汉才,单片机原理及其接口技术(2版),清华大学出版社 2、张迎新,单片机中级教程,北京航空航天大学出版社3、丁元杰,单片机原理与应用,机械工业出版社4、孙育才,MCS-51系列单片微型计算机及其应用,东南大学出版社5、曹巧媛,单片机原理及应用教学、实践、设计指导,电子工业出版社6、单片机实验指导书附录一 A/D转换板原理图附录二 A/D转换板PCB图附录三 单片机板电路原理图