![数字电子钟课程设计报告-3_第1页](http://file4.renrendoc.com/view/bfb619595659e51355e797d80ad381ff/bfb619595659e51355e797d80ad381ff1.gif)
![数字电子钟课程设计报告-3_第2页](http://file4.renrendoc.com/view/bfb619595659e51355e797d80ad381ff/bfb619595659e51355e797d80ad381ff2.gif)
![数字电子钟课程设计报告-3_第3页](http://file4.renrendoc.com/view/bfb619595659e51355e797d80ad381ff/bfb619595659e51355e797d80ad381ff3.gif)
![数字电子钟课程设计报告-3_第4页](http://file4.renrendoc.com/view/bfb619595659e51355e797d80ad381ff/bfb619595659e51355e797d80ad381ff4.gif)
![数字电子钟课程设计报告-3_第5页](http://file4.renrendoc.com/view/bfb619595659e51355e797d80ad381ff/bfb619595659e51355e797d80ad381ff5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字电子钟单片机原理与应用(大作业)姓名:XXX班级:自动化11102班学号:摘要本论文基于单片机原理技术介绍了一款于STC89C52芯片作为核心控制器的单片机数字电子钟的设计与制作,包括硬件电路原理的实现方案设计、软件程序编辑的实现、数字电子钟正常工作的流程、原理图仿真实现、硬件实物的安装制作与硬件实物的调试过程。该单片机数字电子钟采用LED数码管能够准确显示时间(显示格式为:时时,分分,秒秒),可随时进行时间调整,时间可采用12小时制显示或24小时制显示,采用12小时显示时可在标志位数码管上显示A(表示上午)或B(表示下午),可暂停时间的变动,暂停时一位数码管上显示字母T,可按自己的要求设置扩展的小键盘个数。关键词:单片机;数字电子钟;数码管;STC89C52目录1. 设计任务与要求 41.1 设计任务 41.2 设计要求 42. 方案设计与论证 42.1 单片机芯片选择方案 52.2 数码管显示选择方案 52.3 数码管驱动选择方案 63. 硬件单元电路设计与参数计算 63.1 电源电路 63.2 按键电路 63.3 时钟电路 63.4 驱动电路 73.5 LED显示电路 83.6 单片机电路 84. 软件设计与流程图 84.1 数字电子时钟主程序流程图 84.2 中断服务程序流程图 94.3 显示子程序流程图 115. 总原电路及元器件清单 125.1 总原理图 125.2 PCB制板图 135.3 整体电路仿真图 145.4 元件清单 15心得体会 16参考文献 17致谢 18程序清单 19设计任务与要求设计任务用单片机设计一个数字电子钟,采用LED数码管来显示时间。设计要求显示格式为:XX:XX:XX,即:时:分:秒。时间可采用12小时制显示或24小时制显示,采用12小时显示时必须在另外一个数码管上显示A(表示上午)或B(表示下午)。设置一个按键用于时间显示方式的切换。系统上电后从上电时初始化显示:12-00-00开始计时。能进行时间的调整,可暂停时间的变动,暂停时一位数码管上显示字母T可按自己的要求设置扩展的小键盘个数。方案设计与论证图1-1系统整体框图整个系统用单片机作为中央控制器,由单片机执行采集芯片内部时钟信号,时钟信号通过单片机I/O口传给单片机,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号的输出、LED的显示及相关的控制功能。系统设有按键模块用于对时间进行调整及扩展多个小键盘,系统整体框图如图1-1所示。单片机芯片选择方案方案一:STC89S52是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器。主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。方案二:STC89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM)。主要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定时/计数器中断、时钟频率0-24MHz、2个串行中断、可编程UART串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设置睡眠和唤醒功能。从单片机芯片主要性能角度出发,本数字电子钟单片机芯片选择设计采用方案一。数码管显示选择方案方案一:静态显示。静态显示,即当显示器显示某一字符时,相应的发光二极管恒定导通或截止。该方式每一位都需要一个8位输出口控制。静态显示时较小电流能获得较高的亮度,且字符不闪烁。但因当所需显示的位数较多时,静态显示所需的I/O口数较大,造成资源的浪费。方案二:动态显示。动态显示,即各位数码管轮流点亮,对于显示器各位数码管,每隔一段延时时间循环点亮一次。利用人的视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人的视觉暂留功能才可察觉不到字符闪烁。显示器的亮度与导通电流、点亮时间及间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。从节省单片机芯片I/O口和降低能耗角度出发,本数字电子钟数码管显示选择设计采用方案二。数码管驱动选择方案方案一:上拉电阻驱动方式。数码管段码与接有上拉电阻的单片机芯片I/O口相连,通过编程,单片机芯片即控制段码电平的高低。该方式经费低,但实物制作较复杂。方案二:74LS245芯片驱动方式。数码管段码与74LS245芯片B口相连,74LS245芯片A口与单片机芯片I/O口,通过编程,单片机芯片即可控制段码电平的高低。该方式实物制作简单,增强驱动数码管段码能力。从实物制作简易程度与驱动数码管段码能力角度出发,本数字电子钟数码管驱动选择设计采用方案二。硬件单元电路设计与参数计算电源电路本数字电子钟设计所需电源电压为直流、电压值大小5V的电压源。从硬件实物设计简易程度与经费方面考虑,用两节电压值大小2.5V干电池与电路电压源引脚相连接即可达到硬件设计要求。即本数字电子钟设计用两节电压值大小2.5V干电池做硬件电路电压源。按键电路本数字电子钟设计所需按键用于进行显示时间的调整与设置扩展的小键盘。单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求。时钟电路单片机芯片可使用内部时钟电路和外部时钟电路两种方式产生电路所需的时钟脉冲,内部时钟电路实现可用石英晶体和微调电容外接即可达到,外部时钟电路实现需要一个外部脉冲源引入脉冲信号以保证个单片机之间时钟信号的同步。从硬件实现难易角度考虑,内部时钟电路的实现比外部时钟电路的实现更简易。既本数字电子钟设计所需的时钟源采用内部时钟电路实现。所用定时方式为工作方式1,石英晶振为12M,即最小定时时间为1us,最大定时时间约为65.5ms,其电路图如下图2-1所示。图2-1时钟电路图驱动电路从实物制作简易程度与驱动数码管段码能力角度出发,本数字电子钟设计采用数码管段码与74LS245芯片B口相连,74LS245芯片A口与单片机芯片I/O口,通过编程,单片机芯片即可控制段码电平的高低的方式实现数码管段码控制,74LS245芯片图如下图3-1所示。图3-174LS245芯片图LED显示电路数字电子钟设计的显示模块用8个一位数码管实现,也可用两个四位一体数码管实现。两种实现方式实现效果一样。从实物制作的难易程度出,本数字电子钟设计采用两个四位一体数码管实现。即数码管引脚与单片机芯片和74LS245对应引脚相连接。单片机电路本数字电子钟设计采用STC89C52单片机芯片作为中央控制器,实现信号的输出、LED的显示及相关的控制功能。软件设计与流程图数字电子时钟主程序流程图主程序流程图如下图图4-1所示。图4-1数字电子时钟主程序流程图中断服务程序流程图中断服务程序流程图如下图图4-2所示。图4-2中断服务程序流程图显示子程序流程图显示子程序流程图如下图图4-3所示。图4-3显示子程序流程图总原电路及元器件清单总原理图最小系统控制原理图如下图图5-1所示,数码管原理图如下图图5-2所示。图5-1最小系统控制原理图图5-2数码管原理图PCB制板图数码管PCB图如下图图5-3所示,最小系统控制PCB图如下图图5-4所示。图5-3数码管PCB图图5-4最小系统PCB图整体电路仿真图整体电路仿真图如下图图5-5所示。图5-5整体电路仿真图元件清单名称数量型号芯片1片AT89S52四位一体数码管2个共阴极按键5个晶振1个12M电容2个30p74LS2451片电阻2个220欧电阻1个1.5k发光二极管1个LED名称数量型号心得体会本单片机数字电子钟系统的功能基本符合显示格式为:XX:XX:XX,即时:分:秒。时间可采用12小时制显示或24小时制显示,采用12小时显示时必须在另外一个数码管上显示A(表示上午)或B(表示下午)。设置一个按键用于时间显示方式的切换。系统上电后从上电时初始化显示:12-00-00开始计时,能进行时间的调整,可暂停时间的变动,暂停时一位数码管上显示字母T,可按自己的要求设置扩展的小键盘个数设计任务的要求,经过测试数据显示,系统的可靠性已经基本能够达到实际电子钟的设计要求,同时本单片机数字电子钟系统具有扩展性。课程设计是培养学生综合运用所学知识,发现实际问题、提出实际问题、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际学习能力、动手能力的具体训练和考察过程。在此次数字钟设计过程中,在学习新知识的同时,把在课程中学到的理论知识运用到实际作品设计、操作中,更进一步地熟悉了单片机芯片的结构及掌握了其工作原理和具体的使用方法与相关元器件的参数计算方法、使用方法,了解了电路的开发和制作及课程设计报告的编写。加深了对相关理论知识及专业知识的掌握度,增强自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题的能力,更深刻的体会到了理论联系实际的重要性,进一步掌握画图软件的使用和提高相应的画图操作水平及技巧。参考文献[1]沈精虎.Protel99SE基础教程[J].[2]李广弟,朱月秀,冷祖祁.单片机的硬件结构[J].页码148。[3]谭丙煜.怎样撰写科学论文[M].2版.沈阳:辽宁人民出版社,1982:5-6.(本条为中文图书著录格式)[4]陈正义.单片机控制实习[D].页码148。致谢从课题的开始到最终的完成,本课程设计及报告论文是在指导老师的精心指导和同学的热心帮助下顺利完成的。本课程设计能顺利地完成,与父母多年来一如既往的支持和关怀是分不开的,在此,向任劳任怨、含辛茹苦的父母致以衷心的感谢!此外衷心感谢在本次课程设计中指点和帮助我的指导老师与同学!感谢学院为我们提供了良好课程设计仪器设备及学习环境。程序清单#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 //10001010TR0=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个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描,限定了只扫描8位,当为超过8位时则开始清零.} //0x07=00000111dis_index在一个个加一时,则为加到8次。//定时器1的定时时间为10msvoidtimer1()interrupt3{TH1=0xd8;TL1=0xf0;sec100++;if(sec100>=100)//定时1秒的时间{sec100=0;inc_sec();}}voidinc_sec(){sec++;if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植物油现代提取工艺的商业价值挖掘
- 【基础卷】同步分层练习:四年级下册语文第6课《飞向蓝天的恐龙》(含答案)
- 湘教版数学八年级下册《3.3用坐标表示轴对称》听评课记录3
- 【基础卷】同步分层练习:四年级下册语文第21课《芦花鞋》(含答案)
- 2025年度绿色建筑节能检测与施工合同
- 苏科版数学八年级下册7.1《普查与抽样调查》听评课记录2
- 苏教版小学数学三年级上《认识几分之一》听评课记录
- 【基础卷】同步分层练习:五年级下册语文第21课《杨氏之子》(含答案)
- 现代广告如何影响职场人的价值观体系
- 人教版地理八年级下册:7.3 《“东方明珠”-香港和澳门》 听课评课记录3
- 河南省安阳市2024年中考一模语文试卷(含答案)
- TD/T 1044-2014 生产项目土地复垦验收规程(正式版)
- 2024年湖南现代物流职业技术学院单招职业适应性测试题库及答案1套
- (正式版)JTT 1499-2024 公路水运工程临时用电技术规程
- 2024年职业技能测试题库500道【基础题】
- 垃圾桶创新设计说明书
- 《游戏界面设计专题实践》课件-知识点1:游戏图标设计定义、分类与设计原则
- 病案信息技术(中级)考试真题及答案5篇
- 妇科围手术期护理课件
- 蔚来汽车技术
- 浙教版劳动二年级上册全册教案
评论
0/150
提交评论