版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机原理及系统课程设计报告 单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(30)设计报告(30)答辩(20)总成绩(100) 专 业:电气工程及其自动化 班 级: 姓 名: 学 号: 指导教师: 兰州交通大学自动化与电气工程学院2014 年 1 月 13 日基于单片机的作息时间控制器设计1. 课程设计目的(1)进一步熟悉和掌握单片机的最小系统结构及其工作原理。(2)掌握单片机的接口技术和键盘扫描、数码管显示的原理及拓展使用方法。(3)通过课程设计,提高综合运用所学知识的能力,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。2. 设计方案及原理本设计是作息时间控制器,设
2、计其实现的功能主要有:使用4位七段显示器来显示当前的时间,由LED闪动作为秒计数表示,显示格式为“时分”, 并可显示日期,显示格式为“月日”,年份单独显示。由4个按键来作功能设置,可以设置现在的日期、时间及定时设置时间,一旦设置的时间到则作出相应动作:发光二极管闪亮,同时播放音乐。数码管显示模块单片机最小系统按键控制模块闹钟模块 图1 系统方框图3. 硬件设计3.1单片机AT89C52提供以下标准功能:8K字节FLASH闪存,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态
3、逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。3.2 按键控制模块按键设定部分比较简单,因为本系统按键少,所以在设计上采用了独立按键方式,程序的编制上也采用了简单的扫描方式。按键控制模块主要有由四个按键组成:K1、K2、K3、K4、。其中K1的功能是模式切换键;K2的作用是加一;K3的作用是闹钟使能;K4的作用是减一。图2 按键控制模块3.3 数码管显示模块时间显示模块主要由四位七段数码管来显示,配合按键控制模块的校正与设定时间,
4、相应的显示。时间正常显示时,LED每闪动60次,分钟自动加一;每六十分钟小时自动加一;每24小时天自动加一。 图3 数码管显示模块3.4 闹钟模块闹钟模块快的主要功能即闹铃。当设定时间与当前时间一致时,则闹钟自动闹铃进行提示,同时二极管闪亮一分钟后,自动退出响铃状态,若按K3键,闹钟退出响铃状态。图4 闹钟模块4. 软件设计单片机作息时间控制的动作利用时间计时处理来做秒计数,当所设置的时间到了,则发出一阵声响。单片机定时器负责定时的计数,不会因为按键处理而中断时间秒数的增加,时,分,秒数据是存在变量内并写入七段显示器的缓冲区内,而由显示器扫描程序中定时扫描而显示出时间。4.1 主程序设计 在主
5、控程序循环中主要工作为扫描是否有按键,若有按键则应做相应的功能处理,同时也扫描显示器显示时间数据,并检查所设置的时间是否到了,时间计时处理程序是等过了1S后,则更新时间数据,将最新的时,分,秒的数据转换为数字数据并显示在七段显示器上。程序中是这样判断是否过了1S的:设一旧秒数变量,当新旧秒数变量不一样时,则表示已过了1S,要做相关程序时间处理了。图5 主程序流程图4.2 中断子程序中断子程序的主要功能:提供时间基准。当连续中断20次时,即为一秒,此时秒加一;当秒值为60时,分钟加一,同时秒清零;当分钟值为60时,小时加一,同时分钟值清零;当小时为24时,天值加一,同时小时清零;由于每月天数不定
6、,1、3、5、7、8、10、12月为31天,当计数到此类月份时,天值为32时,月值加一,同时天值为1;4、6、9、11月为30天,当计数到此类月份时,天值为31时,月值加一,同时天值为1;如果是闰年,则2月为29天,当计数到此类月份时,天值为30时,月值加一,同时天值为一;如果不是闰年,则2月为28天,当计数此类月份时,天值为29时,月值加一,同时天值为一。当月值为13时,则年值加一,同时月值为一。图6 中断子程序程序流程图4.3 按键扫描子程序按键扫描子程序是程序计中相当重要的一部分。按键扫描子程序的功能是:扫描是否有按键按下,若有键按下,则执行相应功能。5. 系统仿真图6 系统仿真图6.
7、总结本次课程设计是对所学知识的一次综合性运用。在设计的过程中发现了自身知识的不足。这次课程设计收获很多,体会也很深刻,并且对我们所学的东西也产生了浓厚的兴趣。在设计过程中,也学会了很多新的东西,比如一些仿真软件的应用,最典型的就是PROTEUS软件的应用,以及与KEIL软件的联合使用。当然最重要的是学到了关于基本电子设计的一些基本方法。除此之外,我觉得在这次设计的过程中,很多自己解决不了的问题,只有虚心请教别人才能有效的解决问题,我觉得人与人之间的相互帮助很有必要,这样不仅能帮助大家很快的解决问题,还能提高我们每个人的实际水平。在本次设计过程中遇到不少问题,老师在我们做设计的过程中,给予了我极
8、大的帮助,不仅从知识方面引导了我们的设计思路,同时,在人生观上也给了我们不少的启示。在此,我对老师表示深深的谢意。 参考文献1 王思明,张金敏,苟军年等.单片机原理及应用系统设计M.北京:科学出版社,2012年2 吴金.8051单片机实践与应用M.北京:清华大学出版社,2002 年3 杨子文.单片机原理及应用M.西安:西安电子科技大学出版社,2006 年附1 源程序代码#include#define uint unsigned int#define uchar unsigned charuchar code a10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
9、,0x7f,0x6f;/*sbit K1=P14;sbit K2=P15;sbit K3=P16;sbit K4=P17;sbit sd=P36;sbit BEEP=P37;uchar m=0,h=0,sec=0,cnt=0,x,y,qian,bai,shi,ge;uchar set_h=0;uchar set_m=0;uchar month=1;uchar day=5;uchar th0_f;uchar tl0_f;uint year=2014; void delay(uchar t);/延时函数void scankey(void);/按键扫描函数void init(void); /初始化函
10、数void display(void);/显示函数void set_time(void);/设定时间显示辅助函数void set_day(void);/设定日期显示辅助函数void m_choose(void); /月份选择函数void bianhuan(void); /年份显示辅助函数void bianhuan1(void);/时间显示辅助函数changedata(uchar *song,uchar *diao,uchar *jie);/音乐符号串解释函数 void play(uchar *songdata);/奏乐函数/虫儿飞uchar code chongerfei= 33_3_45|3
11、-2-|11_1_23|3.,7_,7_- ,632-,632-,6321_1- ; uchar code freq36*2= 0xA9,0xEF,/00220HZ ,1 /0 0x93,0xF0,/00233HZ ,1# 0x73,0xF1,/00247HZ ,2 0x49,0xF2,/00262HZ ,2# 0x07,0xF3,/00277HZ ,3 0xC8,0xF3,/00294HZ ,4 0x73,0xF4,/00311HZ ,4# 0x1E,0xF5,/00330HZ ,5 0xB6,0xF5,/00349HZ ,5# 0x4C,0xF6,/00370HZ ,6 0xD7,0xF6
12、,/00392HZ ,6# 0x5A,0xF7,/00415HZ ,7 0xD8,0xF7,/00440HZ 1 /12 0x4D,0xF8,/00466HZ 1# /13 0xBD,0xF8,/00494HZ 2 /14 0x24,0xF9,/00523HZ 2# /15 0x87,0xF9,/00554HZ 3 /16 0xE4,0xF9,/00587HZ 4 /17 0x3D,0xFA,/00622HZ 4# /18 0x90,0xFA,/00659HZ 5 /19 0xDE,0xFA,/00698HZ 5# /20 0x29,0xFB,/00740HZ 6 /21 0x6F,0xFB,
13、/00784HZ 6# /22 0xB1,0xFB,/00831HZ 7 /23 0xEF,0xFB,/00880HZ 1 0x2A,0xFC,/00932HZ 1# 0x62,0xFC,/00988HZ 2 0x95,0xFC,/01046HZ 2# 0xC7,0xFC,/01109HZ 3 0xF6,0xFC,/01175HZ 4 0x22,0xFD,/01244HZ 4# 0x4B,0xFD,/01318HZ 5 0x73,0xFD,/01397HZ 5# 0x98,0xFD,/01480HZ 6 0xBB,0xFD,/01568HZ 6# 0xDC,0xFD,/01661HZ 7 /3
14、5 ; /* /音乐符号串解释函数changedata(uchar *song,uchar *diao,uchar *jie) uchar i,i1,j; char gaodi;uchar banyin; uchar yinchang; uchar code jie78=0,12,14,16,17,19,21,23; *diao=*song; for(i=0,i1=0;) gaodi=0; banyin=0; yinchang=4; if(*(song+i)=|) | (*(song+i)= ) i+; switch(*(song+i) case ,: gaodi=-12;i+; break;
15、 case : gaodi=12;i+; break; if(*(song+i)=0) *(diao+i1)=0; *(jie+i1)=0; return; j=*(song+i)-0x30; i+; j=jie7j+gaodi; yinc: switch(*(song+i) case #: i+;j+; goto yinc; case -: yinchang+=4; i+; goto yinc; case _: yinchang/=2; i+; goto yinc; case .: yinchang=yinchang+yinchang/2; i+; goto yinc; *(diao+i1)
16、=j; *(jie+i1)=yinchang; i1+; /* /奏乐函数 void play(uchar *songdata) uchar i,c,j=0; uint n; uchar diaodata40; uchar jiedata40; changedata(songdata,diaodata,jiedata); TR1=1; for(i=0;diaodatai!=0;i+) tl0_f=freqdiaodatai*2; th0_f=freqdiaodatai*2+1; for(c=0;cjiedatai;c+) for(n=0;n24;n+) scankey(); if(y=0) T
17、R1=0; return; display(); TR1=0; for(n=0;n=10)P0&=0x00;delay(20);P2=0xfd;P0=abai;if(x%2=1&cnt=10)P0&=0x00;else if(x=0&cnt=10)P0|=0x80;delay(20);P2=0xfb;P0=ashi;if(x%2=0&x!=0)|x=7)&cnt=10)P0&=0x00;delay(20);P2=0xf7;P0=age;if(x%2=0&x!=0)|x=7)&cnt=10)P0&=0x00;delay(20);void m_choose(void)switch(month)ca
18、se 1:if(day=32)day=1;else if(day=0)day=31;break;case 2:if(year%4=0)if(day=30)day=1;else if(day=0)day=29; elseif(day=29)day=1;else if(day=0)day=28;break;case 3:if(day=32)day=1;else if(day=0)day=31;break;case 4:if(day=31)day=1;else if(day=0)day=30;break;case 5:if(day=32)day=1;else if(day=0)day=31;brea
19、k;case 6:if(day=31)day=1;else if(day=0)day=30;break;case 7:if(day=32)day=1;else if(day=0)day=31;break;case 8:if(day=32)day=1;else if(day=0)day=31;break;case 9:if(day=31)day=1;else if(day=0)day=30;break;case 10:if(day=32)day=1;else if(day=0)day=31;break;case 11:if(day=31)day=1;else if(day=0)day=30;br
20、eak;case 12:if(day=32)day=1;else if(day=0)day=31;break;void set_time(void) qian=set_h/10; bai=set_h%10; shi=set_m/10; ge=set_m%10;void set_day(void) qian=month/10; bai=month%10; shi=day/10; ge=day%10;void bianhuan(void)qian=year/1000;bai=year%1000/100;shi=year%100/10;ge=year%10;void bianhuan1(void)
21、qian=h/10; bai=h%10; shi=m/10; ge=m%10;void scankey(void)if(K1=0)delay(20);if(K1=0) while(K1=0); x+; if(x=3)set_time(); else if(x=5)set_day(); else if(x=7)bianhuan(); else if(x=8)x=0;bianhuan1(); if(K2=0) delay(20);if(K2=0)while(K2=0);switch(x)case 0:break;case 1:h+;if(h=24)h=0;bianhuan1();break;case 2:m+;if(m=60)m=0;bianhuan1();break;case 3:set_h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《高级助产技术》课件-内外生殖器
- 2025年度新能源光伏组件区域代理销售合同4篇
- 二零二五年度购车赠送车载应急包合同(安全出行)2篇
- 二零二五版驾校学员档案管理服务合同3篇
- 二零二五年度冷链食品临时仓储租赁合同4篇
- 汝阳古建施工方案
- 二零二四宇通客车零部件绿色认证及销售合作合同3篇
- 2025年度大数据分析录用合同范本4篇
- 2025年医疗诊断检测PPP合作框架协议
- 二零二四年度三旧改造项目绿色建筑标准咨询服务合同3篇
- MT/T 199-1996煤矿用液压钻车通用技术条件
- GB/T 6144-1985合成切削液
- GB/T 10357.1-2013家具力学性能试验第1部分:桌类强度和耐久性
- 第三方在线纠纷解决机制(ODR)述评,国际商法论文
- 第5章-群体-团队沟通-管理沟通
- 肾脏病饮食依从行为量表(RABQ)附有答案
- 深基坑-安全教育课件
- 园林施工管理大型园林集团南部区域养护标准图例
- 排水许可申请表
- 低血糖的观察和护理课件
- 计量检定校准技术服务合同协议书
评论
0/150
提交评论