




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程设计电子时钟姓 名 专业班级 学 号 指导教师 付文秀 单片机课程设计电子时钟一、 实验目的1掌握单片机的应用并熟悉单片机系统的开发、研制过程。2学习单片机定时器时间计时处理、按键扫描及LED 数码管显示的设计方法。3通过自行设计一个电子时钟,掌握51 单片机基本功能并学会使用。4可以比较灵活的掌握单片机仿真软件Keil 的使用和Proteus 的使用。二、功能实现1时间显示功能由八个数码管显示时间,以24小时进制,显示格式为00-00-00。以开关A、 B 键分别调整小时和分钟。2闹钟设定功能可设定任意闹钟并显示闹铃时间。当设置时间到时蜂鸣器播放生日快乐的音乐,且数码管上显示闹铃时间。按停止键G 使闹铃声停止。3. 秒表计时功能开关D 控制秒表的开始、结束和清零。按键开始计时,再按一次停止计时,再按一次复位。4音乐播放功能。H 键实现音乐(生日快乐歌)的单独播放。G键禁止音乐的播放。三、工作原理及设计思路1系统整体设计框图图1 电路模块框图2主控电路选用STC89C54 型号单片机。它是兼容8051内核的、高速/低功耗的新一代8051单片机,可反复设置12 时钟/机器周期,工作频率为040MHZ,相当于普通8051的080MHZ。内部带有16K 的程序存储空间和1280字节的ROM。由于其内部带有16K 的EEPROM,具有看门狗的功能,所以系统无需在外部增加存储字模数据的存储芯片和专用看门狗芯片,极大地简化了电路的设计,降低了系统的成本。单片机具有ISP功能,不需要专用的编程器编程。单片机的最小系统构成所需要的部分有晶振和两个电容构成震荡电路;一个电容和一个电阻构成复位电路;单片机的31 管脚接高电平,使得单片机可以访问内部的存储器,上电即可工作。图2 MCS-51单片机管脚图3实验中使用交流蜂鸣器,根据I/O 端口输出的方波不同,蜂鸣器就发出不同的声音。使用51 单片机产生电子音乐时,要对声音的特性有所了解。本次实验中在只考虑声音的高低音变化。我们要产生不同频率的声音时,可以让51单片机产生不同频率的方波。在程序中,我们使用一个字节来表示每个音符,其中高四位代表音乐的高低,低四位代表音符的节拍。然后根据乐谱就可以生成十六进制代码。闹铃声由交流蜂鸣器产生,电路如图2,当P1.7输出不同频率的方波,.蜂鸣器便会发出不同的声音。图3 闹铃电路设计4动态显示法 在数码管显示上,采用动态显示。设计的电路使单片机的P0连接到8 个七段数码管显示器。这8个共阳七段显示器的a、b、c、d、e、f和g全部连接在一起,因此P0 输出的数据应该会在8个数码管上都显示出来,并且显示的数字是一样的。但是我们利用P2 的端口来控制这8 位共阳数码管,让他们使用扫描的方式分别显示数字,这样使得P0 输出的数据恰好只会在其中一个数码管上面显示出来。当程序执行的速度很快的时候,由于视觉暂留的关系,我们就会看到8 位数码管上面显示出不同的数字了。利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。具体的电路如下图:图4 显示部分电路四、软件设计图5 主程序流程图软件程序编程如下:#include #define TIMER0_COUNT 0xEC78 /*10000h-(12,000,000/(12*200) */#define TIMES 25unsigned char nn;unsigned char Tab =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /09unsigned char int_time,int_time2,int_time3 ; /中断次数计数变量unsigned char msecond; /毫秒计数变量unsigned char second,second2; /秒计数变量unsigned char minute; /分钟计数变量unsigned char hour; /小时计数变量unsigned char naozhonghour; /闹钟小时计数变量unsigned char naozhongminute; /闹钟分钟计数变量unsigned char naozhongsecond; /闹钟秒钟计数变量unsigned char hour; /小时计数变量unsigned char keyA=0,keyB=0,keyC=0,keyD=0,keyE=0,keyF=0,keyG=0,keyH=0; / 按键初始值,即断开情况下unsigned char i=0,j=0;void singing();void delay(nn); /函数delay()存在文件delay.ccode unsigned song=0x82,0x01,0x81,0x94,0x84,0xB4,0xA4,0x04,0x82,0x01,0x81,0x94,0x84,0xC4,0xB4,0x04, 0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,0x82,0x01,0x81,0x94,0x84,0xB4,0xA4,0x04,0x82,0x01,0x81,0x94,0x84,0xC4,0xB4,0x04, 0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,0x00;code int note=0x0000,0xFB03,0xFB8E,0xFC0B,0xFC43,0xFCAB,0xFD08,0xFD32,0xFD81,0xFDC7,0xFE05,0xFE21,0xFE55,0xFE83,0xFE99,0xFEC0;unsigned char ii=0;unsigned char hi_note,low_note;/*定时器T1 用来播放音乐*/static void timer1_isr(void) interrupt 3 using 2TR1=0;TL1=low_note;TH1=hi_note;TR1=1;P3_6=P3_6;/void delay2(void) /延时函数,延时约0.6ms unsigned char j;for(j=0;j 4) & 0x0f; /取出高阶4 位当成音符的频率if (temp=0) TR1=0; /如果频率是0 就表示休止符else hi_note=notetemp 8; /根据音符的频率得到Timer1 计数值low_note=notetemp & 0x00FF;TR1=1; /启动计时计数器1delay(beat);ii+; while(i=3); /模式按键,3是播放音乐/*函数功能:主函数*/void main (void)TMOD=0x11; /使用定时器T0,T1EA=1; /开中断总允许ET0=1;ET1=1; /允许T1 中断TL0=(TIMER0_COUNT & 0x00FF);TH0=(TIMER0_COUNT 8);TL1=0x00;TH1=0x00;TR0=1;TR1=0;/*定时器2*/RCAP2L=(TIMER0_COUNT & 0x00FF);RCAP2H=(TIMER0_COUNT 8);ET2=1;/*以上为初始化*/int_time=0; /中断计数变量初始化second=0; /秒计数变量初始化minute=0; /分钟计数变量初始化hour=12; /小时计数变量初始化msecond=0;naozhonghour=12;naozhongminute=0;while(1) /if(i=0)DisplaySecond(second); /调用秒显示子程序delay2();DisplayMinute(minute); /调用分钟显示子程序delay2();DisplayHour(hour); /调用时显示子程序delay2();if(i=1)DisplayMsecond(msecond); /调用毫秒显示子程序delay2();DisplaySecond2(second2); /调用秒显示子程序delay2();if(i=2)DisplayMinute(naozhongminute); /调用分钟显示子程序delay2();DisplayHour(naozhonghour); /调用小时显示子程序delay2();DisplaySecond(naozhongsecond); /调用秒显示子程序delay2();if(naozhonghour=hour)&(naozhongminute=minute)&(naozhongsecond=second) i=3;/if(i=3)P0=0x80; /小数点置一其他值0 使得显示出来都为亮的P2=0x00;singing();/*函数功能:定时器T0 的中断服务子程序*/void interserve(void ) interrupt 1 using 1 /using Time0int_time+;if(int_time=200)int_time=0; /中断计数变量清0second+; /秒计数变量加1if(second=60)second=0; /如果秒计满60,将秒计数变量清0minute+; /分钟计数变量加1if(minute=60)minute=0; /如果分钟计满60,将分钟计数变量清0hour+; /小时计数变量加1if(hour=24)hour=0;/如果小时计满24,将小时计数变量清0TL0=(TIMER0_COUNT & 0x00FF);TH0=(TIMER0_COUNT 8); /之前已经开启T0/*按键程序-包含防抖动电路*/if(keyA !=0)keyA-;if (keyA=0 & P1_0=0)minute+;if(minute=60) minute=0; /KEYA minuteelse if (P1_0=0) keyA=TIMES;if(keyB !=0)keyB-;if (keyB=0 & P1_1=0)hour+;if(hour=24) hour=0;else if (P1_1=0) keyB=TIMES; /keyB hourif(keyC !=0)keyC-;if (keyC=0 & P1_2=0)i+;if(i=1)second2=0;msecond=0;if(i=2) ;if(i=3) i=0;else if (P1_2=0) keyC=TIMES; /秒表 清零if(keyD !=0)keyD-;if (keyD=0 & P1_3=0)j+;if(j=1) TR2=1;if(j=2) TR2=0;if(j=3)j=0;second2=0;msecond=0;else if (P1_3=0) keyD=TIMES; / 秒表启动暂停if(keyE !=0)keyE-;if (keyE=0 & P1_4=0)naozhongminute+;if(naozhongminute=60)naozhongminute=0;else if (P1_4=0) keyE=TIMES; /闹钟分钟设置if(keyF !=0)keyF-;if (keyF=0 & P1_5=0)naozhonghour+;if(naozhonghour=24)naozhonghour=0;else if (P1_5=0) keyF=TIMES; /闹钟小时 设置if(keyG !=0)keyG-;if (keyG=0 & P1_6=0)i=0;TR1=0;P3_6=1; /关音乐蜂鸣器else if (P1_6=0) keyG=TIMES;if(keyH !=0)keyH-;if (keyH=0 & P1_7=0)i=3; /全亮响音乐else if (P1_7=0) keyH=TIMES;/*定时器2,秒表的设置*/void Timer2_Server(void) interrupt 5 using 3static unsigned int Timer2_Server_Count;/ 定义静态变量,用来计数T2 定时器的溢出次数(进入本函数的次数)TF2=0; / T2 定时器发生溢出中断时,需要用户自己清除溢出标记,而51 的其他定时器是自动清除Timer2_Server_Count+;if(Timer2_Server_Count=2) /Timer2_Server_Count=0; /中断计数变量清0msecond+; /秒计数变量加1if(msecond=60)msecond=0; /如果秒计满60,将秒计数变量清0second2+; /分钟计数变量加1/*程序结束*/除去主程序之外,还采用了混合编程的方法,在其中加入了一个汇编的延时程序,就是使用了汇编语言延时的准确性,延时的精准时间为0.186635ms。程序的代码如下:void delay(nn) /0.186635ms#pragma asmloop: mov R6,#02loop1: mov R5,#187lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业全称2023综合报告:物理治疗器械企业长期价值评估
- 2025年物联网成果鉴定报告:智能穿戴设备在健康监测中的应用
- 钢结构施工进度管理方案
- 污水处理站除臭与气味控制方案
- 医院信息化建设2025:电子病历系统优化与医疗信息化产业发展前景报告
- 外墙保温工程合同风险防控
- 工业互联网平台计算机视觉技术2025年在智能穿戴设备制造缺陷检测中的应用前景报告
- 良种补贴合同(标准版)
- 大规模绿电制氢技术方案
- 农村房层装修合同(标准版)
- 摄像基础知识入门
- 2025-2030全球PCBA纳米涂层行业调研及趋势分析报告
- 2024年老年脆性骨折护理(最终版本)
- GB/T 45098-2024营运纯电动汽车换电服务技术要求
- 《工程勘察资质标准(征求意见稿)》
- 银行内部培训管理规范制度
- 体检中心沟通技巧课件
- 飞书手把手使用教程培训
- 我们为什么要努力学习-励志主题班会(课件)
- JJF 2182-2024农灌机井取水量计量监测方法
- 工作交接表模板
评论
0/150
提交评论