单片机课程设计(论文)-微机控制实现多功能数字时钟设计功能课设单片机单 片机多功能数字时钟单片机实现单片机控制论文设计_第1页
单片机课程设计(论文)-微机控制实现多功能数字时钟设计功能课设单片机单 片机多功能数字时钟单片机实现单片机控制论文设计_第2页
单片机课程设计(论文)-微机控制实现多功能数字时钟设计功能课设单片机单 片机多功能数字时钟单片机实现单片机控制论文设计_第3页
单片机课程设计(论文)-微机控制实现多功能数字时钟设计功能课设单片机单 片机多功能数字时钟单片机实现单片机控制论文设计_第4页
单片机课程设计(论文)-微机控制实现多功能数字时钟设计功能课设单片机单 片机多功能数字时钟单片机实现单片机控制论文设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广泛、发展很快。INTEL公司生产的MCS8051系列单片机是各单片机中最为典型和最有代表性的一种。本次设计以MCS8051芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的数字时钟,它由5V直流电源供电。在硬件方面,单片机外接12MHZ晶振,使用八个七段数码管来进行显示。LED采用动态扫描显示,使用74LS245芯片进行位驱动。通过LED能够准确明亮地显示时、分、秒;四个简单的按键实现对时间的调整;蜂鸣器实现闹钟响铃功能;软件方面采用C语言编程。整个电子钟系统能完成时间的显示、调时和一组定时闹钟的功能。设计过程中使用KEIUVISION4单片机模拟调试软件编写调试程序,并用EDA工具软件PROTEUSISIS7进行仿真。硬件简明,程序正确,仿真结果满足设计要求。关键词51单片机,定时器,中断,闹钟,LED目录摘要1绪论3第一章系统设计3一、器件选型3二、硬件接线设计3三、系统综述3131上电界面3132调时界面3133闹钟设定界面3134正常走时界面3135闹钟响应3四、软件部分3141主函数流程图3142定时器T0中断服务程序流程图3143闹钟响应程序流程图3144键盘扫描程序流程图3第二章参数计算3一、定时器T03212定时器T0初值计算3二、数码管驱动码3221位选码3222段选码3第三章结论3参考文献3附录3绪论20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,随时提醒那些容易忘记时间的人,电子钟无疑最为直观。数字钟通过数字电路实现时、分、秒。数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。多功能数字钟的应用非常普遍。由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来,通过键盘可以进行校时、定时闹钟等功能,输出设备显示器可以用液晶显示技术和数码管来显示技术。本次设计的数字时钟利用51单片机作为核心芯片,辅以按键、蜂鸣器和LED显示器,以实现具有计时、校时、闹钟设定等功能。利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。本设计应解决的主要问题有两大方面,即硬件电路设计和软件设计两大方面。其中硬件电路部分又可分为四大模块键盘模块、显示模块、计时模块和响铃模块。硬件电路部分致力于低成本、低功耗和易实现性;软件部分则应做到代码的精简、准确、易读、可移植性强。最后通过软、硬件的结合实现数字钟的精确计时、校时、闹钟功能。第一章系统设计一、器件选型111单片机选型根据选题芯片采用MCS8051单片机,INTEL公司生产的51系列8位单片机,凭借其成熟的技术标准和很高的性价比得到了广泛的普及与应用,其功能强大,用来做电子表硬件易实现,编程规范。112按键模块方案一44行列式键盘如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷。缺点也很明显,一是浪费按键,用全键盘来实现设定时间的小功能不免大材小用;二是从实用性考虑,全键盘体积大,明显不经济不方便。故放弃。方案二独立式按键如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,同时浪费按键,不高效,程序繁琐。本次设计适用于按键较少的情况。为了尽量实现按键的高效性,此次设计采用四个独立式按键,分别定义为KEY_MODE、KEY_ADD、KEY_MOVE,KEY_CONFIRM,依次是模式键、加数键、移位键、确认键。113显示模块方案一液晶显示器LCD如果选择此方案,将会降低系统的功耗,可以用电池供电,便于携带,但液晶显示器的驱动电路复杂,使用起来有一定的难度。方案二数码管LED数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。按照此次任务书设计要求,选择共阳8位七段蓝色数码管用于显示。114计时参考模块方案一专用时钟芯片如果使用时钟芯片,系统就不怕掉电且时间精确,但这种芯片比较贵,浪费资源不经济。方案二单片机内部定时/计数器由于本次设计本主要是为了学习单片机程序的编写和调试,以及设计硬件电路的一些方法,因此采用软件的方法来计时。本次设计用MCS8051单片机内部定时/计数器T0作为电子表时钟参考。115闹钟响铃模块通过三极管放大后驱动蜂鸣器工作,单片机I/O接三极管基极。116显示器驱动模块由于通过数码管公共极的电流较大,单片机I/O口驱动能力是不够的,故LED驱动模块必不可少。为避免过多地使用分立元件,本次设计采用一片74LS245来驱动位码,用P2口进行位选扫描。图1174LS245元件封装图74LS245是常用来驱动LED或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据,74LS245还具有双向三态功能。片选端,接低电平时传输数据,接高电平时A、B均为高阻态。CE方向选择端AB/,接高电平时信号由A向B传输(发送),接低电平时信号由B向A传输(接收)。117电源模块本系统采用了数码管作为显示器,功耗较大,不便于使用电池供电。况且本系统的体积较大,即使使用电池供电也不便于随身携带,因此用5V外部稳压电源来供电。二、硬件接线设计121系统硬件框图122单片机晶振配置和复位电路设计12单片机晶振配置和复位电路晶振选择12MHZ,接到如图所示引脚。复位电路兼具上电复位功能以及按键复位功能,接到如图所示引脚。123按键电路设计晶振蜂鸣器MCS8051段码驱动位码驱动8位七段LED显示器按键复位电路图13按键电路采用4个独立按键配以4个上拉电阻实现对时钟和闹钟的设定及修改。四个独立式按键分别定义为KEY_MODE、KEY_ADD、KEY_MOVE、KEY_CONFIRM,依次是模式键、调时加键、调时移位键、确认键。124蜂鸣器驱动电路设计图14蜂鸣器驱动电路蜂鸣器采用NPN三极管放大电路驱动,接到如图所示引脚。125显示模块电路设计图15显示模块电路显示设备为共阳8位7段数码管(LED),用单片机P0口作为LED段选控制端,用单片机P2口作为LED位选控制端,并采用集成块74LS245作为位驱动模块。片选端CE接地,方向选择端AB/BA接电源。126硬件接线总览三、系统综述131上电界面图16电子钟上电界面电子表上电后自动初始化,接着从000000开始走时,显示正常走时界面,此时闹钟默认关掉。按下KEY_MODE键,可依次切换到调时界面、调闹钟界面、正常走时界面,如此循环往复。上电初始化后,调时初值为000000,闹钟初值为000000。132调时界面图17调时界面调时界面,从左至右依次显示时、分、秒,数字右下角小点代表调整位到达位置。在调时界面下,按下KEY_MOVE键可以移动调整位,数字下标小点用以指示当前操作的数位,按下KEY_ADD键可以对调整位进行加数操作。当且仅当在调时界面下,按下KEY_CONFIRM键可确认设定,电子表按设定时间更新并走时,同时自动清零设定时间。此时再按KEY_MODE键切换回正常走时界面即能看到时间已经更新。如果调时后没有按下KEY_CONFIRM键确认,而是直接按KEY_MODE键切换回正常走时界面,则设置时间被保存,当前时间并不更新。133闹钟设定界面图18闹钟设定界面闹钟设定界面,从左至右依次显示时、分、秒,数字右下角小点代表调整位到达位置。在闹钟设定界面下,按下KEY_MOVE键可以移动调整位,数字下标小点用以指示当前操作的数位,按下KEY_ADD键可以对调整位进行加数操作。闹钟设置好后直接按KEY_MODE键返回正常正常走时界面即可,无需按KEY_CONFIRM键确认,闹钟设定值会自动保存。134正常走时界面图19正常走时界面一图110正常走时界面二正常走时界面,从左至右依次显示时、分、秒,小点亮灭代表闹钟开闭。在正常走时界面下,按下KEY_ADD键和KEY_MOVE键不产生操作,LED显示无变化;按下KEY_CONFIRM键可循环开闭闹钟,LED显示对应变换提示闹钟的开闭;按下KEY_MODE键可依次切换到调时模式、闹钟设定模式、正常走时模式,循环往复。135闹钟响应当正常走时到达闹铃设定值后,闹铃响应,正常情况下持续蜂鸣一分钟后自动关闭蜂鸣器。闹铃响铃过程中,若按下KEY_CONFIRM键可立刻关闭蜂鸣器。闹铃响应后自动等待下次响应。四、软件部分141主函数流程图图111主函数程序流程图开始初始化主循环定时器T0循环中断计时键盘扫描闹钟判定显示响应闹钟响应结束142定时器T0中断服务程序流程图图112定时器T0中断服务程序流程图开始T0重装初值T1SEC60T0,SEC1T20MIN60HOUR24SEC0,MIN1MIN0,HOUR1HOUR0结束143闹钟响应程序流程图图113闹钟响应程序流程图开始闹钟判定响铃一分钟闹钟定时到闹钟打开KEY_CONFIRM按下关闭蜂鸣器结束144键盘扫描程序流程图图114键盘扫描程序流程图开始键盘扫描键盘抖动有键按下KEY_MODEKEY_ADDKEY_MOVEKEY_CONFIRMMOSHI1ADDMOV1CONFIRMMOSHI2MOSHI0MOV2MOV0结束第二章参数计算一、定时器T0211定时器T0背景知识数字电子钟设计中主要使用定时器T0,利用ET0中断进行计时时间的自增,从而实现计时功能。51单片机有两个通用定时/计数器T0和T1。两者均可配置为定时器或计数器,用作“定时器”功能时,每经过一个机器周期,寄存器值加1;用作“计数器”功能时,寄存器在对应的外部输入管脚T0/T1上每发生一次1到0的跳变时加1。1方式控制寄存器TMODT1T0D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0TMOD用以设定通用定时/计数器T0和T1工作方式。GATE位为门控位,GATE1时,T0、T1分别受INT0、INT1引脚输入电平控制,常用于测量对应正脉冲的宽度;C/用选选择定时、计数功能。本次设计选择T0做定时器用,工作在方式1,故TMOD0X012控制寄存器TCONT1T01INT0INTD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TR0用于开/关定时器T0,TF0为T0溢出标志位。3中断允许控制寄存器IED7D6D5D4D3D2D1D0EA/ESET1EX1ET0EX0EA为总中断允许位,ET0为T0中断允许位。212定时器T0初值计算初值计算公式XTX定时器初值N定时器位数(方式013位,方式116位,方式28位)FOSC单片机主频(本次设计取12MHZ)T所需定时时间设定时时间为50MS,即T50MS,FOSC12MHZ,选工作方式1,带入公式求解得X3CB0H,所以TH00X3C,TL00XB0。213定时器T0初始化程序TMOD0X01/选定时器T0,工作方式1TH00X3CTL00XB0/50MS定时初值ET01/定时器TO使能位打开EA1/总中断允许位打开TR01/打开定时器T0开始计时二、数码管驱动码图21数码管驱动电路221位选码LED连接如图所示,为8位共阳数码管,从右至左,依次循环扫描,可得段码驱动数组如下UNSIGNEDCHARWEI0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80;222段选码图21七段数码管示意图七段共阳数码管,当位选端为高电平时,给段选端低电平即可点亮对应段,再由点亮的段组合成字符。定义如下段码驱动数组,即可依次显示字符0123456789灭UNSIGNEDCHARDUAN0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF,0X7F;第三章结论通过两个星期的持续努力,在老师的指导和同学的帮助下,经过反复调试修改我终于成功完成了此次设计任务。此次设计既是对51单片机核心功能学习的一次实际操作验收,也对微机控制理论学习的一次应用拓展。经过此次设计,我基本学会了用MCU辅助外围电路,通过编程实现常见的微机控制,为以后的工作学习打下了一定的基础。经PROTEUS软件仿真,此次设计的多功能电子钟功能完全达标正常走时、时间校正、闹钟设定都能完整简明地实现;同时该电子钟精确度完全可以满足日常生活显示时间的需要;时间校正和闹钟设定方便快捷,闹钟响铃还有扩展成音乐闹钟的余地。硬件总体实用性较强,操作清晰简单。通过这次设计我学会了很多东西,微机控制课程设计重点就在于软件的设计,需要有很巧妙的程序算法。虽然一直也有小程序的练习,但我还是第一次写好这么一个综合系统的大程序,发现并不是一件简单的事,一个看似简单的功能程序实现的时候往往也不简单,具体编程的时候才发现一些细微的知识或低级错误就会引起失败,所以只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握,实践操作很重要,活学活用才能深刻掌握知识。最后,要感谢我的指导老师和替我答疑解惑的同学,没有你们的帮助我也无法完成此次课程设计。参考文献1张淑清,单片机原理及应用技术,北京国防工业出版社,201082王为青、程国钢,单片机KEILCX51应用开发技术M,北京人民邮电出版社,20073张靖武、周灵彬,单片机系统的PROTEUS设计与仿真,北京电子工业出版社,20074ATMEL8BITMICROCONTROLLERWITH4KBYTESFLASHAT89C512000附录完整程序代码如下/头文件及宏定义INCLUDEDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINT/软件延时程序VOIDDELAYUINTIIWHILEII/定义数码管驱动码UCHARDUAN0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF,0X7F/段选,0123456789灭UCHARWEI0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80/位选,共阳,从右至左/定义变量UCHART0,SEC0,MIN0,HOUR0/正常走时时间变量UCHARSEC10,MIN10,HOUR10/时间设定值变量UCHARSEC20,MIN20,HOUR20/闹钟设定值变量UCHARALARM_EN0/闹钟开关变量UCHARALARM_FLAG0/闹钟定时到达标志变量UCHARP30,MOSHI0,MOV0/P3口查询,模式值,调整位/显示缓冲区,依次为正常、调时、闹钟设定、调整位带点标记UCHARTEMP8,TEMP18,TEMP28,TEMP38/函数声明VOIDINITIALIZEVOID/初始化VOIDSHOWVOID/正常走时显示VOIDSHOW1VOID/时间设定显示VOIDSHOW2VOID/闹钟设定显示VOIDSHOW3VOID/调整位标记VOIDSHOW4VOID/闹钟开关标记VOIDKEYSCANVOID/键盘扫描VOIDADDVOID/调时调闹钟加数程序VOIDCONFIRMVOID/调时确认,闹钟开关VOIDALARM_JUDGEVOID/闹钟定时到达判定VOIDBEEPVOID/闹钟响铃程序/主函数VOIDMAININITIALIZEWHILE1KEYSCANALARM_JUDGESWITCHMOSHICASE0SHOWSHOW4BREAK/显示正常走时CASE1SHOW1SHOW3BREAK/显示设置时间CASE2SHOW2SHOW3BREAK/显示闹钟时间IFALARM_FLAG1/定时器初始化VOIDINITIALIZEVOIDTMOD0X01TH00X3CTL00XB0/50MSET01EA1TR01P10X7F/初始化时关掉蜂鸣器ALARM_FLAGALARM_EN0/定时器T0中断服务程序VOIDTIMER0VOIDINTERRUPT1TL00XB0TH00X3CTIFT20/50MS201ST0SECIFSEC60/秒为60,则清零,分加1SEC0MINIFMIN60/分为60,则清零,时加1MIN0HOURIFHOUR24/时为24,则清零HOUR0IFSEC160SEC10MIN1IFMIN160MIN10HOUR1IFHOUR124HOUR10IFSEC260SEC20MIN2IFMIN260MIN20HOUR2IFHOUR224HOUR20/正常时间显示程序VOIDSHOWVOIDUCHARI0TEMP0SEC10TEMP1SEC/10TEMP210TEMP3MIN10TEMP4MIN/10TEMP510TEMP6HOUR10TEMP7HOUR/10FORI0I3MOSHI0WHILEP30XFE/KEY_MODE键按下到弹起期间P3P3SWITCHMOSHICASE0SHOWBREAK

温馨提示

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

评论

0/150

提交评论