单片机课程设计数字电压表
《单片机课程设计数字电压表》由会员分享,可在线阅读,更多相关《单片机课程设计数字电压表(28页珍藏版)》请在装配图网上搜索。
1、 单片机技术课程设计说明书 数 字 电 压 表 院 、 部: 电气与信息工程学院 学生姓名: 指导教师: 职称 专 业: 班 级: 完成时间: 2 摘 要 在现代检测技术中,常需用高精度数字电压表进行现场检测,将检测到的数据送入微计算机系统,完成计算、存储、控制和显示等功能。本文中的数字电压表的控制系统采用ATMEL89C51单片机,A/D转换器采用TLC549为主要硬件,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单,所用的元件较少,成本低,调节工作可实现自动化。电压表在生活中应用非常广泛,而一种简单方便的数字电压表则更能受到人们的欢迎。所以设计一个简易数字电压表很有必要。本
2、电压表采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现电压测试,同时液晶显示电压值要求。该电压表设有配套的行列式键盘,进行相应的操作就可实现进入、确认功能。测压准确、显示直观、运行稳定等优点。具有极高的推广应用价值。关键词 数字单片机;数字电压表;A/D转换;模拟信号 目 录1 设计课题任务、功能要求说明及方案介绍11.1 设计课题任务11.2 功能要求说明11.3 设计总体方案介绍及原理说明12 设计课题硬件系统的设计22.1 设计课题硬件系统各模块功能简要介绍22.2 设计课题电路原理图、PCB图32.3 设计课题元
3、器件清单33 设计课题软件系统的设计43.1 设计课题使用单片机资源的情况43.2 设计课题软件系统各模块功能简要介绍43.3 设计课题软件系统程序流程框图43.4 设计课题软件系统程序清单74 设计结论、测试结果、误差分析、教学建议144.1 设计课题的设计结论及使用说明144.2 设计课题的测试结果144.3 设计课题的误差分析164.4 设计体会164.5 教学建议16参考文献 17附 录 181 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个能够测量直流电压的数字电压表。测量电压范围05V,测量精度小数点后两位。该电压表上电或按键复位后能自动显示系统提示符作者信息,
4、进入测量准备状态,按测量开始键则开始测量,并将测量值显示在液晶显示器上。按退出键完成电压表的测量。1.2 功能要求说明设计一个能够测量直流电压的数字电压表。测量电压范围05V,测量精度小数点后两位。该电压表上电或按键复位后能自动显示系统提示符作者信息, 进入测量准备状态,按测量开始键则开始测量,并将测量值显示在液晶显示器上。调动滑动变阻器,显示电压数值随之改变。1.3 设计课题总体方案介绍及工作原理说明本电压表主要由单片机、4*4行列式键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1.1所示: 液晶显示行列式键盘 AT89C51 电源及复位电路等TCL549模数转换 图1.1 总体设
5、计方案图本电压表的所有的软件、参数均存放在AT89S52的Flash ROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。行列式键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字电压表效果,再利用液晶显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、显示模块、电源模块。(1)复位电路:复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一
6、个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,如图所示。当时钟频率选用6MHz时,C取22F,Rs约为200,Rk约为1K。(2)键盘电路:当非编码键盘的按键较少时,采用独立式键盘比较方便,但液晶板则适合行列式键盘,占用口线少,使用也相对方便,所以本设计采用行列式键盘。行列式键盘的工作方式是先用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描、自动消抖、
7、自动识别按下的键,并给出编码,能对双键或n个键同时按下的情况实行保护。键盘电路原理图如图2.4所示 (3)显示电路:显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及生产工艺,单片机应用系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LCD显示器是现在最常用的显示器之一。本设计用的是HS12864液晶显示器,通过单片机输出的数据在液晶屏上显示。(4)电源电路:现在市面上销售的编程器有很多都是由PC机的USB口直接供电,为了降低本设计的成本及节省设计时间,没有另外设计编程器。(5)TLC549电路:TLC549带有片内系统时钟,该时钟与IOCLOC
8、K是独立工作的,无需特殊的速度或相位匹配。当CS为高时,数据输DATA OUT端处于高阻状态,此时IO CLOCK不起作用。这种CS控制作用允许在同时使用多片TLc549时,共用IOcLOCK,以减少多路(片)AD使用时的IO控制端口。一组通常的控制时序操作如下: (1)将Cs置低,内部电路在测得CS下降沿后,在等待两个内部时钟上升沿和一个下降沿后,再确认这一变化,最后自动将前一次转换结果的最高位(D7)位输出到DATAOUT端; (2)在前四个IO CLOCK周期的下降沿依次移出第2、3、4和第5个位(D6,D5,D4,D3),片上采样保持电路在第4个IO CLOCK下降沿开始采样模拟辅人:
9、 (3)接下来的3个I/O CLOCK周期的下降沿可移出第6、7、8(D2,D1,D0)各转换位(4)最后,片上采样保持电路在第8个IOCLOCK周期的下降沿将移出第6、7、8(D2,D1,D0)各转换位。然后使保持功能持续4个内部时钟周期,接着开始进行32个内部时钟周期的AD转换。在第8个IO cLCOK后,CS必须为高或IO LOCK保持低电平,这种状态需要维持36个内部系统时钟周期以等待保持和转换工作的完成。如果CS为低时,IO CLOCK上出现一个有效干扰脉冲,则微处理器,控制器将与器件的IO时序失去同步;而在cs为高时若出现一次有效低电平,则将使引脚重新初始化,从而脱离原转换过程。在
10、36个内部系统时钟周期结束之前,实施步骤(1)(4),可重新启动一次新的AD转换,与此同时,正在进行的转换将终止。但应注意,此时的输出是前一次的转换结果而不是正在进行的转换结果。若要在特定的时刻采样模拟信号,则应使第8个IO CLOCK时钟的下降沿与该时刻对应。因为芯片虽在第4个IO CLOCK时钟的下降沿开始采样,却在第8个IO CLOCK的下降沿才开始保存。 TLC549的电路原理如图2.4所示。2.2 设计课题电路原理图、PCB图、元器件布局图图2.1 电路原理图图2.2 PCB图2.3 设计课题元器件清单图2.3 元器件清单3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况
11、设计课题使用单片机资源的情况如下:在本次设计中用到了P0和P3、P1口。P0口接液晶显示器的D0-D7,进行数据的读写功能;P3口接的是“|E, RS ,R/W”对液晶进行读写控制命令,P1口接行列式键盘,通过行列式键盘按键的控制来完成电压表的制作3.2 设计课题软件系统个模块功能简要介绍 本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、液晶显示程序模块。主程序:主要是用于对模拟输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制,通过调用子程序来完成模数转换的功能。中断服务程序:主要是用于电压表的准确运行、数据输入过程中的等待处理。行列式键盘输
12、入程序模块:主要是用于确定按键并得到特定的键码值。液晶及其驱动模块:主要用于显示单片机处理后的数字电压值。延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时;按键去抖和等待模拟信号的输入采样。3.3 设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言。主程序流程框图如3.1所示;键盘扫描子程序框图如3.2所示;电压转换流程图如3.3所示;液晶显示程序流程图如图3.4所示;开始调用显示子程序 调用键扫子程序电压测量确认键按下? N电压测量电压数据处理 调用键扫描子程序 退出键按下? N 调用显示子
13、程序结束 图3.1 主程序流程框图 图3.2 键盘扫描子程序图3.3 电压转换流程图开电源 设定控制命令字 串行数据的输出 初始化完成 图3.4液晶显示程序图3.4设计课题软件系统程序清单/*名称:电压表作者:吴强时间:2012.1.1功能:s10是确认键,s11是分层退出键,s16是总退出键。/进入菜单界面,按数字键3跟确认键之后进入电压表,再按数字键2确认之后开始测量电压,并显示在液晶屏上 */ #include #include #include #define uchar unsigned char #define uint unsigned int #define Ta 500 uc
14、har keyscan(); uchar time,flag; uchar v,n=0; int Num_Index; bit rs = P31; sbit rw = P36; sbit en = P37; sbit CS=P34; /片选信号 sbit IOCLK=P33; /时钟信号 sbit DATAOUT=P32; /数据口 uchar code yejingtable=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x2e,0x76;/0-9 uchar find_code3; /*延时函数*/ void delay(u
15、int m) while(-m); /*/uchar tlc549()uchar i,T1=0; CS=1;IOCLK =0; CS =0; /使能549_nop_(); _nop_(); for(i=0;i8;i+) IOCLK =1; /准备好数据 delay(10); T1=T11; /左移1位 if(DATAOUT=1) T1=T1+1; /保存本次移出的位 IOCLK =0; /打出下一位数据 CS=1; /释放对TLC945的控制 return T1; delay(20); /*键扫描函数*/ uchar keyscan(void) uchar scan,tmp; /列号,行号 P
16、1=0xf0; /发全行0扫描码 if(P1&0xf0)!=0xf0) /若有键按下 delay(1000); /延时去抖 if(P1&0xf0)!=0xf0) /延时再判键是否还按下 scan=0xfe; while(scan&0x10)!=0) /逐行扫描 P1=scan; /输出行扫描码 if(P1&0xf0)!=0xf0) /本行有键按下 tmp=(P1&0xf0)|0x0f; delay(50000); /按键判释放 return (scan)|(tmp); /还回键值 else scan=(scan1)|0x01; /行扫描码左移一位 return (0); /无键按下,还回0 /
17、*延时2s*/ void delay2s() TMOD=0X01; TH0=0x3C; TL0=0xB0; EA=1; ET0=1; TR0=1; do while(time40); time=0; TR0=0; void timer_() interrupt 1 time+; TH0=0x3C; TL0=0XB0; /=液晶写命令函数 void writecommand(uchar command) delay(100); rs=0; rw=0; en=1; P0=command; /液晶数据线P0 en=0; /=液晶写数据函数 void writedata(uchar date) del
18、ay(100); rs=1; rw=0; en=1; P0=date; en=0; /=液晶设置函数 void lcdset(void) writecommand(0x30); /基本指令集 writecommand(0x01); /清屏,DDRAM的地址归零 writecommand(0x02); /地址归位 writecommand(0x0c); /显示开,光标关,反白关 writecommand(0x06); /DDRAM地址加1 /=液晶显示函数 void display(uchar y, uchar x, uchar *p) switch (y) case 1:writecomman
19、d(0x7f+x); break; /液晶第一行 case 2:writecommand(0x8f+x); break; /0x90+(x-1) case 3:writecommand(0x87+x);break; case 4:writecommand(0x97+x);break; default:break; while(*p) writedata(*p+); /*确认函数*/ void sure() uchar i=2,j=2; do v=keyscan(); if(v!=0x44&v!=0) lcdset(); n=v; display(i+,j+,确认?);if(i=5) i=1;
20、j=1; while(v!=0x44&v!=0x84&v!=0x88); void display1(void) writecommand(0x92); writedata(yejingtablefind_code0); writedata(yejingtable11);writedata(yejingtablefind_code1); writedata(yejingtablefind_code2); writedata(yejingtable12); void main() lcdset(); delay(1000); display(2,1,电气与信息工程院); display(3,2,
21、电气本4 班); display(4,2,吴强); writedata(0x03); delay2s(); while(1) display(1,3,电压表); sure(); flag=1; writecommand(0x01); switch(n) case 0x41: while(flag=1) long int i,temp; i=tlc549(); temp=(i*5)*39.1;从TLC549里读取数据 find_code0=temp/10000;百位 find_code1=(temp/1000)%10;十位 find_code2=(temp/100)%10;个位 display(
22、1,3,测量电压); for(i=0;i100;i+) display1(); n=keyscan(); if(n=0x88) flag=0; writecommand(0x01); 4 设计结论、仿真结果、误差分析、教学建议4.1 设计课题的设计结论及使用说明液晶板子是在暑假做的,那是第一次做,所以花了一周的时间来完成PCB板的制作,在电路板上安装元件,并焊接。经过将近三天的电路焊接,系统电路焊接基本完成,本设计用液晶做为显示器,它显示电压值;行列式键盘为按键,其中S3为启动键(显示电压表字形),S10为确认键, S1为进入测试键,进入测试,调滑动变阻器显示不同值电压。该设计主要是利用TLC
23、549的模数转换功能来实现在液晶屏上显示相应的电压值,测量的结果是很准确的,基准误差很小,这样的结果与设计要求完全相符,本设计成功。完成了设计任务。4.2 设计课题的结果在液晶板上运行程序,结果如图4.1与4.2所示。实现功能:电压表工作状态: (1)、显示设计者的相关信息; (2)、运行状态的显示; 图4.1 初始状态 图4.2 运行状态4.3 设计课题的误差分析,该电压表在运行中存在一定的误差,误差产生有三种可能,首先是采用的测压方案是软件测的,测的优势是利用定时器中断来实现的。然后电路板做工不够精细,各元件自身老化电阻过大,所以就产生了一定的误差,当然这个误差是避免不了的,误差分析表格如
24、图4.3所示。4.4 设计体会为期二周的课程设计终于结束了,这次课程设计给了我很多启发,同时也培养了我对陌生问题的分析和解决的能力,在这里非常感谢吴老师,是他强调课程设计不是做实验,而是培养分析问题和解决问题的能力。在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,只有我们去试着做了,才能真正的掌握,学习的理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理理论联系实际,把我们所学
25、的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。 4.5教学建议 首先,在此真的很感谢吴老师,老师兢兢业业,尽职尽责,真的很让我钦佩,我们都很喜欢听老师讲的课,不管是理论课还是实验课,我们都学到了很多知识,在我们遇到困难的时候老师都详细的给我们讲解,直到我们完全懂了,老师辛苦了。 听说老师还要叫我们微机原理,真的很高兴吴老师能继续带领我们一起学习;和老师一起学习我们很快乐,希望吴老师以后把课后习题讲解得更加详细.透测,那样我们就更加容易吸收和学以致用。参考文献1 代启化.基于Proteus的电路设计与仿真J.现代电子技术
26、.2006,第19期.2 刘文秀.单片机应用系统仿真的研究J.现代电子技术.2005, 第286 期.3 曹巧媛.单片机原理及应用M,北京:电子工业出版社,1997.7.4 张洪润.兰清华,单片机应用技术教程M,北京:清华大学出版社,1997.11.5 李广第.单片机基础M,北京航空航天大学出版社,2006.7.6 Dai QiHua.Proteus-based circuit design and simulation J. Modern electronic technology.2006,No.197 Liu WenXiu .Microcontroller Application Sys
27、tem Simulation J. Modern electronic technology.2005,No.2868 Cao QiaoYuan.Microcontroller Theory and Applications M, Beijing: Electronic Industry Press, 1997.7.9 Zhang Hongrun ,Lan Qinghua, MCU application technology tutorial M, Beijing: Tsinghua University Press, 1997.11.10 Li guangdi. Microcontroll
28、er based on M, Beijing Aerospace University Press, 2006.7.附录图2.1 电路原理图 图4.3误差分析序号显示值测量值百分比1 1.86 1.85 5.4%2 1.97 1.96 5.1%3 2.12 2.11 4.7%4 2.54 2.55 4.0%5 3.25 3.23 6.2%6 3.78 3.77 2.7% 7 4.42 4.43 2.3%实物图图2.2 PCB图图2.4 TLC549电路和行列式键盘电路图2.3元件清单DS1302加底座DIP(8)124c02加底座DIP(8)1TLC549加底座DIP(8)1发光二极管1下载口座子1六脚按键开关1大按键(带键帽)1排阻10k4AT89s52加底座DIP(40)112864液晶1电解质电容22uF2瓷片电容33pf4晶振12MHz32.768KHz11精密可调电位器50K2蜂鸣器1三极管90121电阻1k2电阻2001电阻4701电阻4.7K1电阻10K1短路帽8单排插针40p2单排插槽40p1
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。