某大学-单片机-计时电子钟_第1页
某大学-单片机-计时电子钟_第2页
某大学-单片机-计时电子钟_第3页
某大学-单片机-计时电子钟_第4页
某大学-单片机-计时电子钟_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

绪论单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛使用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯和数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄影机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发和使用将造就一批计算机使用和智能化控制的科学家、工程师。单片机广泛使用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。本设计主要是设计基于8051单片机的计时电子钟,在数码管上显示时间,并且,通过键盘可以修改时间。用LED显示代替了指针显示,减小了计时误差,这种表具有时分秒显示时间的功能,还可以校对,片选的灵活性好。基础知识1.1定时器/计数器定时器/计数器工作原理在MCS-51单片机内继承了两个16位的定时器/计数器T0和T1,其基本工作原理是加一计数,即对指定的脉冲信号进行加一操作,直到出现溢出为止。定时器/计数器的基本工作原理是加一计数器,不过作为定时器或计数器是稍有不同。定时器。作为定时器使用时,使用的脉冲信号为单片机的内部时钟信号。每个机器周期产生一个计数脉冲,是计数器加一,因此,计数速率固定为fosc/12。计数器。作为计数器使用时,使用的脉冲信号为从单片机外部输入的脉冲信号。T0对应单片机引脚P3.4,T1对应单片机引脚P3.5,当检测到引脚的输入脉冲信号发生负跳变时计数器加一。当加一计数器出现溢出是时,产生溢出信号通知单片机进行相应的处理。由于识别一个从1到0的负跳变需要两个机器周期,所以最快的计数速率是振荡频率的1/24。当TMOD中的M1、M2为10时,定时器/计数器工作于方式2。工作方式2为一个能自动重新装入初值的8位定时器/计数器。TL0用作8位计数器,TH0用作数据寄存器。当TL0计数满产生溢出时,一方面置1溢出标志TF0,供软件查询或向CPU请求中断;另一方面,自动将TH0中的内容送至TL0,使8位定时器/计数器重新装入的初值开始重新计数。1.2LED数码管LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。A、静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O多,如驱动5个数码管静态显示则需要5×8=40根I/O口驱动。故实际使用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。B、动态显示驱动:数码管动态显示介面是单片机中使用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。1.3发光二级管发光二极管简称LED,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴和电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现,因此而发光。发光二极管在制作时,使用的材料有所不同,那么就可以发出不同颜色的光。发光二极管的发光颜色有:红色光、黄色光、绿色光、红外光等。常用的发光二极管使用电路有四种,即直流驱动电路、交流驱动电路、脉冲驱动电路、变色发光驱动电路。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱和电流有关。第二章系统实现本设计任务的目的为设计一个计时电子钟,同时显示时、分、秒,而且在时分之间和分秒之间加入随秒信号闪烁的冒号,要求通过键盘可以修正时间。该电子钟有8051、4*6键盘、六位数码管、四个发光二级管和外部脉冲电路等构成由内部定时器T0产生一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满24小时为一天,之后,时分秒同时清零,开始新的计时。而按键S1拥有位选功能,按下S1由输入脉冲个数不同,可以实现对时、分、秒的选中功能,通过键盘可以达到直接修改的目的。2.1系统框图键盘及脉冲信号键盘及脉冲信号数码管显示8051单片机数码管显示8051单片机冒号闪烁冒号闪烁2.2发光二极管试验仪上有8只发光二级管及相应驱动电路,共阴极连接,其输入端为高电平“1”时,发光二级管点亮。2.3键盘及LED显示电路显示控制的位码由74HC374输出,经ULN2003反向驱动后,做LED的位选通信号。位选通信号也可以作为键盘列扫描码盘扫描的行数据从74HC245读回,374输入的列扫描码经245读出后,用来判断是否有键被按下,374输出的低电平经过按键被接到245的端口上,这样从245读回的数据就会有低位,根据374输出的列信号和245读出的行信号,就可以判断哪个键被按下。LED显示的段码由另一个74HC374输出。将KEY/LEDCS接到相应的地址译码器上。位码输出地址为0X002H,段码输出地址为)X004H,键盘行码读回地址为0X001H,此处X是由KEY/LEDCS决定。例如将KEY/LEDCS接到地址译码器CS0上,那么位码输出地址就是08002H,段码输出地址就是08004H,键盘行码读回地址为08001H。键盘及LED显示电路第三章软件实现3.1主程序实现主程序主要用于系统的初始化:设置计时缓冲区的位置及初值,设置8051的工作方式、定时器的工作方式和计数初值等等。主程序流程如下图所示:开始开始系统初始化系统初始化允许允许T0中断调用显示子程序调用显示子程序调用键盘子程序调用键盘子程序3.2定时中断子程序实现系统使用12MHz的晶振,使用定时器T0采用工作方式2,定时器的最大定时时间为0.256ms,远小于1s,因此本系统采用定时器和软件循环结合的定时方法。定时器采用T0工作在方式2,每个50us溢出一次中断,则循环16次延时时间是1s,秒计时60次为1分,分计时60次为一小时,小时计时24次则计时重新从00:00:00开始。计时初值为256-50/1=206=CE所以TH0=CEHTL0=CEH。MCS_51单片机只有二进制加法指令,而时间是按十进制递增的,因此用加法指令后必须进行二-十进制转换。保护现场T0中断程序流程图保护现场自动重装定时器初值自动重装定时器初值循环次数减1循环次数减1满满16次?否秒加1秒加1冒号闪烁冒号闪烁满满60s?否是秒清秒清0,分加1满60满60分?、否是分清分清0,时加1满满24时?否时清0时清0返回恢复现场返回恢复现场3.3外部中断子程序实现外部中断T0用于用键盘修改当前时间值,当按住S1键,由输入脉冲个数的不同选中不同的位,按下键盘应设定的时间数值即可修改当前显示的时间值。T0中断程序实现流程图开始开始保护现场保护现场中断中断6次?是否当前显示值改变当前显示值改变恢复现场恢复现场返回返回第四章硬件连线连线连接孔1连接孔2注释1CS0KEY/LEDCS片选2P10发光二级管L0用作闪烁冒号3P11发光二级管L2用作闪烁冒号4P12发光二级管L4用作闪烁冒号5P13发光二级管L7用作闪烁冒号6P32单脉冲上升沿用于修改时间7P33单脉冲下降沿用于修改时间第五章程序实现OUTBITequ08002h;位控制口OUTSEGequ08004h;段控制口INequ08001h;键盘读入口LEDBufequ60h;显示缓冲Hourequ40hMinuteequ41hSecondequ42hC100usequ43hTickequ10000T100usequ256-50ljmpStartorg0003hljmpint0org000bhT0Int:pushPSWpushACCmova,C100us+1jnzGoondecC100usGoon:decC100us+1mova,C100usorla,C100us+1jnzExitmovC100us,#high(Tick)movC100us+1,#low(Tick)incSecondcplp1.0cplp1.1cplp1.2cplp1.3mova,Secondcjnea,#60,ExitmovSecond,#0incMinutemova,Minutecjnea,#60,ExitmovMinute,#0incHourmova,Hourcjnea,#24,ExitmovHour,#0Exit:popACCpopPSWretiDelay2:;延时子程序movr7,#0lpl:djnzr7,lplretdelay1:movr7,#0DelayLoop:djnzr7,DelayLoopdecajnzdelayloopretLEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhDisplayLED:movr0,#LEDBufmovr1,#6;共6个八段管movr2,#00100000b;从左边开始显示Loop:movdptr,#OUTBITmova,#0movx@dptr,a;关所有八段管mova,@r0movdptr,#OUTSEGmovx@dptr,amovdptr,#OUTBITmova,r2movx@dptr,acalldelay2mova,r2;显示下一位rramovr2,aincr0djnzr1,Loopret;===============================================ToLED:movdptr,#LEDMapmovca,@a+dptrretStart:movr6,#0movTMOD,#02h;模式2,定时器movTH0,#T100usmovTL0,#T100usmovtcon,#01hmovIE,#10000011b;EA=1,IT0=1movHour,#0movMinute,#0movSecond,#0movC100us,#high(Tick)movC100us+1,#low(Tick)setbTR0;启动定时器0MLoop:mova,Hourmovb,#10divabcallToLEDmovLEDBuf,amova,bcallToLEDorla,#80hmovLEDBuf+1,amova,Minutemovb,#10divabcallToLEDmovLEDBuf+2,amova,bcallToLEDorla,#80hmovLEDBuf+3,amova,Secondmovb,#10divabcallToLEDmovLEDBuf+4,amova,bcallToLEDmovLEDBuf+5,acallDisplayLEDjbp3.3,remlincr6mova,#0f0hcalldelay1cjner6,#7,remlmovr6,#0reml:ljmpmloopint0:cjner6,#1,hllcallL2mova,#0calldelay1mova,hourmovb,#10divabmovr3,bmova,r4movb,#10mulabadda,r3movhour,ajmpreturn1;====================HL:cjner6,#2,MHlcallL2mova,#0CALLDelay1mova,HourMOVb,#10divabmovb,#10mulabadda,R4movHour,ajmpreturn1;====================MH:cjner6,#3,MLlcallL2mova,#0CALLDelay1mova,MinuteMOVb,#10divabmovr3,bmova,r4movb,#10mulabadda,r3movMinute,ajmpreturn1;=============ML:cjner6,#4,SHlcallL2mova,#0CALLDelay1mova,MinuteMOVb,#10divabmovb,#10mulabadda,R4movMinute,ajmpreturn1;===================SH:cjner6,#5,SLlcallL2mova,#0CALLDelay1mova,SecondMOVb,#10divabmovr3,bmova,r4movb,#10mulabadda,r3movSecond,ajmpreturn1;=============SL:cjner6,#6,return1lcallL2mova,#10CALLDelay1mova,SecondMOVb,#10divabmulabadda,R4movSecond,areturn1:movr6,#0retI;L2:pushpswpushaccL1:movdptr,#outbitMovr5,#11011111bMova,r5Movx@dptr,aMovdptr,#inMovxa,@dptrJnbacc.3,sevenJnbacc.2,fourJnbacc.1,oneJnbacc.0,zero;==========Movdptr,#outbitMova,r5RraMov

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论