基于单片机数字时钟设计毕业设计.docx
- 文档编号:6843740
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:22
- 大小:262.62KB
基于单片机数字时钟设计毕业设计.docx
《基于单片机数字时钟设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机数字时钟设计毕业设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于单片机数字时钟设计毕业设计
摘要
本设计以数字集成电路技术为基础、单片机技术为核心。
软件设计模块化结构、C语言编程。
系统通过带字库的LCD12864显示数据,通过4*4矩阵键盘控制显示文字、公历日期(年、月、日、星期)、时间(时、分、秒)文字反白、自定义字符、图片显示,可以通过键盘调整时间、日期,温度,同时按下键盘时,七段数码管显示相应键位的键位标识。
在内容安排上首先描述系统硬件工作原理,着重介绍了各硬件接口技术和各个接口模块的功能;其次,详细阐述了程序的各个模块和实现过程。
关键词
单片机;数字温度日历表设计、数字时钟
Abstract
Thedesignisbasedondigitalintegratedcircuit.microcontrollertechnologyisthecoreofthesystem,Thesoftwaredesignusesmodulestructure,Cprogramminglanguage.SystembytakingthefontsLCD12864displaydata,through4*4matrixkeyboardcontroldisplaystext,calendardates(year,month,day,week),time(hour,minutesandseconds),wordagainstwhite,customizecharacters,photos.Canviakeyboardadjusttime,date,andpressthekeyboard,7segmentdigitalpipedisplaycorrespondingcryogenicallykeyslogo.Firstthearrangementofthecontentofthesystemhardwareprincipleareintroduced,andthehardwareinterfacetechnologyandthefunctionofeachinterfacemodule,Secondly,thispaperexpoundstheprogrammodulesandrealizationprocess.
Keyword
MCU;Keyboarddisplaythesimulationsystem;LCD12864;Theclock
目录
1引言····························································4
2设计要求························································4
2.1基本要求·····················································4
2.2发挥部分·····················································4
3方案设计与论证···················································4
3.1控制部分方案论证·············································4
3.2显示部分方案论证·············································5
4系统框图及工作原理···············································6
4.1系统框图·····················································6
4.2工作原理·····················································6
4.2.1硬件工作原理··············································6
4.2.2软件工作原理··············································6
5硬件原理分析及设计···············································7
5.1单片机时钟电路···············································7
5.2单片机复位电路···············································7
5.3键盘电路·····················································8
5.4显示电路·····················································9
5.4.1LCD显示电路··············································9
5.4.2七段数码管显示电路········································9
5.5整体电路图···················································10
5.5系统硬件设计所需的元件·······································11
6软件设计·························································12
6.1软件总体设计及框图···········································12
6.2软件重要子程序设计及框图·····································12
6.2.1显示部分··················································12
6.2.2键盘扫描部分·············································14
6.2.3时钟部分·················································14
6.2.4延时部分·················································16
7硬件安装制作····················································17
7.1PCB板制作···················································17
7.2元件焊接···················································17
8电路调试························································18
8.1硬件调试····················································18
8.2软件调试·····················································18
9测试结果·························································18
10结论····························································19
致谢······························································20
参考文献··························································21
附录······························································22
程序······························································24
1引言
仪器仪表的键盘显示系统,是实现通过键盘的控制,使LCD屏幕有相应的显示,广泛用于各个领域,如电脑、家电、数字仪器等,成为人们直观了解和控制仪器、设备的运行状态的重要依据,给人们的生活带了方便,成为现代人们生活、工作的必需品。
数字化显示系统告别了以前老式的监控和计算仪器、设置状态方式,给人们带来了极大的方便。
本设计是仪器仪表的控制显示模拟系统,所有的仪器仪表的控制显示系统都是以此为基础而扩展的。
因此,研究仪器仪表的控制显示系统及扩大其应用有着非常现实的意义。
本设计就是仪器仪表的控制显示系统简单的模拟和扩展应用。
2设计要求
2.1基本要求
1)开机LCD液晶屏幕显示“09级电子信息工程XXXX毕业设计”信息。
2)设计4X4矩阵键盘,分别对应键码“0-F”。
3)按下任意一个按键,LCD液晶屏幕显示相应按键的信息(不同按键的显示内容可以自行设计)。
2.2发挥部分
1)LCD液晶屏幕增加装饰图案。
2)增加一个LED数码管同步显示相应键码。
3)增加一个LED点阵同步显示相应键码。
3方案设计与论证
3.1控制部分方案论证
方案一:
可采用ALTERA公司的FLEX10K系列PLD器件。
设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。
但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。
从成本上来讲,用可编程逻辑器件来设计也没有什么优势,而以我们目前的条件在硬件和软件也无法实现本设计的各种要求。
方案二:
凌阳16位单片机有丰富的中断源和时基。
它的准确度相当高,并且C语言的编程环境也很方便来实现一些递归调用。
I/O口功能也比较强大,方便使用。
用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。
这些都方便对设计进行扩展,使设计更加完善。
成本也相对低一些。
但是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高,而且就需要完成这个 仪器仪表的键盘显示模拟系统不太复杂的设计可以不必用凌阳16位单片机来完成。
方案三:
AT89S52是8位单片机,提供的的四组8个I/O口能够实现既定功能,成本也不高。
综合考虑最后选择用AT89S52单片机来作为中心控制器件。
3.2显示部分方案论证
方案一:
使用LCD1602成本低,程序控制简单,但它只能显示16X2个半宽字型符,不能显示汉字,比较单调。
方案二:
带字库的由ST7920控制的LCD12864硬件上提供8位,4位并行接口及串行接口供选择,64×16位字符显示RAM(DDRAM最多16字符×4行,LCD显示范围16×2行),2M位中文字型ROM(CGROM),总共提供8192个中文字型(16×16点阵),16K位半宽字型ROM(HCGROM),总共提供126个西文字型(16×8点阵),64×16位字符产生RAM(CGRAM)。
在软件上提供文字与图形混合显示、画面清除、光标归位、显示开/关、光标显示/隐藏、显示字体闪烁、光标移位功能、显示移位、垂直画面旋转、反白显示、休眠模式的功能,相对于LCD1602来说功能丰富,而且已内建有GB码简体中文字型库,方便编程。
综合以上方案,决定采用LCD12864(除非特殊说明,以下都简称LCD)作为显示器件。
4系统框图及工作原理
4.1系统框图
图4-1系统框图
4.2工作原理
4.2.1硬件工作原理
硬件控制电路主要用了4*4矩阵键盘、AT89S52芯片处理器、LCD和七段数码管。
由AT89S52处理器处理从4*4键盘发出的指令,通过LCD和七段数码管显示出相应按键的内容。
4.2.2软件工作原理
软件控制程序主要有主控程序、时间程序、LCD控制程序、时间及日期显示程序、键盘扫描程序等组成。
主控程序中对整个程序进行控制,进行了时间和LCD初始化、LCD和数码管显示等控制。
LCD显示程序是整个显示部分中的重要部分,包括写入命令、初始化、写入数据、数据显示、自定义GDRAM显示、绘图显示、反白显示等。
当LCD的RS=RW=0,同时EN由1变0时,可以对LCD写入基本指令和扩充指令;当RS=1,RW=0,同时EN由1变0时,可以对LCD写入数据。
对LCD端口写入不同的命令可以写入和显示不同的数据,具体命令请参考LCD12864和数据手册。
LCD时间控制程序是时间程序重要的部分,时间控制程序体现了年、月、日、时、分、秒的计算方法。
此设计采用AT89S52自带的T0计时器进行计时,中断程序每隔50ms中断一次当作一个计数,每中断一次则计数加1,当计数20次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。
先给出一般年份的每月天数。
如果是闰年,第2月天数为29天,非闰年则有28天。
在我们的这个设计中只设有100年的范围,判断是否闰年就只需要用该年份除以4来判断就行了。
键盘扫描程序是整个设计的输入控制程序,4*4键盘占用单片机的8个I/O口。
本设计的键盘扫描程序采用行列反转扫描法读取按键键值。
单片机先让键盘行线输出全为0,然后读入列线值,再检测有无按键按下,去抖,再读入列线值,输出当前列线值,读入行线值,最后组合行、列线值,得到键盘的码值供调用。
5硬件原理分析及设计
5.1单片机时钟电路
内部时钟电路如图所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。
定时元件通常石英晶体和电容组成的并联谐振回路,晶体振荡器选择12MHZ,电容采用30PF。
图5-1时钟电路
5.2单片机复位电路
影响单片机系统运行稳定性的因素可大体分为外因和内因两部分:
(1)外因
射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰;
电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。
(2)内因
振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。
复位电路的可靠性设计
复位是单片机的初始化操作。
单片机启动运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。
因而,复位是一个很重要的操作方式。
但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
如图5-2所示。
图5-2复位电路
5.3键盘电路
4*4键盘电路由4*4=16个按键组成,其中4列经过4个10K电阻接入VCC上拉,接入单片机的P3口的高4位口,4行直接接入单片机低4位,当有按键按下时,由单片机控制8个I/O口读取出当前键值。
图5-3键盘电路
5.4显示电路
5.4.1LCD显示电路
LCD12864一共有20个引脚,其中4-15、17脚接入单片机的P0全部I/O口和P2的三个I/O口,是LCD与单片机通讯的桥梁。
16号脚是空脚,1和20脚接地,2和19脚接VCC,其中3、18、19三个脚接可调电位器和电阻,组成调节LCD对比度电路。
图4.4.1LCD显示电路
如图5-4所示。
5.4.2七段数码管显示电路
采用的是共阳数码管,它的8个脚接入P1全部I/O口,PNP三极管的发射极接VCC,集电极经过一个电阻限流接入数码管的公共端,基极接单片机的P2.0口,由单片机给一个基极电流使三极管三极管导通,驱动数码管显示。
如图5-5所示。
图5-4LCD显示电路
图4.4.2数码管显示电路
图5-5数码管显示电路
5.5整体电路图
根据以上各模块的功能互相连接成为此设计的整体电路,如下图:
图5-6整体电路图
5.6系统硬件设计所需的元件
表5-1元件列表
元件名称
数量(个)
元件名称
数量(个)
LCD12864
1
12M晶振
1
AT89S52芯片
1
30pF瓷片电容
2
七段数码管
1
10uF电解电容
1
1K电阻
5
按键开关
17
2K电阻
1
发光二极管
2
51K电阻
1
排针
1(排)
10K电阻
4
插针
1(排)
10K电位器
1
自锁开关
1
103*8排阻
1
5V电源
1
6软件设计
此设计名为仪器仪表的键盘显示模拟系统,顾名思义软件占很大比例。
整个设计硬件比较简单,主要就是程序的写法,而软件的调试也是此设计的重点和难点。
整个软件结构分为主控程序、显示部分程序、键盘扫描部分程序、时钟部分程序和延时程序。
6.1软件总体设计及框图
图6-1软件设计总体框图
开机后,主控程序先让单片机给P2.0一个低电平,开启数码管显示,然后初始化LCD包括设置基本指令集、设置光标、设置显示模式等,接下来是时钟的初始化,包括开启定时和中断、时间的走时(秒、分、时、日、月、年、星期),最后就显示开机画面并开始扫描键盘,若有按键按下则LCD和数码管显示相应的内容,8号键作为设置日期和时间的阀门,按下第一次时进入调整日期状态,第二次是调整时间,第三次调整温度,第四次返回。
6.2软件重要子程序设计及框图
主控程序是建立在各子程序的基础上,各子程序写好后,由主程序调用。
6.2.1显示部分
显示部分的大体框图如下:
图6-2显示部分流程图
为了区别调整时间和日期的按键与其他显示内容冲突,在这里给了8号键一个变量key_flag,未按下8号键时key_flag=0,程序执行图6-2框图所示的内容,当按下8号第一次时key_flag=1进入调整日期状态,当按下8号键第二次时key_flag=2,进入调整时间状态,当按下第三次时显示开机画面并让key_flag=0执行图6-2所示内容。
显示部分程序涉及到LCD的初始化、写入命令和数据,写命令和数据的通讯方式已经在上文提到,这里不再阐述。
此设计用到的LCD是带有字库的,要让LCD显示中文只需要往LCD写入DDRAM地址,再写入中文。
DDRAM的0x80~0x87,0x90~0x97,0x88~0x8f,0x98~0x9f分别对应LCD的第一、二、三、四行,一行可以写入8个中文字符对应每行的8个地址。
有的中文在字符没有,LCD显示就会是乱码,这时需要查询该字的16进制编码,再写入LCD。
要让LCD显示图片,需要给LCD写入命令0x36,以开启绘图模式。
此设计的图片取模方式是逐行自上而下显示,先写上半屏再写下半屏,屏幕X/Y轴的起点为0x80,写完上半屏后令X=0X88接着写下半屏,本设计用到的三张图片都是自己画的。
6号按键用到的自定义字符是通过取模写入CGRAM,通过命令调取显示。
本设计还用到反白显示、文字循环左移、文字向上滚动。
反白显示是LCD的扩充指令集之一,只要写入0x04可以实现第一、三行显示,写入0x05实现第二、第四行反白显示,ST7920控制器的128×64点阵液晶其实原理上等同256×32点阵,第三行对应的DDRAM地址紧接第一行;第四行对应的DDRAM地址紧接第二行。
因此在使用行反白功能时,第一行反白,第三行必然反白。
第二行反白,第四行必然反白。
文字循环左移只需要写入扩充指令0x18就可以实现。
而文字向上滚动的实现,本设计定义了8个变量aa,bb,cc,dd,j,k,l,m,其中aa,bb,cc,dd对应LCD的四行DDRAM地址0x80,0x90,0x88,0x98,j,k,l,m四个变量用来实现DDRAM地址的变换,变换方法为:
j=bb,bb=aa,k=cc,cc=j,l=dd,dd=k,m=aa,aa=l,运行第一次后,第一行变为第二行的内容,第二行变为第三行的内容,第三行变为第四行的内容,而第四行则变为第一行的内容,如此循环就实现文字向上滚动的效果。
6.2.2键盘扫描部分
本设计扫描键盘方式采用行列反转扫描法读取按键编码。
单片机先让键盘行线输出全为0,然后读入列线值,再检测有无按键按下,去抖,再读入列线值,输出当前列线值,读入行线值,最后组合行、列线值,得到键盘的码值供调用,代码如图10所示。
当有按键按下单片机读取出键值后,给主程序、调整时间和日期函数调用,同时送出编码给P1,让数码管显示当前按键对应的16进制代码0-f。
图6-3键盘扫描程序
6.2.3时钟部分
本设计时钟走时部分采用单片机内置的T0定时器,AT89S52单片机的定时器由两个16位定时器T0、T1、方式寄存器TMOD和定时器控制器TCON组成。
其中T0、T1又可分成独立的8位计数器即TH0、TL0和TH1、TL1,用于存储定时器、计数器的初值;TMOD为方式寄存器,主要用来设置定时器/计数器和方式;TCON为控制寄存器,用来控制定时器/计数器的启动与停止。
TMOD是一个专用寄存器,用来控制定时器T0和T1的工作方式用操作模式,其中TMOD的高4位用于对T1的控制,低4位用于对T0的控制,各位定义及格式如图11所示。
图6-4工作模式控制寄存器TMOD示意图
其中GATE为门控制,用来控制定时器启动方式。
当GATE=0时,定时器由软件控制位TR0或TR1来控制启动。
GATE=1时,定时器由外中断请求信号来控制启动。
为定时或计数方式选择位,当为0时为定时工作方式,为1时计数工作方式。
M1、M0为工作模式选择位,两个工作模式选择位可以形成4种编码,对应4种工作模式:
M1=M0=0时为模式0;M1=0,M0=1时为模式1;M1=1,M0=0时为模式2;M1=M0=0时为模式3。
此设计用定时器0,工作模式1,所以对应TMOD=0x01。
同时定时50ms,对应的TH0=(65536-50000)/10,TL0=(65536-50000)%10。
TCON既参与中断控制,又参与定时器/计数器控制,本设计只用到它的定时器/计数器功能。
TCON各位定义如图12所示,其中D0-D3与外部中断有关,此设计未用到。
图6-5定时器控制寄存器TCON示意图
TR0为定时器/计数器T0的运行控制位,为0时停止定时器/T0计数器T0;为1时启动定时器/计数器T0。
TR1为定时器/计数器T1的运行控制位,功能与T0相同。
TF0、TF1本设计用不到,不做说明。
本设计只用到T0,当设置好TMOD后令TR0=1就启动T0定时器/计数器开始工作。
设置好TMOD和TCON后,每过50ms定时器就会溢出产生中断,同时令变量deda另1,当deda加到20后一秒钟就到了,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 时钟 设计 毕业设计