




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的数字电子钟设计 班级:自动化0804姓名: 日期:2011年4月11日基于单片机的数字电子钟设计摘要: 本设计以51单片机为核心,附加了必要的外围电路,构成了一个简单的数字电子钟,整体由5v的电源供电。在硬件方面,除了51单片机芯片以外,我们还主要用到了时钟芯片ds1302、温度采集芯片ds18b20、和型号为1602的液晶显示器。在这些硬件的基础上,我们通过编写配套的c语言程序,实现了对年、月、日、时、分、秒、星期以及温度在液晶屏上的显示,此外还实现了整点报时和闹钟的功能。日期、时间和温度的显示都是通过相应的时钟芯片ds1302和温度采集芯片ds18b20与单片机的配合工作将数据
2、传送到液晶显示器上来实现的。整点报时和闹钟的功能主要是通过软件以及单片机的控制来实现的。显然我们还要再加上一些必要的按键,我们的按键电路包含四个按键,分别用于对调整项的选择、上调、下调和闹钟停止。另外的一个复位按键与单片机最小系统是一个整体。关键词:电子钟,日期,时间,整点报时,闹钟,温度显示1 数字电子钟的设计要求1.1基本要求1)硬件设计:根据任务要求,完成单片机最小系统及其扩展设计,焊接电路板,组成功能完整的样机。2)系统软件设计:根据数字电子钟系统功能,完成控制软件的编写与调试; 3)基本功能:设计一个数字电子钟电路,能显示年、月、日和时、分、秒;通过功能键可以完成年、月、日与时、分、
3、秒的调整和显示切换。1.2 扩展功能 通过附加特殊功能芯片和电路实现以下三个附加功能: 1)整点报时功能; 2)设置闹钟功能;3)温度采集并显示功能。2硬件简介2.1 at89c51芯片简介 如图1所示,at89c51有40引脚,双列直插(dip)封装,所用引脚功能如下:1) vcc运行时加5v2) gnd接地3) xtal1振荡器反相放大器及内部时钟发生器的输入端4) xtal2振荡器反相放大器的输出端5) rst复位输入,高电平有效,在晶振工作时,在rst引脚上作用2个机器周期以上的高电平,将使单片机复位。wdt溢出将使该引脚输出高电平,设置sft auxr的disrto位(地址8eh)可
4、打开或关闭该功能。disrto位缺省为reset输出高电平打开状态6) ea/vpp片外程序存储器访问 允许信号。欲使cpu仅访问外部程序存储器(地址为0000h-ffffh),ea端必须保持低电平(接地),如 图1 果ea端为高电平(接vcc端),cpu则执行内部程序存储器中的指令。7. p1口,p2口p1,p2是一组带内部上拉电阻的8位双向i/o口。运行时通过p1口控制驱动电路的工作,将数据送到数码管,显示相应的段码,为了达到减少功耗或满足端口对最大电流的限制,应加上一限流电阻。p2.0p2.7口控制数码管的位选,使六个数码管轮流显示数据,等于0时位选三极管导通,等于1 时位选三极管截止。
5、8. 无自锁开关(s2p3.7)开关接相应引脚p3.7,当开关按下时,相应引脚为低电平0,断开时引脚为高电平1。2.2 时钟芯片ds1302简介 ds1302芯片是美国dallas公司推出的一种高性能、低功耗、带ram的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5v。时钟可工作在24或12小时(am/pm)格式。ds1302与单片机的接口使用同步串行通信,仅用三条线与之相连。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个318的用于临时性存放数据的ram寄存器,具有主电源/后备电源双电源
6、引脚,同时提供了对后备电源进行涓细电流充电的能力。如图2所示为时钟芯片ds1302引脚图: 1) vcc1、gnd:+5v电源和接地引脚;2) x1、x2:外接晶振引脚,晶振频率为32.768khz; 3)rst:片选信号引脚,高电平有效;4)i/o:串行数据输入/输出引脚; 图25)sclk:数据传送控制时钟输入引脚;6)vcc2:备用电源输入引脚。2.3温度采集芯片 ds18b20简介 ds18b20是美国dallas公司生产的单总线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易于与微处理器接口等优点,适合于各种温度测控系统。该器件将半导体温敏器件、a/d转换器、存储器等坐
7、在一个很小的集成电路芯片上,传感器直接输出的就是温度信号数字值。信号传输采用两芯(或三芯)电缆构成的单总线结构。一条单总线上可以挂接若干个数字温度传感器,每个传感器有一个唯一的地址编码。微控制器通过对器件的寻址,就可以读取某一个传感器的温度值,从而化简了信号采集系统的电路结构。ds18b20功能特点是:1)采用单总线技术,与单片机通信只需要一根i/o线,在一根线上挂接多个ds18b20;2)每只ds18b20具有一个独有的、不可修改的64位序列号,根据序列号访问对应的器件;3)低压供电,电源范围从35v,可以本地供电,也可以从数据线上窃取电源(寄生式供电);4)测温范围为-55+125,在-1
8、0至85范围内误差为0.5;5)可编程数据为912位,转换12位温度时间为750ms(最大);6)用户可自设定报警上下限温度;7)报警搜索命令可识别和寻址哪个器件的温度超出预定值;图3 8)ds18b20的分辨率可由用户通过eeprom设置为912位;9)ds18b20可将检测到的温度值直接转化成数字量,并通过串行通信的方式与主控制器进行数据通行。如图3所示,各引脚功能如下:1)gnd为电源地;2)dq为数字信号输入/输出端;3)vdd为外接供电电源输入端(在寄生电源接线方式时接地)。4数字电子钟系统说明4.1系统说明我们通过对单片机复位电路、时钟电路、电子钟按键电路、时钟芯片1302电路、温
9、度采集芯片ds18b20电路、发光二极管电路和液晶显示器电路来实现对数字电子钟的年、月、日、时、分、秒、星期、温度以及设置闹钟和整点报时功能。数字电子钟系统总原理图见附录一。4.2模块说明4.2.1电源部分 图4如图4所示,从外部引入4.5v的直流电,为单片机、复位电路等提供电源。4.2.2时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。我们采用的是内部时钟方式,如图5所示。mcs-51单片机内部有
10、一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片图5 引脚xtal1,输出端为引脚xtal2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。4.2.3复位电路单片机的复位靠外部电路实现,信号由rst引脚输入,高电平有效。当rst引脚上持续两个机器周期以上的高电平时,单片机即完成复位。常用的复位电路有上电复位和手动开关复位两种。我们采用手动开关复位,如图6所示。手动开关复位实际上是上电复位兼手图6 动复位,当手动开关断开时,为上电复位;当手动开关接通时,rst引脚经电阻与vcc接通,并对电容充电,产生一定时间的高电平,从而使单片机复位。4.2.4按键电
11、路如图7所示为按键电路,从 上至下四个按键依 次为停止闹铃、设置、上调、下调按键。通过设置按键选择对显示器上的某一项进行设置,通过上调、下调按键对选择的项进行调整。当到达闹钟设置时间时,通过闹钟停止按键使闹钟停止。 图74.2.5时钟芯片ds1302工作电路 图8如图8所示的时钟芯片ds1302芯片连接电路,将单片机的p1.0、p1.1、p1.2分别于时钟芯片的sclk引脚、i/o引脚、rst引脚相连,vcc1引脚与单片机的片外程序存储器选用端一同接在电源上,vcc2引脚接3v备用钮扣电池,外接晶振引脚x1、x2之间接频率为1mhz的晶振。如此构成时钟芯片工作电路,并通过软件控制对芯片内部数据
12、进行读取并在显示器上显示。4.2.6温度采集ds18b20芯片工作电路 图9如图9所示温度采集芯片ds18b20工作电路,将vcc引脚接电源、gnd引脚接地、数字信号输入/输出端dq与单片机p3.3/外部中断端相连,由此构成温度采集芯片ds18b20工作电路,实现对环境温度的测量,并通过软件控制对其测量数据进行读取,然后在显示器上显示。4.2.7发光二极管电路 图104.2.8液晶显示器工作电路图114.3基本功能实现原理本设计中对基本功能的实现通过单片机最小系统,外加按键电路和时钟芯片ds1302工作电路以及lcd显示电路构成。通过软件c语言编程,对时钟芯片内部时间进行读取,并在液晶显示器上
13、显示,再通过按键电路对显示时间进行校正,以此来显示正确的年、月、日、时、分、秒以及星期。4.4扩展功能实现原理我们通过外加温度采集芯片ds18b20工作电路、发光二极管工作电路实现扩展功能整点报时、闹钟和温度显示。整点报时功能,即当时间到达整点时通过发光二极管的闪烁来提醒;闹钟功能,即通过设置、上调、小调键对闹钟时间进行设置,当到达设置时间时通过发光二极管闪烁来提醒并通过停止闹铃按键来使发光二极管熄灭;温度显示功能,即通过温度采集芯片ds18b20工作电路对环境温度进行采集,通过软件控制对其采集数据进行读取并在液晶显示器上显示。此外我们还通过软件设计在开启电子钟时设置了开机动画显示如图12图1
14、25本次课程设计的实现过程5.1确定基本功能和扩展功能根据老师的设计要求我们确定了要做到对年、月、日、时、分、秒的显示,此外我们根据常规电子钟的功能决定附加对星期的显示、整点报时功能、闹钟和温度测量。5.2选择合适的元器件根据我们要实现的功能,我们选择了合适的元器件,器件清单见附录二。5.3设计电路将各元器件合理摆放并连线,所得电路图见附录一。5.4编写程序首先我们根据电路图和要实现的功能设计出程序流程图,然后根据程序流程图编写程序。部分重要程序段见附录三。程序流程图如下:按键电路晶振电路复位电路at89c52驱动电路lcd 电员温度测量电路时钟测量电路 图13电子钟实现框图ds18b20复位
15、rom命令跳过romram命令开始转换延时800msds18b20复位rom命令跳过romram命令读取ram读2bit数据图14 ds18b20实现功能流程开机初始化程序键盘扫描按键处理结果显示图15主函数流程图主程序开始程序初始化定时器装初值50ms,开中断秒寄存器单元清0秒值加1计数寄存单元清0判断秒满60?分值加1判断分满60?分寄存器单元清0时值加1判断时满24?时、分、秒寄存器单元清0天值赋1天值加1月值加1判断年满一世纪?年值加1月值赋1判断月12年寄存器单元清0中断返回开启整点报时判断天满该月的总天数?计数器加1,判断是否加到20次图16中断服务程序流程框图5.5将程序在kei
16、l中运行并装入proteus仿真电路中进行仿真在keil软件中调试程序,然后装入proteus仿真电路中进行仿真。操作过程如下:1) 启动keil;2) 在project菜单里选择new project,新建一个工程,注上工程名“数字电子钟”;3) 选择单片机型号at89c51;4) 在file菜单下选择new,新建一个text文件,然后保存,文件名命为数字电子钟.c(注意保存时文件名很重要,因为我写程序用的是单片机的c语言,所以必须保存为.c格式,否则到后面编译不了,如果写程序用汇编语言,就保存为文件名.asm)。5)点击project workspace里target1左边+,会出现,右击
17、source group1,在子菜单里点击add files to group “source group1”,会弹出一窗口,在文件类型项选择all files(* *),将第四步保存的c文件找到,点击add,添加到工程里;6)在text区域里编写程序并调试7) 编写完后,在project菜单下点击options for target target1出现一窗口,点击窗口中的output,勾上create hex fi, 以生成hex文件8) 点击,编译程序。5.6焊接环节根据仿真电路图及实际器件合理对器件进行布局并进行布线和焊接,由于是在以前实训实习焊接的51单片机最小系统之上进行设计的,故焊
18、接电路比较简单,单片机芯片、时钟电路和复位电路都不用再次焊接,只对一些附加电路进行焊接即可。5.7将程序装入检查实现功能用计算机将编写的程序烧入单片机内,插上电源电池,打开开关对数字电子钟进行操作,先检查每个按键是否能够正常工作,再检查整点报时,闹钟,温度显示等功能是否能正常实现(注意整点报时和闹钟时发光二极管能否发光,改变温度采集芯片周围温度看温度显示是否灵敏)。6需要改进的地方在我们将程序烧入单片机之后,我们对其做了一系列的实地检查,根据实际应用需要,我们发现一一些本次设计的产品本身存在的一些缺陷需要我们进一步对其进行改进。主要有以下几个方面:1) 闹钟提醒和整点报时提醒我们都用发光二极管
19、代替了蜂鸣器,这样虽然在功能上可以说明问题,但在现实使用中必然不够方便,因为发光二极管的提醒作用从根本应用上来说无法替代蜂鸣器的实际应用功能;2) 由于在软件和硬件设计过程中没有考虑到到达闹钟设置时间后的细节问题,导致闹钟无法自动关闭,达到闹钟设置时间后发光二极管一直处于闪烁状态,必须在按下停止闹钟按键后发光二极管才能够熄灭;7参考文献1 柴钰,黄向东,雷金莉,杨良煜,宋先文.单片机原理及应用.西安:西安电子科技大学出版社,2009 2 杨振江,杜铁军,李群.流行单片机实用子程序及应用实例.西安:西安电子科技大学出版社,20023 韩志军,沈晋源,王振波.单片机应用系统设计.北京:机械工业出版
20、社,20054 蔡明文,冯先成.单片机课程设计.武汉:华中科技大学出版社,2007附录一系统原理图:附录二元器件名称参数数目51单片机at89s51(12mhz)1时钟芯片ds13021温度采集芯片ds18b201lcd显示器lcd16021发光二极管(红)1三极管pnp s9012h1281瓷片电容33pf2电解电容10uf1晶振(时钟电路)drystal(12mhz)1晶振(1302电路)drystal(32.768khz)1电阻2k1排阻respack-8/10k1按钮button5钮扣电池cr2032(3v)1附录三1)主函数void main()lcd_init(); /调用液晶屏初
21、始化子函数ds1302_init(); /调用ds1302时钟的初始化子函数init(); /调用定时计数器的设置子函数led=0; /打开lcd的背光电源 buzzer=0;/蜂鸣器长响一次 delay(80); buzzer=1;while(1) /无限循环下面的语句: keyscan(); /调用键盘扫描子函数 2)液晶写入指令函数write_1602com(uchar com)rs=0;/数据/指令选择置为指令rw=0; /读写选择置为写p0=com;/送入数据delay(1);en=1;/拉高使能端,为制造有效的下降沿做准备delay(1);en=0;/en由高变低,产生下降沿,液晶
22、执行命令write_1602dat(uchar dat)/*液晶写入数据函数*rs=1;/数据/指令选择置为数据rw=0; /读写选择置为写p0=dat;/送入数据delay(1);en=1; /en置高电平,为制造下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令lcd_init()/*液晶初始化函数* uchar j; write_1602com(0x0f|0x08);for(a=0;a17;a+) write_1602dat(tab3a); j=17;while(j-)write_1602com(0x1c);/循环左移delay(700); write_1
23、602com(0x01);delay(10);write_1602com(0x38);/设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示/*开机动画显示hello welcome dianzizhong*/write_1602com(yh+1);/日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a14;a+)write_1602dat(tab1a);/向液晶屏写日历显示的固定符号部分/delay(3
24、);write_1602com(er+2);/时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a=0&dat=128)gw=dat%10;/取得个位数字sw=dat%100/10;/取得十位数字bw=dat/100;/取得百位数字elsedat=256-dat;gw=dat%10;/取得个位数字sw=dat%100/10;/取得十位数字bw=-3; /0x30-3表示为负号write_1602com(er+add);/er是头文件规定的值0x80+0x40write_1602dat(0x30+bw);/数字+30得到该数字的lcd1602显示码write_1602dat(0x3
25、0+sw);/数字+30得到该数字的lcd1602显示码write_1602dat(0x30+gw);/数字+30得到该数字的lcd1602显示码 write_1602dat(0xdf);/显示温度的小圆圈符号,0xdf是液晶屏字符库的该符号地址码 write_1602dat(0x43);/显示c符号,0x43是液晶屏字符库里大写c的地址码4)时分秒显示子函数void write_sfm(uchar add,uchar dat)/向lcd写时分秒,有显示位置加、现示数据,两个参数uchar gw,sw;gw=dat%10;/取得个位数字sw=dat/10;/取得十位数字write_1602co
26、m(er+add);/er是头文件规定的值0x80+0x40write_1602dat(0x30+sw);/数字+30得到该数字的lcd1602显示码write_1602dat(0x30+gw);/数字+30得到该数字的lcd1602显示码5)年月日显示子函数void write_nyr(uchar add,uchar dat)/向lcd写年月日,有显示位置加数、显示数据,两个参数uchar gw,sw;gw=dat%10;/取得个位数字sw=dat/10;/取得十位数字write_1602com(yh+add);/设定显示位置为第一个位置+addwrite_1602dat(0x30+sw);
27、/数字+30得到该数字的lcd1602显示码write_1602dat(0x30+gw);/数字+30得到该数字的lcd1602显示码6)键盘扫描有关函数void keyscan()if(key1=0)delay(9);/延时,用于消抖动if(key1=0)/延时后再次确认按键按下 buzzer=0;/蜂鸣器短响一次 delay(20); buzzer=1;while(!key1);key1n+;if(key1n=12)key1n=1;/设置按键共有秒、分、时、星期、日、月、年、返回,8个功能循环switch(key1n)case 1: tr0=0;/关闭定时器/tr1=0;write_160
28、2com(er+0x09);/设置按键按动一次,秒位置显示光标 write_1602com(0x0f);/设置光标为闪烁 temp=(miao)/10*16+(miao)%10;/秒数据写入ds1302 write_1302(0x8e,0x00); write_1302(0x80,0x80|temp);/miao write_1302(0x8e,0x80); break;case 2: write_1602com(er+6);/按2次fen位置显示光标/write_1602com(0x0f);break;case 3: write_1602com(er+3);/按动3次,shi /write_
29、1602com(0x0f);break;case 4: write_1602com(yh+0x0e);/按动4次,week /write_1602com(0x0f);break;case 5: write_1602com(yh+0x0a);/按动5次,ri /write_1602com(0x0f);break;case 6: write_1602com(yh+0x07);/按动6次,yue /write_1602com(0x0f);break;case 7: write_1602com(yh+0x04);/按动7次,nian /write_1602com(0x0f);break;case 8:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中外广告史试题及答案
- 中医方剂学试题及答案
- 学海大联考2024-2025学年高二下生物期末预测试题含解析
- 车辆维修延误损失赔偿合同
- 智能制造厂房建设与运营维护合同集
- 2024年内蒙古蒙发能源控股集团招聘笔试真题
- 中介签署的二手房买卖合同新的内容(31篇)
- 有关合资经营合同模板集锦(16篇)
- 供电指挥复习试题及答案
- 防断复习试题含答案
- 2024年河南住院医师-河南住院医师口腔科考试近5年真题集锦(频考类试题)带答案
- 2024小红书影像赛道赚钱趋势详解
- 《液压传动与气动技术》课后习题答案(大学期末复习资料)
- 2024年生态环境执法大练兵比武竞赛理论考试题库-上(单选题)
- 大学生网络安全教育筑牢安全网络防线课件
- DB11-T854-2023占道作业交通安全设施设置技术要求
- (高清版)WS∕T 389-2024 医学X线检查操作规程
- 运输企业安全生产责任制制度
- 驻颜有术 知到智慧树网课答案
- GB/T 8492-2024一般用途耐热钢及合金铸件
- 2024年徐州市六年级下学期期末抽测语文模拟试卷
评论
0/150
提交评论