下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 单片机 电子时钟实验报告[1]

单片机 电子时钟实验报告[1].doc

单片机 电子时钟实验报告[1]

夣弦_563
2011-10-22 0人阅读 举报 0 0 暂无简介

简介:本文档为《单片机 电子时钟实验报告[1]doc》,可适用于职业岗位领域

单片机原理与接口技术课程设计单片机原理与接口技术课程设计电子时钟电子信息工程学院一、实验任务及要求在焊接的电路板中个LED数码管设计带有闹铃功能的数字时钟要求:、在位数码管上显示当前时间。显示格式“时时分分””、由LED闪动做秒显示、利用按键可对时间及闹玲进行设置并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响按停止键使可使闹玲声停止。二、方案论证与比较数字时钟方案数字时钟是本设计的最主要的部分。根据需要可利用两种方案实现。方案一:本方案采用Dallas公司的专用时钟芯片DSA。该芯片内部采用石英晶体振荡器其芯片精度不大于ms年且具有完备的时钟闹钟功能因此可直接对其以用于显示或设置使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作芯片内部包含锂电池。当电网电压不足或突然掉电时系统自动转换到内部锂电池供电系统。而且即使系统不上电程序不执行时锂电池也能保证芯片的正常运行以备随时提供正确的时间。方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现毫秒定时中断每产生一次中断存储器内相应的计数值加若计数值达到则将其清零并将相应的秒字节值加若秒值达到则清零秒字节并将分字节值加若分值达到则清零分字节并将时字节值加若值达到则将时字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时定时器都要重新赋初值所以该时钟精度不高。而且由于是软件实现当单片机不上电程序不执行时时钟将不工作。基于硬件电路的考虑本设计采用方案二完成数字时钟的功能。数码管显示方案方案一:静态显示。所谓静态显示就是当显示器显示某一字符时相应的发光二极管恒定的导通或截止。该方式每一位都需要一个位输出口控制。静态显示时较小的电流能获得较高的亮度且字符不闪烁。但当所显示的位数较多时静态显示所需的IO口太多造成了资源的浪费。方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位对于显示器的每一位来说每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示但必须保证扫描速度合适字符才不闪烁。显示器的亮度既与导通电流有关也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了IO口降低了能耗。从节省IO口和降低能耗出发本设计采用方案二。三、各个部分的分析)显示电路:通过个LED显示屏显示分钟和小时两个两联的LED显示器通过与单片机P接口连接实现显示功能。而实现个LED灯动态显示靠的是位选电路)位选电路四位共阳LED数码管其标号分别为HourH,HourL,MinL,MinH低电平选通且任何时候仅有一位输出低电平显示时对各显示器进行动态扫描显示器分时轮流工作。虽然每次只有一个显示器显示但是由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。P口作为输出口控制个发光二极管的亮灭控制数码管的显示。因此可以实现个LED在我们看来同时亮显示时间。)​ 闹铃部分:使用蜂鸣器实现闹钟功能其中buzzer端口接到单片机的P输出。(端口连接在最后介绍))​ 开关部分:使用了个开关控制整个电路的启动修改时间设置闹钟关闭电路等功能为查询方式典型电路。其中Setbutton为复位开关swtich为转换模式开关即工作模式和调时间模式Increase为调时间模式中控制时间变化的按钮STRAT和STOP分别为开启和结束按钮这个开关分别接到PP端口以控制其输入。)​ 串转并电路为了进一步节省IO口有添加了一个额外的串转并电路由以上电路我们将PP扩展到个IO口我们采用的是HC芯片管脚图如下:)复位电路整体电路图如下:四、软件设计由于汇编语言繁琐我们采用的是C语言编程源程序及注释如下:#include<regh>#include<intrinsh>时分#defineTYPEunsignedchar#defineHOUR#defineMIN显示状态#defineNORMAL#defineBELLTIME#defineSETTINGN#defineSETTINGC闪烁显示#defineNoMask#defineMaskHour#defineMaskMin#defineMaskAll#defineucharunsignedchar#defineuintunsignedintBitDefinition数码管sbitHourH=P^低电平数码管使能sbitHourL=P^sbitMinH=P^sbitMinL=P^蜂鸣器sbitBuzzer=P^低电平蜂鸣器响键盘sbitSetButton=P^按键定义设置(正常定时显示切换)键时位分位转换键增加键sbitSwitch=P^sbitIncrease=P^sbitStart=P^sbitStop=P^LEDsbitSecLed=P^秒显示低电平点亮sbitClockStartLED=P^闹钟定闹开始HC输入管脚定义sbitSHCP=P^sbitDS=P^sbitSTCP=P^FunctionDefinitionvoiddelayms(void)voidClock()voidDisplay()voidSet()voidRing()voidStopRing()voidShowANum(uchari)voidStartRing()voiddelaykey(void)voidMaskShow(ucharNum,TYPEt)VariableDefinition正常时间ucharhour=ucharmin=ucharsec=uintcount=闹钟定时ucharmp=ucharst=ucharcHour=ucharcMin=模式标示uchardisplayMode=NORMALucharcurrentSelect=HOUR数码管数字显示编码ucharHucharHucharMucharMuchartempucharcodeDSYCODE={xc,xf,xa,xb,x,x,x,xf,x,x,xff}闪烁显示ucharMaskType=NoMaskuintblinkcount=音乐ucharp=uchartemp=ucharjiepai=ucharyindiao=ucharPai=ucharjpLength=音调数组unsignedcharcodemusic={xFF,xFF,xF,x,xf,x,xfa,x,xfa,x,xfb,x,xfb,x,xfc,xc,xfc,x,xfc,xad,xfd,xa,xfd,x,xfd,X,xfd,xc,xfe,x,xfe,x,xfe,x,xfe,x,xfe,xa,xfe,xc,xfe,xe,xff,x,xff,x}音乐编码unsignedcharcodeMmusic={音阶测试,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,两只老虎,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,xff,x结束标记}voidmain(){设置T,TTMOD=xTH=xECTL=xTH=xFTL=xET=ET=EA=TR=设置定时器的优先级PT=ms标准时钟设为高优先级保证计时的准确性PT=顺序执行(主循环)while(){设置何时开启T定时器if(displayMode!=NORMAL||mp==)TR=else{TR=MaskType=NoMask}方法并行Display()Display()Set()StartRing()Ring()StopRing()}}voidClock()interrupt{TH=xECTL=xcountif(mp==){控制音乐节拍if(jpLength<=){jiepai=Mmusic*pjpLength=Pai*jiepai控制每个音调持续多少个节拍pif(Mmusic*p==x)p=重放控制屏幕随乐曲闪烁if(MaskType==NoMask)MaskType=MaskAllelseMaskType=NoMask}}if(count==)控制秒灯闪烁每秒闪一次{SecLed=~SecLed}}voidMaskClock()interrupt{if(mp==)生成音调频率方波{yindiao=Mmusic*pTH=music*yindiaoTL=music*yindiaoBuzzer=~Buzzer}else响铃时屏蔽闪烁显示的功能{if(displayMode==BELLTIME||displayMode==SETTINGC){TH=xFTL=x}else{TH=xFTL=x}blinkcountif(blinkcount>=){blinkcount=if(displayMode==BELLTIME){if(MaskType==NoMask)MaskType=MaskAllelseMaskType=NoMask}elseif(displayMode==SETTINGC||displayMode==SETTINGN){if(currentSelect==HOUR){if(MaskType==NoMask)MaskType=MaskHourelseMaskType=NoMask}if(currentSelect==MIN){if(MaskType==NoMask)MaskType=MaskMinelseMaskType=NoMask}}}}}voidStartRing(){if(Start==){ClockStartLED=st=Start=}}voidRing(){if(st==cHour==hourcMin==min){Buzzer=mp=}}voidStopRing(){if(Stop==){Buzzer=mp=p=ClockStartLED=st=MaskType=NoMask}}voidDisplay(){分析COUNT合成HOUR,MINif(count>=){count=countsecif(sec==){sec=minif(min==){min=hourif(hour==){hour=}}}}显示时间if(displayMode==NORMAL||displayMode==SETTINGN){HourH=HourL=MinH=MinL=H=hourH=hourM=minM=minMaskShow(H,HOUR)HourH=delayms()HourH=MaskShow(H,HOUR)HourL=delayms()HourL=MaskShow(M,MIN)MinH=delayms()MinH=MaskShow(M,MIN)MinL=delayms()MinL=}if(displayMode==BELLTIME||displayMode==SETTINGC){H=cHourH=cHourM=cMinM=cMinMaskShow(H,HOUR)HourH=delayms()HourH=MaskShow(H,HOUR)HourL=delayms()HourL=MaskShow(M,MIN)MinH=delayms()MinH=MaskShow(M,MIN)MinL=delayms()MinL=}}voidMaskShow(ucharNum,TYPEt){if(MaskType==MaskHour){if(t==HOUR)ShowANum()elseShowANum(Num)}elseif(MaskType==MaskMin){if(t==MIN)ShowANum()elseShowANum(Num)}elseif(MaskType==MaskAll){ShowANum()}elseShowANum(Num)}voidShowANum(ucharNum){ucharitemp=DSYCODENum串行输入HCfor(i=i<i){temp<<=DS=CYSHCP=nop()nop()SHCP=}传送至存储寄存器出现在输出端STCP=nop()STCP=nop()STCP=}voidSet(){响铃时显示模式锁定在正常停闹后解除if(mp==){displayMode=NORMAL}显示转换键作用(注:响铃时屏蔽显示转换)if(mp!=SetButton==){delaykey()if(SetButton==){displayModeif(displayMode>=)displayMode=}}设置模式下时分转换键作用if(Switch==(displayMode==SETTINGC||displayMode==SETTINGN)){delaykey()if(Switch==)currentSelect=!currentSelect}设置模式下数值增加键作用if(Increase==displayMode==SETTINGC){delaykey()if(Increase==){if(currentSelect==HOUR){cHourif(cHour>=)cHour=}else{cMinif(cMin>=)cMin=}}}if(Increase==displayMode==SETTINGN){delaykey()if(Increase==){if(currentSelect==HOUR){hourif(hour>=)hour=}else{minif(min>=)min=}}}}voiddelayms(void)精确延时毫秒{unsignedchara,bfor(b=b>b)for(a=a>a)}voiddelaykey(void)按键去抖延时{unsignedchara,bfor(b=b>b)for(a=a>a)}五、总结本次实验我主要负责分配任务和部分程序的编写。在这次实验中特别是在编程方面和电路设计方面为了做这个电子时钟我们组把单片机的书读了许多遍包括单片机结构原理、指令、定时器、中断、子程序调用、LED显示等等同时也自学了许多知识包括如何用C语言来编写单片机程序当然在编程和调试过程中遇到了许多困难。整个实验下来得到许多课堂上体验不到的知识和快乐扩展了思路提高了能力可以说经过这次实验我们对单片机才算真正有了一个深刻的认识。以下便是我们组所焊接的单片机作为成果展示。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/29

单片机 电子时钟实验报告[1]

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利