版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
提供全套毕业设计,欢迎咨询 《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间:2013-06-07摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz晶振与单片机AT89S52相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。关键词电子钟;AT89S52;硬件设计;软件设计ABSTRACTClockiswidelyusedinlife,andasimpledigitalclockismorewelcomedbypeople.Sotodesignasimpledigitalelectronicclockisnecessary.ThesystemuseasinglechipAT89S52ofATMEL’sasitscoretocontrolThecrystaloscillatorclock,usingofE-12MHZisconnectedwiththemicrocontrollerAT89S52,throughthesoftwareprogrammingmethodtoachievea24-hourcycle,andeight7-segmentLEDdigitaltube(twofourinonedigitaltube)displayshours,minutesandsecondsrequirements,andinthetimecourseofatimingfunction,whenthetimearrivedaheadofscheduledtimetobuzzagoodtimekeeping.TheclockhasfourbuttonsKEY1,KEY2,KEY3,KEY4andKEY5key,andmaketheappropriateactioncanbeachievedwhentheschool,timing,reset.Withatimedisplay,alarmclocksettings,timerfunction,correctiveaction.Accuratetraveltime,displayandintuitive,precision,stability,andsoon.Withahighapplicationvalue.KeywordsElectronicclock;;AT89S52;HardwareDesign;SoftwareDesign目录设计课题任务、功能要求说明及方案介绍……1设计课题任务………………1功能要求说明………………1设计总体方案介绍及原理说明……………1设计课题硬件系统的设计………2设计课题硬件系统各模块功能简要介绍…………………2设计课题电路原理图、PCB图、元器件布局图…………2设计课题元器件清单………5设计课题软件系统的设计………6设计课题使用单片机资源的情况…………6设计课题软件系统各模块功能简要介绍…………………6设计课题软件系统程序流程框图…………6设计课题软件系统程序清单………………10设计结论、仿真结果、误差分析、教学建议…………………21设计课题的设计结论及使用说明…………21设计课题的仿真结果………21设计课题的误差分析………22设计体会……………………22教学建议……………………22结束语……………23参考文献……………24致谢……………25附录……………261设计课题任务、功能要求说明及方案介绍1.1设计课题任务设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整功能。1.2功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时0分0秒开始运行,进入时钟运行状态;按电子钟KEY1键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按KEY1键再次进入时钟运行状态。1.3设计课题总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89S52的FlashROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。2设计课题硬件系统的设计设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。(1)单片机最小系统模块:包括低功耗、高性能CMOS8位微控制器AT89S52;复位电路;晶振电路。本本模块AT89S52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。这样就构成一个稳定的自激振荡器。(2)输入模块:本模块共用到了4个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。3个按键独立式键盘,KEY1键控制电子钟的启动,KEY2键为加1键,KEY3键为减1键,KEY1键第三次控制电子钟的调整状态。且KEY1、KEY2、KEY3、任一键都独自连一个I/O(P1.0、P1.1、P1.2、P1.3)口线,说明它们可以独立实现相应的电子钟功能。(3)输出模块:本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。数码管用8个PNP三极管驱动。(4)电源模块:现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。设计课题电路原理图、PCB图、元器件布局图图2-1电路原理图总设计原理图见附录A原理总设计图见附录附录BPCB图见附录C2.3设计课题元器件清单表2-1设计所用元器件清单名称数量参数电容2个33pF数码管2个4位一体电阻1个200Ω下载口1个WE普通插座1个40PIN电阻16个470Ω按键4个三极管9个PNPUSB供电线1根晶振1个12MHz极性电容1个22μF芯片1块AT89S52发光二极管9个LED六角开关1个SW-PB3设计课题软件系统的设计3.1设计课题使用单片机资源的情况设计课题使用单片机资源的情况如下:P0口输出数码管段选信号,P2口输出数码管位选信号;晶振12MHz;调整选择键KEY1:P1.0;通过选择键选择调整位,选中位闪烁;增加键KEY2:P1.1;按一次使选中位加1;减少键KEY3:P1.2;按一次使选中位减1;此数字钟可实现基本的走时和显示时间时、分、秒;时间的调整;闹钟的设定和调整;闹钟的开启和关闭功能,具体如下:(1)实现基本的走时和显示时间的时、分、秒,上电自动显示初始时间12-00-00,且控制闹钟状态的的蓝色led灯为亮的状态。(2)当第一次按下第一个弹性按键时进入时间的调节状态,此时实现对显示时间的小时调节,按下第二个按键时实现小时的加一调节,按下第三个按键时实现小时的减一调节。(3)当第二次按下第一个弹性按键时进入显示时间的分钟调节状态,按下第二个按键时实现分钟的加一调节,按下第三个按键时实现分钟的减一调节。(4)当第三次按下第一个弹性按键时进入闹钟的小时调节状态,按下第二个按键时实现闹钟小时的加一调节,按下第三个按键时实现闹钟小时的减一调节。(5)当第四次按下第一个弹性按键时进入闹钟的分钟调节状态,按下第二个按键时实现闹钟分钟的加一调节,按下第三个按键时实现闹钟分钟的减一调节。(6)当第五次按下第一个弹性按键时返回正常的显示时间走时状态。(7)当同时按下第二和第三个弹性按键时,关闭闹钟,且此时蓝色led灯为灭,及定时时间到蜂鸣器并不响,若再次同时按下第二和第三个弹性按键,则开启闹钟,且此时蓝色led灯为亮,定时时间到蜂鸣器发出滴滴的闹铃声,同时按下第二和第三个弹性按键即可关闭闹铃。闹铃状态默认为开启。设计课题软件系统个模块功能简要介绍本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键盘输入程序模块:主要是用于确定按键并得到特定的键码值。数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。3.3设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous进行仿真,读出显示数据。主程序流程框图如3-1所示;时间处理子程序流程框图3-2所示;中断服务程序程序如3=3所示;图3-1主程序流程框图图3-2时间处理子程序流程框图图3-3中断子程序3.4设计课题软件系统程序清单;-----------------------------------------------------------------------;项目名称:数字电子钟;项目功能:本电子钟实现24小时制,8位数码管显示时分秒,显示格式:12-59-00通过4只按键来调整时间,调整选择键KEY1:P1.0;通过选择键选择调整位,选中位闪烁,增加键KEY2:P1.1;按一次使选中位加1。减少键KEY3:P1.2;按一次使选中位减1,bear:P3.1;到了整点和闹钟就会响,如果长按KEY1第一次切换到正常时钟显示,按第二次切换到时的调整,按第三次切换到分的调整,同时led:P1.2就会闪烁,按第四次和第五次分别切换到闹钟的时分的调整,可进行调时、调分快进快减,并停止闪烁。如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能。P0口输出数码管段选信号,P2口输出数码管位选信号;晶振12MHz。编程作者:林炽逸完成时间:2013年06月8日程序请清单如下:#include<reg51.h>#include<absacc.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharsbitKEY1=P1^1;//切换键sbitKEY2=P1^2; //minute,hour调整加1定义sbitKEY3=P1^7; //minute,hour调整减1定义sbitbear=P3^1; //闹铃sbitled=P1^2; //闹钟,整时灯闪烁codeunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xc8,0x8e,0xff,0x21};//段码控制charcodeweikong_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};ucharms[8]={2,2,10,4,0,0,1,14};ucharStrTab[8];ucharminute=59,hour=12,second=0;//正常时钟秒,分,时定义ucharminute1=00,hour1=00;second1=00; //闹钟时钟秒,分,时定义ucharflag=0,flag1=0;//切换标志ucharnum=0;uintcount=0; //定时器计数,定时50ms,count满20,秒加1/***********子函数声明*******************************************/voidxianshishuzu();// 显示数组子程序voidalarm(); //闹钟子程序 /**********************延时子程序*****************************/voiddelay(uintz){uintx,y; for(x=0;x<z;x++) for(y=0;y<110;y++);}/***********************时间处理子程序*************************/voidtime_pro(void){if(second==60) {second=0;minute++; if(minute==60) {minute=0;hour++; if(hour==24) {hour=0;} } }}/**********************显示时钟子函数***************************/voiddispaly(ucharw[8]){unsignedinti,j,aa; aa=0xfe;//位选初值11111110 for(i=0;i<8;i++) //依次将数组w中八个数取出,并显示 { P2=aa; //位选 j=w[i]; //取出要显示的数码 P0=tab[j]; //取出段选编码 aa=_crol_(aa,1);//位选信号循环右移? delay(1); //显示延时 P0=0xff;//消影 } }/***********************显示时钟数组子程序***********************/voidxianshishuzu() { StrTab[1]=second/10; //秒个位StrTab[0]=second%10; //秒十位StrTab[2]=10; //间隔符-StrTab[4]=minute/10; //分个位StrTab[3]=minute%10; //分十位StrTab[5]=10; //间隔符-StrTab[7]=hour/10; //时个位StrTab[6]=hour%10; //时十位 }/**********************键盘扫描子程序*************************/voidkeycan(){if(KEY1==0)//按一次,正常显示,按第二次,时调整,按第三次,分调这整,{delay(10); //按键1去抖以及动作 if(KEY1==0) //确认按键是否按下 {flag++;} //切换标志 while(!KEY1);}//释放按键if(flag==1) { if(KEY2==0) {delay(10); if(KEY2==0) {hour++;if(hour==24)hour=0;} //正常时间小时加1 while(!KEY2) //释放按键 {dispaly(StrTab); } } if(KEY3==0) {delay(10); if(KEY3==0) {hour--;if(hour==0)hour=23;dispaly(StrTab);} //正常时间小时减1 while(!KEY3) { dispaly(StrTab);} } }if(flag==2){if(KEY2==0)//按键去抖以及动作{delay(10);if(KEY2==0) {minute++;if(minute==60)minute=0;} //分加1 while(!KEY2){ dispaly(StrTab);} } if(flag==3) //秒表的加1 {if(KEY3==0) {delay(10); if(KEY3==0) {second++;if(second==0)second=59;//秒加1 }while(!KEY3){ dispaly(StrTab);} } } }if(flag==3) //闹钟对时{if(KEY2==0) {delay(10); if(KEY2==0) {hour1++;if(hour1==24)hour1=0;} //闹钟时间小时加1 while(!KEY2){alarm(); } } if(KEY3==0) {delay(10); if(KEY3==0) {hour1--;if(hour1==0)hour1=23;}//闹钟时间小时减 while(!KEY3) {alarm();} } } if(flag==4) { if(KEY2==0)//按键去抖以及动作{delay(10);if(KEY2==0) { minute1++;if(minute1==60)minute1=0;//闹钟分加1 }while(!KEY2){ alarm(); } }if(KEY3==0)//按键去抖以及动作{delay(10);if(KEY3==0) {minute1--;if(minute1==0)minute1=59;} //闹钟分减1 }while(!KEY3){alarm();}}}/*******************蜂鸣器子程序****************************/voidbeng(){bear=1; P3=0xfd; delay(100); bear=0; P3=0XFf; delay(100);}/*****************整点报警子程序***************************/ voidzhengdian(void) { uchari=0; if((second==0)&(minute==0))//整点报时 { for(i=0;i<10;i++) { TR0=1;beng();dispaly(ms); } } }/********************************定时闹钟****************/ voidalarm(){ uinti; if((hour==hour1&&second1==minute1&&(second>=second1&&second<second1+5))||(minute==0&&second<1)) for(i=0;i<3;i++) {beng();} StrTab[1]=second1/10; //闹钟秒个位 StrTab[0]=second1%10; //秒十位 StrTab[2]=10; //间隔符- StrTab[4]=minute1/10; //分个位 StrTab[3]=minute1%10; //分十位 StrTab[5]=10; //间隔符- StrTab[7]=hour1/10; //时个位 StrTab[6]=hour1%10; //时十位 TR0=0; dispaly(StrTab); xianshishuzu(); } /**************************中断子程序*********************************/voidtime_()interrupt1//中断程序{ count++; TH0=(65536-50000)/256; //0.5ms重新送初值 TL0=(65536-50000)%256; if(count==20) //定时器计数,定时50ms,count满20,秒加1 {second++;count=0; if(second==60) //秒值等于60,秒清零,分加1 {second=0;minute++; if(minute==60) //分值等于60,分清零,时加1 {minute=0;hour++; if(hour==24) //时值等于24,时清零,返回,全部归零 {hour=0;}} } } xianshishuzu();}/***********************主函数***************************/voidmain(){ P1=0XFF; TMOD=0x11;//time0为定时器,方式1 TH0=(65536-50000)/256; //预置计数初值,50ms TL0=(65536-50000)%256; EA=1;//总中断开 ET0=1;//允许定时器0中断 TR0=1;//开启定时器0while(1)//主循环{ if(flag==0){TR0=0;dispaly(ms);} if(P1!=0XFF){keycan();} if(flag>0){if(flag==1||flag==2){TR0=1;dispaly(StrTab);zhengdian();} if(flag==3||flag==4){TR0=0;alarm();} if(flag==5){dispaly(StrTab);} if(flag==6){TR0=0;flag=0;dispaly(ms);}} } } 4设计结论、仿真结果、误差分析、教学建议4.1设计课题的设计结论及使用说明本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中KEY1为启动键,KEY2为加控制键KEY3为减控制键。4.2设计课题的仿真结果在ProteusISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图所示。仿真结果图见附录D实现功能:可调整运行的电子钟具有三种工作状态:“d.1004-22”状态、运行状态、调整状态。(1)、“d.1004-22”状态,依靠上电或按复位键进入,在此状态下,按KEY2、KEY3键均无效,按KEY1键有效,进入运行状态;(2)、运行状态,在此状态下,按KET2、KEY3键均无效,只有按KEY1键有效,按下KEY1键后,退出运行状态,进入调整状态;(3)、调整状态,按KEY1键进入时、分、秒的闪烁,在此状态下,按KEY2(+1键)、KEY3(-1键)键均有效;调整结束后必须按KEY1键,即可退出调整状态,进入运行状态。在调整状态时长按KRY2、KEY3时可以连加及连减。时间显示格式为:时-分-秒;图4-2“d.1004-22”上电初始化运行状态仿真结果图4-3时钟正常运行状态仿真结果 图4-4闹钟定时调整状态仿真结果图4-5小时调整状态仿真结果图4-6分钟调整状态仿真结果4.3设计课题的误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到11.0592MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。4.4教学建议1、每一位学生都要发展,但不必求一样的发展;每一位学生都要提高,但不必是同步的提高;每一位学生都要合格,但不必是相同的规格;2、继续以幽默轻松的教学方式让课堂气氛很活跃,授课内容条理清晰,运用各种实例,娓娓道来,给人印象深刻。;3、学生不敢说的,怕做的,您鼓励他做;学生说不对的,您引导他; 附录B:原理总设计图附录C:PCB物图附录D:仿真调试结果图基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冀少版八年级生物上册第五单元复习提升课件
- 电子教案格式
- 《蚂蚁做操》教学设计与反思
- 服装库存管理技巧
- 新能源履约管理办法
- 商场洗手间修缮合同
- 美容美发市场租赁合同
- 港口航道招投标控标要点分析
- 石油行业不合格产品处理
- 剧院表演中心演艺车库改造合同
- 蓝色简约世界标准日(标准体系促发展 良好行为增效益)
- 《跆拳道》教学大纲
- 人际需求和孤独感在青少年网络游戏障碍与抑郁间的链式中介作用
- 医美行业分析报告
- 大学美育 课件 王树青 第三篇 文艺之美
- 2024-2025学年人教版一年级数学上册 期中综合测试卷
- (新版)高级考评员职业技能鉴定考试题库(含答案)
- 2024年北京市第一次普通高中学业水平合格性考试英语仿真模拟卷03(全解全析)
- 大学介绍清华大学宣传
- 2024年导游服务技能大赛《导游综合知识测试》题库及答案
- 中医护理进修总结汇报
评论
0/150
提交评论