- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计厨房提醒器
信息与电气工程学院课程设计说明书(2015/2016学年第二学期)课程名称:单片机应用技术课程设计题目:厨房时间提醒器专业班级:电气工程及其自动化1303班学生姓名:***学号: *********** 指导教师: **************设计周数:两周设计成绩: 2016年6月24日1. 课程设计目的厨房提醒器是一个在日常生活中很常见的器件,市面上的厨房提醒器千奇百怪,但其原理基本上是统一的,我们可以利用这个原理来自己动手设计一个厨房提醒器。原始数据及主要任务:采用AT90c52作为控制单元,实现厨房提醒器的设计设计键盘输入电路;设计显示电路;合理分配地址,编写系统程序;利用protel设计硬件电路原理图,使用proteus和keil4软硬件联机调试。2. 课程设计正文2.1主要技术要求:设置提醒器的“开始”键、“清除”键、“分加1”键、“分减1”键和“秒加1”键、“秒减1”键。刚通电时和按下“清除”键时,均可使显示器显示——0:00。按下开始键,则按照设定的时间减1定时。当显示器再次显示为00:00时则蜂鸣器提醒定时到。3个数码管分别用于显示分位、秒十位和秒个位。2.2 软件设计用protel99se画原理图和pcb图,用keil4编辑程序,用proteus仿真。2.2.1系统设计⑴Protel99se原理图设计(2)系统keil4编码程序#include reg51.h#define uchar unsigned char uchar ds_code=0,second2=0,second1=0;char minute = 0;char second = 0;uchar time_temp = 0;sbit DS0 = P1^0;//位选sbit DS1 = P1^1;sbit DS2 = P1^2;sbit SPEAKER = P1^4;//蜂鸣器void delay(uchar x) //延时函数{ unsigned int a,b; for(a=x;a0;a--) for(b=110;b0;b--);}void second_div(void)//读秒函数{second2 = second/10;//取秒十位second1 = second%10;//取秒个位}void Key(void)//按键函数{P2 = 0xff;if(P2!=0xff){delay(200);if(P2!=0xff){if(P2==0xfe) //开始计时按键按下{TR1 = 1;}if(P2==0xfd)//清除按键按下{TR1 = 0;minute = 0;second = 0;time_temp = 0;SPEAKER = 1;}if(P2==0xfb)//分个位加一按键按下{minute++;if(minute9) minute = 0;}if(P2==0xf7)//分个位减一按键按下{minute--;if(minute0) minute = 9;}if(P2==0xef)//秒个位加一按键按下{second++;if(second59) second = 0;second_div();}if(P2==0xdf)//分个位减一按键按下{second--;if(second0) second = 59;second_div();}while(P2!=0xff);}}}void main(void)//主函数{SPEAKER = 1;TMOD = 0x11;//定时器方式0,1TH0 = (65536-5000)/256;//装载计时时间TL0 = (65536-5000)%256;TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;EA = 1;//开总中断ET0 = 1;//开定时器0中断TF0 = 0;//定时器0中断溢出位置0TR0 = 1;//开定时器0ET1 = 1;//开定时器1中断TF1 = 0;//定时器1中断溢出位置0while(1){Key();}}void Timer_0(void) interrupt 1{ET0 = 0;//关定时器0中断switch(ds_code)//位选控制{case 0:P1 = (P10xf0)|0x0e;P0 = minute;break;case 1:P1 = (P10xf0)|0x0d; P0 = second2;break;case 2:P1 = (P10xf0)|0x0b; P0 = second1;break;default:break;}ds_code++;//定时器1计数次数if(ds_code2){ds_code = 0;}TH0 = (655
文档评论(0)