基于单片机的课程设计数字电子钟.docx
- 文档编号:5480190
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:24
- 大小:329.11KB
基于单片机的课程设计数字电子钟.docx
《基于单片机的课程设计数字电子钟.docx》由会员分享,可在线阅读,更多相关《基于单片机的课程设计数字电子钟.docx(24页珍藏版)》请在冰点文库上搜索。
基于单片机的课程设计数字电子钟
1数字电压表的功能要求说明及设计方案介绍
1.1设计课题任务
(1)该数字电压表能够测量电压范围0—5V,测量精度小数点后两位。
(2)该电压表上电或按键复位后能自动显示系统提示符“P.”,进入测量准备状态。
(3)按测量开始键开始测量,并将测量值显示在显示器上。
(4)按测量结束键则自动返回“P.”状态。
1.2功能要求说明
电路通电或按复位键时,显示“P."字符,再按功能键键1,进入电压测试状态,通过改变电位器的阻值改变模拟输入电压,不断的将模拟电压转换成数字量,通过液晶显示出所测得的模拟电压。
再按功能键键1退出电压测试状态,同时显示字符“P.”。
在测试中测试的电压值必须和实际的电压值不超过0.05V的电压。
在改变电压时,能够准确的侧量出电压的变化值。
1.3数字电压表设计方案
要实现电压的测试有多种方案,其中两种比较简单的且精确度比较高的可以分别采用并行ADC0809芯片和TLC549芯片,其中各芯片都有可取之处。
方案一:
用TLC549串行芯片作模数采样芯片,占用的单片机的I/O口线少,且占用电路面积小,只是编程复杂点。
本次设计采用此方案。
硬件图如图一示。
方案二:
用DAC0809并行芯片作模数采样芯片,需要占用一个I/O口,不过可以循环采样8路模拟通道,占用板子的面积大,编程相对来说简单点。
图1硬件流程图
1.4数字电压表工作原理
数字电压原理:
这里主要是利用TLC549模数串口芯片,TLC549芯片的基准电压脚外接电压为5V,则最大可以测得的电压为5V,TLC549芯片的模拟输入脚通过电位器接5V电压,进行模拟采样,通过调整电位器的值改变模拟量。
输入的模拟量经过TLC549芯片的内部8位开关电容逐次逼近A/D转换器,转换成8为二进制数,其最小的分辨率为0.0196(VREF=0.0196V),D为转化的数字量,再通过
可以求得模拟电压,最后通过液晶就可将所测得电压显示出来。
2数字电压表硬件的介绍
2.1单片机AT89S52功能介绍
AT89S5是51系列单片机的一个型号,它是STC公司生产的。
STC89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可提供许多较复杂系统控制应用场合。
AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本[7]。
STC89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
其引脚图如图2所示。
图2AT89S52引脚分布图
AT89S52具体介绍如下:
①主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
②外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
③控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④可编程输入/输出引脚(32根)
STC89S52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根[8]。
P0口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
2.2LCD12864显示器介绍
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
对l12864的结构分析,引脚功能图如表1:
表1引脚功能图
管脚号
管脚名称
电平
管脚功能描述
1
VSS
0V
电源地
2
VCC
3.0+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5
R/W(SID)
H/L
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
H/L
使能信号
7
DB0
H/L
三态数据线
8
DB1
H/L
三态数据线
9
DB2
H/L
三态数据线
10
DB3
H/L
三态数据线
11
DB4
H/L
三态数据线
12
DB5
H/L
三态数据线
13
DB6
H/L
三态数据线
14
DB7
H/L
三态数据线
15
PSB
H/L
H:
8位或4位并口方式,L:
串口方式(见注释1)
16
NC
-
空脚
17
/RESET
H/L
复位端,低电平有效
18
VOUT
-
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)
20
K
VSS
背光源负端
2.3TLC549的介绍
TLC549引脚的功能说明如表2所示:
表2TLC549管脚图
管脚号
管脚名称
管脚功能描述
1、3脚
REF+、REF-
基准电压正、负端
2脚
ANLOGIN
模拟量串行输入脚
4脚
GND
接地端
5脚
片选脚,低电平有效
6脚
DATAOUT
数字量输出脚
7脚
I/OCLK
输入/输出时钟脚
8脚
VCC
电源脚(+5V)
3硬件电路设计
3.1晶振电路的设计
AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按图3-5所示方式连接。
晶振、电容C2/C3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C2、C3取值范围在5~40pF之间。
根据实际情况,本设计中采用12MHZ做系统的外部晶振[11]。
电容取值为33pF。
图3晶振电路原理图
3.2复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。
在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。
地址锁存信号ALE也为高电平。
根据实际情况选择如图3-4所示的复位电路。
该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。
增加手动复位按键是为了避免死机时无法可靠复位。
当复位按键按下后电容C1通过R5放电。
当电容C1放电结束后,RST端的电位由R1与R2分压比决定。
由于R11< R1的作用在于限制按键按下瞬间电容C1的放电电流,避免产生火花,以保护按键触电。 图4复位电路原理图 3.3显示电路 为了提高数字电压表的密码显示效果能力。 本设计的显示部分由液晶显示器LCD12864取代普通的数码管来完成。 只有按下键盘上的测量键后,显示器才处于测量状态。 同理只有按下关闭测量键后显示器才处于关闭状态。 12864LCD主要技术参数: 工作电流: 2.0mA(5.0V) 模块最佳工作电压: 5.0V 12864型LCD基本操作程序如下表所示: 表3LCD1602基本操作程序 读状态 输入 RS=L,R/W=H,E=H 输出 D0—D7=状态字 写指令 输入 RS=L,R/W=L,D0—D7=指令码,E=高脉冲 输出 无 读数据 输入 RS=H,R/W=H,E=H 输出 D0—D7=数据 写数据 输入 RS=H,R/W=L,D0—D7=数据,E=高脉冲 输出 无 其显示部分引脚接口如图5所示: 图5显示电路原理图 4软件设计 4.1判键子函数 对于独立式键盘判键,首先看有键按下不,如果有键按下则延时一会儿,在判断是否真的有键按下,如果确实有键按下,在判键释放,最后执行键功能程序。 判键子函数的流程框图如图6所示: 图6判键子程序流程图 4.2显示子程序 对于12864带汉字库液晶,先对液晶进行初始化,令RESET脚为低电平,延时1200 ,再将RESET复位脚拉为高电平,空操作1次,令PSB=1设置液晶数据口为并口方式。 在对液晶进行写命令,先写0x34表示写扩展指令,接着写基本指令、清除显示、开反白显示、地址加1。 最后对液晶进行清屏;在调用显示函数,先进行写地址,在进行写数据就可以显示了所写的数据了。 显示子函数的流程框图如图7所示: 图7显示子程序流程图 4.3电压转换程序 TLC549串口芯片的话,先选中该芯片将该芯片的cs脚置为低电平,在进行读数据口的电平,将CLK先拉高再拉低,在CLK下降沿的时候,将数据移出,这样不断的循环8次。 电压转换子函数的流程图如图8所示: 图8电压转换程序流程图 4.4总程序流程框图 整体程序的流程框图如图9所示: 图9整体程序的流程框图 5设计体会 本次设计中采用串行芯片做数字电压表,其中串行芯片可节省单片机的I/O口,单片机总共有32个I/O口其中键盘占用了P1口,液晶显示就占用了P0和P2口,P3口作为TLC549芯片的三根控制线,虽然采用串行芯片在编程方面变得有点复杂,但它占用的地方比较小。 在串行芯片使用时,我们必须重点了解串行芯片的时序图,懂得串行芯片的数据传送方式。 当时我认为该芯片也就只有三个编程脚,其中分别为CS、DATAOUT、CLK三个脚编程并不是那么简单,串行芯片需要采集的数据需要按照时序,一个一个得发送到单片机,经过计算在在液晶上显示出来,当时我采用的时序和芯片的时序不同,调试了好久都没调试出来,后来参照芯片资料,后改过来但还是发现问题,虽然采集到数据但是液晶显示的数字和实际的测量值很大区别,我通过调试程序后发现我将变量的类型定义错了,导致了数据发生错误,我将无符号整型变量定义为无符号字符型变量,而变量的实际值远远超过了那个值 使得单片机计算错误,调整电压的大小液晶总是显示同一个数,在定义变量时要考虑变量的范围否则程序会出错。 通过本次单片机的课程设计,我从汇编到单片机C语言上体会到了它们的总体思路还是一样,但是C语言用更加灵活,易懂。 在本次设计中我首先通过所学的protues仿真软件仿真,仿真通过后在将显示程序修改下载到单片机中,这样的可以减少应为硬件引起的问题。 总之通过这次的课程设计,我们自己可以通过编程更加了解到了单片机的内部资源,懂得了如何使用单片机的编程 参考文献 [1]李广弟.单片机基础[M]北京: 北京航空航天大学出版社,2007.6 [2]51单片机学习网论坛[DB]. [3]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京: 北京航空航天大学出版社,1999 [4]童诗白,华成英.模拟电子技术基础[M]高等教育出版社,2000 [5]阎石.数字电子技术基础[第四版][M].高等教育出版社.1998.11 致谢 王老师: 您好! 在上学期的单片机基础课程中,你教会我们如何学单片机,单片机的内部结构,汇编指令,单片机扩展编址。 在这次课程设计中,这样让我们严格的要求我们,培养我们认真,规范,严谨的作风,相信严师出高徒我们在你的带领下,我们会更进一步。 在此我对你表示真诚的感谢! 祝您工作顺利! 附录一 电路原理图 附录二 电路PCB图 附录三 程序清单 //****************************// //***时间;2012.10.12********// #include #include #defineucharunsignedchar uchardata0,command; sbitrs=P2^0;//1时为数据0时为命令 sbitrw=P2^1;//0时为写1时为读 sbite=P2^2;//液晶使能端 sbitpsb=P2^3;//1时为并口方式0时为串口方式 sbitret=P2^5;//复位低电平有效 uchar*pp; voiddelay1(ucharms1);//液晶延时函数 voidwr_command(ucharcommand);// voidwr_data(uchardata0);//写命令函数 voiddisplay(uchar*p);//显示函数1 uchartt,ttt;// sbitK=P1^0;//按键1 sbitdata01=P3^1;//TLC549芯片的数据口 sbitcs=P3^3;//TLC549芯片的片选脚 sbitclk=P3^0;//TLC549芯片的时钟信号脚 voidchuli(ucharresult);//数值处理函数 ucharcodetable[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20};//液晶的1.2.3.4.5.6.....代码 uchardispbuf[]={10,10,10,10,10,};//缓冲区 voiddelay(uchart);// inta,c,d,b;//b,c,d为显示的电压数字 ucharj;//为for循环变量 ucharz,v;//v按键次数变量 doublef; floataa; voiddisplay1()//显示电压值 { wr_command(0x93); wr_data(table[dispbuf[0]]);//写个位 wr_data(0x2e);//写小数点 wr_data(table[dispbuf[2]]);//写分位 wr_data(table[dispbuf[3]]);//写十分位 wr_data(0x56);//写V }//电压测试函数 uchartlc()// { uchartmp; tmp=0; cs=0; for(j=0;j<8;j++) { delay(100); tmp=tmp<<1;//tmp=tmp<<1; if(data01) {tmp++;} clk=1; delay(100); clk=0; } cs=1; return(tmp+1); } voidlcd_int(void)//液晶初始化函数 { ret=0; delay1(10); ret=1; _nop_(); psb=1; _nop_(); } voidlcd_set()//液晶功能设置 { wr_command(0x34);//写扩展指令 wr_command(0x30);//写基本指令 wr_command(0x01);//地址清理 wr_command(0x0c); wr_command(0x06); } voidclear_lcd()//液晶清屏函数 { wr_command(0x01); wr_command(0x30); } voidwr_command(ucharcommand)//液晶写命令函数 { delay1(100); rs=0; rw=0; P0=command; e=1; _nop_(); _nop_(); e=0; } voidwr_data(uchardata0)//液晶写数据函数 { delay1(100); rs=1; rw=0; P0=data0; e=1; _nop_(); _nop_(); e=0; } voiddisplay(uchar*p)//液晶显示函数1 { command=0x80; wr_command(command); while(*p) wr_data(*p++);//改程序也可在括号内直接写字符 } voiddelay1(ucharms1)//液晶延时函数 { uchari; while(ms1--) { for(i=0;i<120;i--); } } voiddelay(uchart)//电压测量延时函数 { while(--t); } voidchuli(ucharresult)//电压数值处理函数 { aa=(0.0196078431*result); a=aa*100; b=a/100; c=a%100/10; d=a%10; dispbuf[0]=b; dispbuf[2]=c; dispbuf[3]=d; } voidmain() { lcd_int(); lcd_set(); clear_lcd(); while (1) { display("P.按键P1.0测电压"); if(K==0) { delay1(5); if(K==0) { v++; while(K==0); if(v==3)v=0; } } switch(v) { case1: z=tlc(); chuli(z); display1();break; case2: clear_lcd();v=0;break; } } } 附录四 元器件清单 名称 规格 数量(每人) 发光二极管 1 下载口座子 1 六脚按键开关 1 大按键(带键帽) 1 排阻 10k 4 AT89s52加底座 DIP(40) 1 12864液晶 1 电解质电容 22uF 2 瓷片电容 33pf 4 晶振 12MHz 1 精密可调电位器 50K 2 蜂鸣器 1 三极管 9012 1 电阻 1k 2 电阻 200 1 电阻 470 1 电阻 4.7K 1 电阻 10K 1 短路帽 8 单排插针 40p 2 单排插槽 40p 1 点阵 8*8 1 电池 3.6v60mA 1 TLC549 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 课程设计 数字 电子钟
![提示](https://static.bingdoc.com/images/bang_tan.gif)