版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编号: 基础工程设计题 目: 基于单片机设计的可调电子时钟 院 (系): 信息与通信学院 专 业: 微电子科学与工程 学生姓名: 卢 镜 学 号: 1300240119 指导教师: 宋保林 2016 年 1 月 6 日 摘 要本人设计的是一个以单片机STC89C52为核心部件的电子钟,结合LCD液晶显示屏。可以在液晶屏上显示时间和字符,并可任意调整时间。本来想用数码管来显示,但是想到数码管仅能显示数字,所以采用了液晶显示屏。它不仅能显示数字,还能显示字符。它的计时周期为24小时,显满刻度为“23时59分59秒”。文中详细论述了可调电子钟设计原理、使用的各芯片的介绍,阐明了本实例所使用的设计方案
2、、详细的电路图以及程序。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。本系统以单片机的C语言进行软件设计,并着重介绍了所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程,并且还进行了软件仿真调试和硬件调试。关键词:单片机STC89C52 ;可调电子钟;液晶显示;仿真目 录摘要1前言3第一章 设计说明41.1 设计目的和内容41.2 设计方案选择51.3 设计总体框图5第二章 系统主要硬件设计52.1 单片机主控模块52.1.1 STC89C52芯片简介52.1.2 封装和引脚说明52.2 液晶显示模块72.2.1 LCD16
3、02模块简介72.2.2 LCD1602的控制指令及操作流程82.3时钟电路及按键电路92.3.1时钟电路92.3.2按键电路10第三章 系统软件设计103.1 系统程序流程图103.2系统程序设计电子时钟清单11第四章 系统调试124.1软件调试124.2源代码144.3硬件调试204.3.1原理图204.3.2 PCB图204.3.3用跳线修改电路21结语21谢辞22参考文献23附录24附录25前 言电子时钟是现代电子技术在时钟领域的具体实现方式。时钟,自从它发明的那天起,就成为我们的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。这就要求人们不
4、断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子时钟采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子时钟用集成电路计时时,译码代替机械式传动,用LCD显示器代替指针显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时、分、秒的校对。电子时钟广泛应用于个人家庭,车站,码头办公室等公共场所,成为人们常生活中不可缺少的必需品,给人们的生活带来极大的方便 。随着社会不断的发展,科学技术不断的进步,单片机的问世和飞速发展掀起了计算机工程应用的一场新革命,使计算机技术冲破了实验室和机房的界限,广泛地应用于工业控制系统、数据采
5、集系统、自动测试系统、智能仪表和接口以及各类功能模块等广阔的领域。单片机应用系统已经成为实现许多控制系统的常规性工具。我们说,单片机开辟了计算机应用的一个新时代是并不过分的。单片机的发展历史虽然只有短短20年,但由于计算机科学和微电子集成技术的飞速发展,单片机自身也在不断地向更高层次和更大规模发展。世界各大半导体厂商纷至沓来争先挤入这一市场,激烈的市场竞争也促进了单片机迅速更新换代,带来了它们更为广泛的应用。由于单片机应用系统的高可靠性,硬、软件的高利用系数,优异的性能价格比,使它的应用范围由开始传统的过程控制,逐步进入数值处理、数字信号处理以及图像处理等高技术领域。我们在本次的设计中广泛用到
6、了单片机的应用系统。本文提出了一种基于STC89C52单片机的可调电子钟设计方案,本方案以STC89C52单片机作为主控核心,按键、LCD液晶显示等模块组成硬件系统。在硬件系统中设有独立按键和LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此电子钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。第1章 设计说明 1.1 设计目的和内容 本系统开机时液晶屏显示00:O0:O0开始计时,用三个电位按键来实现对电子时钟的调试工作,当按第一下总控键时进入时钟的调整状态,有两个电位按键分别来调整时
7、钟的时、分、秒加一减一,它的计时周期为24小时,显满刻度为“23时59分59秒”。本课题所研究的电子钟是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:(1)选用电子钟芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。(2)根据选用的芯片设计外围电路。(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。(4)根据设计的硬件电路,编写控制STC89C52芯片的单片机程序。(5)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。(6)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。(7)软 件设计时必
8、须要有完善的思路,要做到程序简单,调试方便。1.2 设计方案选择单片机电子钟的制作有多种方法,可供选择的器件和运用的技术也有很多种。所以,系统的总体设计方案应在满足系统功能的前提下,充分考虑系统使用的环境,所选的结构要简单使用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。单片机模块的选择:由于STC89C52单片机片内有8K字节的在线编程Flash存储器,可多次擦写,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。所以选用STC89C52单片机作为可调电子钟芯片的控制单片机。时钟模块的选择:直接采用单片机定时计数器提供秒信号,使用程序实现时、
9、分、秒计数。采用此种方案减少芯片的使用,节约成本。显示模块的选择:数码管亮度高、体积小、重量轻,但其显示信息简单、有限,需要驱动,使用复杂,在本题目中应用受到很大的限制。液晶显示功耗低,轻便防震。采用液晶显示界面友好清晰,操作方便,显示信息丰富。 按键模块的选择:为了使系统电路更简单,按键只设计了3个,分别是 “设置” 、“+” 、“-” ,用来设置及调整系统的时钟。1.3 设计总体框图数字电子钟设计框图如图1-1所示:显示电路时钟电路STC89C51AT按键电路图1-1 系统总统框图第2章 系统主要硬件设计2. 单片机主控模块2.1.1 STC89C52芯片简介单片机是微型机的一个主要分支,
10、在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。8KB Flash ROM,可以擦除1000次以上,数据保存10年。2.1.2 封装和引脚说明STC89C52单片机为双列直插式(DIP)芯片,是最常用的有总线扩展引脚的DIP40封装。如图2-1所示。(1) .电源及时钟引脚Vcc:接入电源Vss:接地XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接晶振和微调电容;当使用外部时钟时,用于接外
11、部时钟脉冲信号。(2).控制线引脚RST:RST是复位信号输入端。ALE/PROG:地址锁存允许信号输入端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是作为编程脉冲输入端。PSEN:程序存储器允许输出端。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。EA/Vpp:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序
12、存储器指令。(3) .并行I/O引脚P0.0P0.7:P0口为8位双向I/O口或地位地址/数据总线复用引脚。P1.0P1.7:P1口为8位双向I/O口。P2.0P2.7:P2口为8位双向I/O口或高位地址总线引脚。P3.0P3.7:P3口为8位双向I/O口或第二功能引脚。P3口也可以作为一些特殊功能口,如表1所示。如图2-1是单片机的功能引脚。图2-1 是STC89C52单片机引脚封装口管脚备选功能P3.0 RXD串行输入口P3.1 TXD串行输出口P3.2 /INT0外部中断0P3.3 /INT1外部中断1P3.4 T0记时器0外部输入P3.5 T1记时器1外部输入P3.6 /WR外部数据存
13、储器写选通P3.7 /RD外部数据存储器读选通表1 P3特殊功能口2.2 液晶显示模块液晶显示模块由于具有低功耗、 寿命长、 体积小、 显示内容丰富,价格低、 接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。 字符型液晶显示模块是一类专用于显示字母、 数字、 符号等点阵式液晶显示模块。 针对目前电子钟常采用LED作为显示电路,造成硬件电路复杂、 功耗高、 产品体积庞大等特点;本系统设计采用字符型液晶显示模块1602作为显示器件,这样不仅简化了电路的硬件设计,而且极大地提高了系统的可靠性。2.2.1 LCD1602模块简介LCD1602可以显示2行16个字符,具有8位数据总线D0-
14、D7,和RS、R/W、E三个控制端口,工作电压为5V,并且带有字符对比度调节和背光设置。引脚介绍如下:第1脚:VSS为电源地,接GND。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10欧的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写控制信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入
15、数据。 第6脚:E端为使能信号端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:BLA背光电源正极(+5V)输入引脚。 第16脚:BLK背光电源负极,接GND。2.2.2 LCD1602的控制指令及操作流程1602液晶模块内部的控制器共有11条控制指令,。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平),控制命令如表2所示。表2 11条控制指令指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低
16、电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时4位总线,低电平为8位总线 N:低电平为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光
17、标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据 LCD1602可以在8根I/O线上读写数据,因此LCD的控制器接口有严格的通信协议来保证读写数据传输的正确性和完整性。1602字符LCD基本操作有以下四种:1.读状态:输入信号:RS=0,RW=1,E=1 输出信号:D0D7=状态字2.读数据:输入信号:RS=1,RW=1,E=1 输出信号:D0D7=数据3.写指令:输入信号:RS=0,RW=0,E=1->0 输出信号:D0D7=指令4.写数据:输入信号:RS=1,RW=0,E=1->
18、;0 输出信号:D0D7=数据2.3时钟电路及按键电路2.3.1时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。如图2-2为内部时钟方式的电路图。图2-2 内部时钟方式本文用的是内部时钟方式(如图2-4所示)。内部时钟方式只要在单片机的XTAL1和XTAL2引脚外接即可。图中电容C1和C2的作用是稳定频率和快速起振,电容值为530pF,典型值为30pF。晶振CYS的振荡频率要小于12MHz,典型值为
19、6MHz,12MHz或11.0592MHz。实际应用中一般采用外接晶振的内接电路。2.3.2按键电路 按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。它是整个系统中最简单的部分,根据功能要求,本系统共需三
20、个按键:功能移位键、功能加键、功能减键(如图2-3所示)。 P1.0口表示功能移位键,按键选择要调整的时、分秒。 P1.1口表示数字“+“键,按一下则对应的数字加1。 P1.2口表示数字“-”键,按一下则对应的数字减1。图2-3 三个按键的电路图第三章 系统软件设计3.1 系统程序流程图 用51单片机(STC89C52)通过程序控制来产生时间信号,利用P0端口使之显示于LCD1602液晶显示屏上,程序开始进行标识位初始化,对时钟单元进行初始化,开始读取时间信息,通过读取程序,液晶显示器显示时间,当有按键按下时进行键值的处理,没有按键按下时则程序重新读取时间信息。系统程序流程图如图3-1所示。图
21、3-1 系统程序流程图3.2程序设计电子时钟清单:设计电路所用的原件如图3-2所示。图3-2 原件清单第四章 系统调试 一般调试都是在编写代码完之后用来验证电路的准确与否,通过反复修改程序代码来来使电路尽可能完善,但是单单依靠软件来仿真并不能保证电路能实现想要的功能,因为软件仿真并不像现实的一样。所以还要依靠硬件电路来实现,不断修改。4.1软件调试部分使用ISIS和uVision4软件来仿真,ISIS软件是用来仿真电路图,而uVision4用来编译代码和编写代码的。调试软件:用软件来调试查找编程上的错误,可以比较好的修改电路和程序,使得电路能尽可能完善和正确。如图4-1为电路连接图在Prote
22、us的接法。图4-1 Proteus电路原理图而uVision4用来检查语法和编译上的错误,用起来比较方便,它是和Proteus软件相结合的,只有编译没有问题、正确后才能导入Proteus中得到正确的结果。如图4-2是编译检查正确后的结果。图4-2 Uvision4编写程序其次,用Uvision4编写程序,编译无误后生成HEX文件,通过在网上买的最小系统来烧录程序,最小系统烧录程序很简单,只需插到电脑的USB接口,在网上下载烧录STC系列的单片机的烧录软件,找到生成HEX文件,即可下载。如图4-3为Proteus仿真出来后正确的结果。图4-3 Proteus仿真结果4.2源代码:#includ
23、e<reg52.h>#define uchar unsigned char #define uint unsigned intsbit lcdrs=P20; /液晶数据命令选择端sbit lcswr=P21;/设置写入端口sbit lcden=P22; /液晶使能端sbit s1=P10;sbit s2=P11;sbit s3=P12;uchar count,s1num;char miao,shi,fen;uchar code table="1300240119 time" /第一行写入uchar code table1=" 00:00:00"
24、;/第二行写入void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)lcdrs=0;lcswr=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()uchar num; lcden=0;write_com(0x38); /设置16*2显示,5*7
25、点阵,8位数据接口write_com(0x0c);/设置开显示,不显示光标write_com(0x06); /写一个字符后的地址指针加1write_com(0x01); /显示清零,数据指针清零write_com(0x80);for(num=0;num<15;num+)write_date(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num<12;num+)write_date(table1num);delay(5);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;E
26、A=1;ET0=1;TR0=1;void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void keyscan()rd=0;if(s1=0)delay(5);if(s1=0)s1num+;while(!s1);if(s1num=1)TR0=0;write_com(0x80+0x40+10);write_com(0x0f);if(s1num=2)write_com(0x80+0
27、x40+7);if(s1num=3)write_com(0x80+0x40+4);if(s1num=4)s1num=0;write_com(0x0c);TR0=1;if(s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);if(s1num=1)miao+;if(miao=60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen+;if(fen=60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);if(s1num=3)shi+;if(s
28、hi=24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);if(s3=0)delay(5);if(s3=0)while(!s3);if(s1num=1)miao-;if(miao=-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen-;if(fen=-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);if(s1num=3)shi-;if(shi=-1)shi=24;write_sfm(4,shi);write_com(
29、0x80+0x40+4);void main()init();while(1)keyscan();void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=18)count=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;write_sfm(4,shi);write_sfm(7,fen);write_sfm(10,miao);4.3硬件调试因为PCB用起来比较好看而且好连线,所以选择用PCB来做,
30、不过由于太久不使用DXP来做PCB了。4.3.1原理图因为使用PCB板来焊接电路,所以还会用DXP软件,这个软件里面必须先画原理图,如图4-1为所设计的电路在原理图中。图4-1 原理图4.3.2 PCB图在原理图编译没有错误后就可以直接导入到PCB工程中,生成设计电路的PCB图,然后进行布线排版,调到合适的位置后可以进行自动布线,不过也可以自己布线,但是必须设计好规则。如图4-2是布线好的PCB图。图4-2 PCB图4.3.3用跳线修改电路如下:由于仿真上的电路并不像想象中的那样,所以我在硬件电路的原理图中并没有给LCD1602的1、2、3、和15、16接任何东西,所以做出来后液晶屏并没有亮,后面查阅了一下资料,发现了这个严重的问题,后面用跳线来连接了,导致电路看起来并没有原来的那么美观,不过液晶屏能显示时间了。并且能调节液晶屏的亮度和背光度。在原来基础上把1脚接地,2脚接到电源上并和滑动变阻器的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论