版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录摘要………………3核心词………………3一、设计任务与规定………………4二、方案设计与论证………………4方案一…………4方案二…………5三、硬件单元电路设计与参数计算………………51.电源电路………………52.按键电路………………53.时钟电路…………………54.驱动电路…………………55.LED显示电路………………56.单片机电路………………6四、软件设计与流程图……………10五、总原电路及元器件清单………101.总原理图……………………102.PCB制板图…………………113.整体电路仿真图……………124.元件清单……………………12六、安装与调试……………………131.电路安装……………………132.电路调试……………………133.软件调试……………………13七、性能测试与分析………………14八、结论与心得……………………14九、参照文献………………………15十、道谢……………15十一、程序清单……………………15摘要:本论文基于单片机原理技术简介了一款于AT89C52芯片作为核心控制器单片机数字电子钟设计与制作,涉及硬件电路原理实现方案设计、软件程序编辑实现、数字电子钟正常工作流程、原理图仿真实现、硬件实物安装制作与硬件实物调试过程。该单片机数字电子钟采用LED数码管可以精确显示时间(显示格式为:时时,分分,秒秒),可随时进行时间调节,时间可采用12小时制显示或24小时制显示,采用12小时显示时可在标志位数码管上显示A(表达上午)或B(表达下午),可暂停时间变动,暂停时一位数码管上显示字母H,核心词:单片机
;数字电子钟
;数码管
;AT89C52
设计任务与规定1、设计任务用单片机设计一种数字电子钟,采用LED数码管来显示时间。2、设计规定(1)显示格式为:XX:XX:XX,即:时:分:秒。(2)时间可采用12小时制显示或24小时制显示,采用12小时显示时必要在此外一种数码管上显示A(表达上午)或B(表达下午)。(3)设立一种按键用于时间显示方式切换。(4)系统上电后从上电时初始化显示:12-00-00开始计时。(5)能进行时间调节,可暂停时间变动,暂停时一位数码管上显示字母H可按自己规定设立扩展小键盘个数。方案设计与论证单片机模块单片机模块驱动模块按键模块LED显示模块时钟模块电源模块图1系统整体框图整个系统用单片机作为中央控制器,由单片机执行采集芯片内部时钟信号,时钟信号通过单片机I/O口传给单片机,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号输出、LED显示及有关控制功能。系统设有按键模块用于对时间进行调节及扩展各种小键盘,系统整体框图如图1所示。单片机芯片选取方案方案一:AT89S52是一种低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)可重复擦写1000次Flash只读程序存储器。重要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定期器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定期器、双数据指针、掉电标记符、易编程。方案二:AT89C52是一种低电压,高性能CMOS8位单片机,片内含8kbytes可重复擦写Flash只读程序存储器和256bytes随机存取数据存储器(RAM)。重要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定期/计数器中断、时钟频率0-24MHz、2个串行中断、可编程UART串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设立睡眠和唤醒功能。从单片机芯片重要性能角度出发,本数字电子钟单片机芯片选取设计采用方案一。2、数码管显示选取方案方案一:静态显示。静态显示,即当显示屏显示某一字符时,相应发光二极管恒定导通或截止。该方式每一位都需要一种8位输出口控制。静态显示时较小电流能获得较高亮度,且字符不闪烁。但因当所需显示位数较多时,静态显示所需I/O口数较大,导致资源挥霍。方案二:动态显示。动态显示,即各位数码管轮流点亮,对于显示屏各位数码管,每隔一段延时时间循环点亮一次。运用人视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人视觉暂留功能才可察觉不到字符闪烁。显示屏亮度与导通电流、点亮时间及间隔时间比例关于。调节参数可以实现较高稳定度显示。动态显示节约了I/O口,减少了能耗。从节约单片机芯片I/O口和减少能耗角度出发,本数字电子钟数码管显示选取设计采用方案二。数码管驱动选取方案方案一:上拉电阻驱动方式。数码管段码与接有上拉电阻单片机芯片I/O口相连,通过编程,单片机芯片即控制段码电平高低。该方式经费低,但实物制作较复杂。方案二:74LS245芯片驱动方式。数码管段码与74LS245芯片B口相连,74LS245芯片A口与单片机芯片I/O口,通过编程,单片机芯片即可控制段码电平高低。该方式实物制作简朴,增强驱动数码管段码能力。从实物制作简易限度与驱动数码管段码能力角度出发,本数字电子钟数码管驱动选取设计采用方案二。硬件单元电路设计与参数计算1、电源电路本数字电子钟设计所需电源电压为直流、电压值大小5V电压源。从硬件实物设计简易限度与经费方面考虑,用两节电压值大小2.5V干电池与电路电压源引脚相连接即可达到硬件设计规定。即本数字电子钟设计用两节电压值大小2.5V干电池做硬件电路电压源。2、按键电路本数字电子钟设计所需按键用于进行显示时间调节与设立扩展小键盘。单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平高低,即按键开与关,以达到用按键进行显示时间调节与设立扩展小键盘设计规定。3、时钟电路单片机芯片可使用内部时钟电路和外部时钟电路两种方式产生电路所需时钟脉冲,内部时钟电路实现可用石英晶体和微调电容外接即可达到,外部时钟电路实现需要一种外部脉冲源引入脉冲信号以保证个单片机之间时钟信号同步。从硬件实现难易角度考虑,内部时钟电路实现比外部时钟电路实现更简易。既本数字电子钟设计所需时钟源采用内部时钟电路实现。所用定期方式为工作方式1,石英晶振为12M,即最小定期时间为1us,最大定期时间约为65.5ms,其电路图如下图2所示。图2时钟电路图驱动电路从实物制作简易限度与驱动数码管段码能力角度出发,本数字电子钟设计采用数码管段码与74LS245芯片B口相连,74LS245芯片A口与单片机芯片I/O口,通过编程,单片机芯片即可控制段码电平高低方式实现数码管段码控制,74LS245芯片图如下图3所示。图374LS245芯片图LED显示电路数字电子钟设计显示模块用8个一位数码管实现,也可用两个四位一体数码管实现。两种实现方式实现效果同样。从实物制作难易限度出,本数字电子钟设计采用两个四位一体数码管实现。即数码管引脚与单片机芯片和74LS245相应引脚相连接。单片机电路本数字电子钟设计采用AT89S52单片机芯片作为中央控制器,实现信号输出、LED显示及有关控制功能。软件设计与流程图1、数字电子时钟主程序流程图主程序流程图如下图图4所示。MAINMAIN定义堆栈区显示缓冲单元清0调用显示子程序定期器0工作方式1装载计数初值定期开始开中断设立循环次数等待定期中断祈求开始图4数字电子时钟主程序流程图2、中断服务程序流程图中断服务程序流程图如下图图5所示。YY与否满24h?显示缓冲单元清0返回NY与否满60m?小时加1分值加1N计数器重新加载循环次数加1与否满1s?与否满60s?秒值加1N开始图5中断服务程序流程图3、显示子程序流程图显示子程序流程图如下图图6所示。DISPLAYDISPLAY秒数加1秒值按键按下?分值按键按下?小时按键按下?切换键是否按下?YN小时>=12?NY标志位显示B标志位显示A分离秒值个位、十位显示分十位、个位分离小时个位、十位显示秒十位、个位分离分值个位、十位显示小时十位、个位分数加1时数加1暂停键按下?显示HYYYY开始图6显示子程序流程图五、总原电路及元器件清单1.总原理图最小系统控制原理图如下图图7所示,数码管原理图如下图图8所示。图7最小系统控制原理图图8数码管原理图2.PCB制板图数码管PCB图如下图图9所示,最小系统控制PCB图如下图图10所示。图9数码管PCB图图10最小系统PCB图3.整体电路仿真图整体电路仿真图如下图图11所示。图11整体电路仿真图4.元件清单名称数量型号芯片1片AT89S52四位一体数码管2个共阴极按键 5个晶振1个12M电容2个30p74LS2451片电阻2个220欧电阻1个1.5k发光二极管1个LED六、安装与调试1.电路安装安照电路原理图把元器件安装到已打好铜板相应位置,把个元器件固定在铜板后,用导线把相应元器件引脚相连接,再用焊锡焊接好即可。注意事项:(1)元器件布局应尽量集中,且各个元器件间引脚连线应尽量短、不弯曲,跳线尽量少。(2)各个元器件引脚焊接不要虚焊。2.电路调试把相应编译好目的程序代码加载到单片机芯片AT89S52,可接上5V电压源即开始进行硬件电路调试工作。如果显示成果不符合设计规定,即检查电路各连接点与否对的连接,再次进行硬件电路调试工作,或是检查代码程序与否符合硬件电路设计,若有错即进行相应修改,编译后,再进行硬件电路调试工作。如此重复操作,直到调试出对的成果。3.软件调试(1)在计算机上运营程序调试软件Keil,进行程序调试,若显示0错误(S),0警告(S)即证明程序代码对的。(2)在Proteus软件画好电路原理图中加载程序代码到单片机芯片AT89S52中,进行模仿仿真。若浮现错误,查看错误后进行相应修改再进行调试与模仿仿真,直到调试出对的成果。七、性能测试与分析1、系统上电后进行功能测试,通过测试观测到,系统上电后数码管上显示时间:12-00-00,图12实物图一接着按下K1按键调节时间小时数显示,即小时加1,按下K2按键调节时间分钟数显示,即分钟加1,按下K3按键调节时间秒数显示,即秒数加1,实物图二如下图图13所示。图13实物图二然后按下K5按键调节时间12小时制显示或24小时制显示。在24小时制显示状况下,显示时间制数码管上不显示,只显示时,分,秒;在12小时制显示状况下,如果小时数不不大于12小时状况,一种数码管上显示B(表达下午);反之如果小时数不大于12小时状况,一种数码管上显示A(表达上午);,实物图三如图14所示。图13实物图三通过测试,本作品设计实现了数字电子钟基本功能,还增长了时间制转换功能,且系统工作稳定。八、结论与心得1、结论本单片机数字电子钟系统功能基本符合显示格式为:XX:XX:XX,即时:分:秒。时间可采用12小时制显示或24小时制显示,采用12小时显示时必要在此外一种数码管上显示A(表达上午)或B(表达下午)。设立一种按键用于时间显示方式切换。系统上电后从上电时初始化显示:12-00-00开始计时,能进行时间调节,可暂停时间变动,暂停时一位数码管上显示字母H,可按自己规定设立扩展小键盘个数设计任务规定,通过测试数据显示,系统可靠性已经基本可以达到实际电子钟设计规定,同步本单片机数字电子钟系统具备扩展性。课程设计是培养学生综合运用所学知识,发现实际问题、提出实际问题、分析和解决实际问题,锻炼实践能力重要环节,是对学生实际学习能力、动手能力详细训练和考察过程。在本次数字钟设计过程中,在学习新知识同步,把在课程中学到理论知识运用到实际作品设计、操作中,更进一步地熟悉了单片机芯片构造及掌握了其工作原理和详细用法与有关元器件参数计算办法、用法,理解了电路开发和制作及课程设计报告编写。加深了对有关理论知识及专业知识掌握度,增强自身动手能力,锻炼及提高了理解问题、分析问题、解决问题能力,更深刻体会到了理论联系实际重要性,进一步掌握画图软件使用和提高相应画图操作水平及技巧。九、参照文献[1]沈精虎.Protel99SE基本教程[J].[2]李广弟,朱月秀,冷祖祁.单片机硬件构造[J].页码148。[3]谭丙煜.如何撰写科学论文[M].2版.沈阳:辽宁人民出版社,1982:5-6.(本条为中文图书著录格式)[3]陈正义.单片机控制实习[D].页码148。十、道谢从课题开始到最后完毕,本课程设计及报告论文是在指引教师精心指引和同窗热心协助下顺利完毕。本课程设计能顺利地完毕,与父母近年来一如既往支持和关怀是分不开,在此,向任劳任怨、含辛茹苦父母致以衷心感谢!此外衷心感谢在本次课程设计中指点和协助我指引教师与同窗!感谢学院为咱们提供了良好课程设计仪器设备及学习环境。十一、程序清单/*********************************************************************描述**电子时钟,LED数码管显示,晶振使用12MHz **K1---时调节*K2---分调节 *K3---秒调节 K4---时间暂停 K5---12小时制和24小时制切换*上电时初始化显示:12-00-00**********************************************************************#include<reg51.h>#include<intrins.h>unsignedchardatadis_digit;unsignedcharkey_s,key_v;unsignedcharcodedis_code[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00 };//0,1,2,34,5,6,7,8,9,off //共阴数码管unsignedchardatadis_buf[8];unsignedchardatadis_index;unsignedcharhour,min,sec;unsignedcharsec100;unsignedcharflag,flag1,flag2; //falg用于时间停止和启动标志,falg1为12小时和24小时切换标志,falg2为12小时上午和下午切换标志sbitK1=P1^0; //用于时调节sbitK2=P1^1; //用于分调节sbitK3=P1^2; //用于秒调节sbitK4=P1^3; //用于时间调节开关,按下一次暂停时间,再按一次时则开始计时sbitK5=P1^4; //用于24小时制和12小时制切换bitscan_key();voidproc_key();voidinc_sec();voidinc_min();voidinc_hour();voidinc_hour1();voiddelayms(unsignedcharms);voidmain(void){P0=0xff;P2=0xff;TMOD=0x11;//定期器0,1工作模式1,16位定期方式TH1=0xd8; //使用12MHz晶振,定期时间为:10msTL1=0xf0;TH0=0xf8; //定期时间为2ms,用于数码管动态扫描TL0=0x30;hour=12;min=00;sec=00;sec100=0;flag=0;flag1=0;dis_buf[0]=dis_code[hour/10];//时十位dis_buf[1]=dis_code[hour%10];//时个位dis_buf[2]=dis_code[min/10];//分十位dis_buf[3]=dis_code[min%10];//分个位dis_buf[4]=dis_code[sec/10];//秒十位dis_buf[5]=dis_code[sec%10];//秒个位 dis_buf[6]=0x00; //关闭该位数码管dis_buf[7]=0x7f; //显示B表达下午dis_digit=0xfe;dis_index=0;TCON=0x01; //T1:TF1TR1T0:TF0TR0定期中断:IE1IT1IE0IT0//外部中断0触发方式为下降沿触发IE=0x8a;//使能timer0,1中断,控制IE寄存器格式:EA--ESET1EX1ET0EX0 // 1000101 0TR0=1; //开定期器0TR1=1; //开定期器1key_v=0x1f; //定义为K1,K2,K3,K4,K5相应按键,当没有按下时则为,K1,K2,K3,K4,K5,都为高电平,0x1fwhile(1){if(scan_key()) //先扫描一次与否有按键按下{delayms(10); //延时if(scan_key()) //再次扫描一次与否有按键按下{key_v=key_s; //将key_s值传给key_vproc_key();}}}}bitscan_key(){key_s=0x00; //设立key_s先为0key_s|=K5;key_s<<=1;key_s|=K4;key_s<<=1;key_s|=K3;key_s<<=1;key_s|=K2; //K2->P1.1,若K2按下则为0,当K2按下时key_s与K2或成果会使得key_s为0x00,未按下时K2则为1,key_s与K2或成果会使得key_s为0x01key_s<<=1; //将key_s左移一位,key_s|=K1; //K1->P1.0,若K1按下则为0,当K1按下时key_s与K1或成果会使得key_s为0x00或是0x02,没有按下时则得到成果为0x01或是0x03return(key_s^key_v); //进行逻辑异或运算,相似为0,不同为1. 已经定义了变量:key_v=0x1f;如果两个按键都没有按下则是得到0x03,异或成果是为0}voidproc_key(){ if(K4==0) //K4与否按下 { flag++;//关闭定期器 TR1=0; //关闭定期器1 dis_buf[6]=0x76; //显示H,用于表达设定期间标志 } if(K5==0) { flag1++; //flag1初始值是0,falg1为12小时和24小时切换标志 if(flag1==1) //24小时制 { if(dis_buf[7]==0x7f) //判断是不是下午 { hour=hour+12; dis_buf[7]=0x00; } dis_buf[7]=0x00; //关闭显示 if(hour>23) { hour=0; } if(hour>9) dis_buf[0]=dis_code[hour/10];//时十位 else dis_buf[0]=0x00;//当小时十位为0时不显示 dis_buf[1]=dis_code[hour%10];//时个位 } if(flag1==2) //12小时制 { flag1=0; if(hour>12||hour==0) //判断是不是下午,并用于解决24小时制不不大于13和等于0解决 { if(hour>12) hour=hour-12; if(hour==0) hour=12; dis_buf[7]=0x7f;//显示下午B } else dis_buf[7]=0x77; //显示A表达上午 if(hour>9) dis_buf[0]=dis_code[hour/10];//时十位 else dis_buf[0]=0x00;//当小时十位为0时不显示 dis_buf[1]=dis_code[hour%10];//时个位 } } if((key_v&0x01)==0)//K1,当只有K1按下时,则key_s为0x02,没有按下时key_s则为0x03 { if(flag1==0) inc_hour(); if(flag1==1) inc_hour1(); } elseif((key_v&0x02)==0)//K2,当只有K2按下时,则key_s为0x01,没有按下时key_s则为0x03 { min++; if(min>59) { min=0; } dis_buf[2]=dis_code[min/10];//分十位 dis_buf[3]=dis_code[min%10];//分个位 } elseif((key_v&0x04)==0)//K3与否按下 { sec++; if(sec>59) { sec=0; } dis_buf[4]=dis_code[sec/10];//秒十位 dis_buf[5]=dis_code[sec%10];//秒个位 } if(flag==2) { flag=0; TR1=1; dis_buf[6]=0x00; if(flag1==0) { if(flag2) dis_buf[7]=0x77; //显示A表达上午 else dis_buf[7]=0x7f; //显示B表达下午 } }}voidtimer0()interrupt1//定期器0中断服务程序,用于数码管动态扫描//dis_index---显示索引,用于标记当前显示数码管和缓冲区偏移量//dis_digit---位选通值,传送到P0口用于选通当前数码管数值,如等于0xfe时,//选通P2.0口数码管//dis_buf---显于缓冲区基地址{TH0=0xf8; //定期时间为2msTL0=0x30;P2=0xff;//先关闭所有数码管P0=dis_buf[dis_index];//显示代码传送到P0口P2=dis_digit;//dis_digit=_crol_(dis_digit,1);//位选通值左移,下次中断时选通下一位数码管dis_index++;//dis_index&=0x07;//8个数码管所有扫描完一遍之后,再回到第一种开始下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年行政案件复议代表协议条款
- 2024年出租车服务协议指南
- 动态下沉合同
- 2024年期室内外油漆作业协议
- 2024年新型电梯销售协议范本
- 口腔治疗服务合同
- 2024年某市区路灯设施全面维护协议
- 2024年宠物店猫只销售协议精简样本
- 旅游管理评审员管理办法
- 广告安装脚手架钢管租赁合同
- 数列(中职数学春季高考练习题)
- 《腰段解剖》PPT课件
- 李砚祖《艺术设计概论》第四章设计概论设计与科学技术通用课件
- 高速铁路桥涵工程桥上救援疏散通道施工方案
- 招投标法实施条例解读PPT
- 企业经营状况调查问卷
- 班会PPT: 认识小动物儿童PPT课件
- 机场道面混凝土施工工艺及方法
- 部编版三年级语文上册教材解读及教学建议(课堂PPT)
- 隐形眼镜医疗器械质量管理制度
- (最新整理)施工电梯方案,含电梯基础及地下室顶板回撑方案
评论
0/150
提交评论