作息时间系统_第1页
作息时间系统_第2页
作息时间系统_第3页
作息时间系统_第4页
作息时间系统_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

作息时间系统单片机技术和应用课程设计说明书题目:学校作息时刻系统的设计系部:电信系专业:电气信息工程姓名:唐玉红学号:2020044121指导老师:王新辉刘辉谢明华起止时刻:2020.12.20—12.31系(部):电子与通信工程系专业:08级电子信息工程指导教师:王新辉、刘辉、谢明华课题名称学校作息时刻系统的设计设计内容及要求〔1〕课题内容:以单片机为核心,设计一个智能化作息时刻操纵器。该操纵器要求的功能有:按本校作息时刻接通/断开电铃(以蜂鸣器代替);并用液晶屏显示时钟〔能够用数码管显示〕。作息时刻操纵器常用于学校教学楼的时刻操纵,利用单片机内部定时器实现时刻基准定时,显示的内容要求有时、分、秒各两位〔数码管显示能够不显示秒〕,并能调剂小时和分钟。〔2〕要求:完成该系统的硬件和软件的设计,在Proteus软件上仿真通过后,下载到单片机进行硬件验证。最后就课程设计本身提交一篇课程设计说明书。设计工作量1、汇编或C51语言程序设计;2、程序调试;3、在Proteus上进行仿真成功后,进行下载硬件实物验证;4、提交一份完整的课程设计说明书,包括封面,中文摘要,名目,正文〔正文要紧包括:设计原理、程序设计、程序分析、仿真分析、调试过程,调试结果等部分〕,参考文献、设计总结等。进度安排起止日期〔或时刻量〕设计内容〔或预期目标〕备注第一天课题介绍,答疑,收集材料,C51介绍翌日设计方案论证,练习编写C51程序第三天~第六天程序设计第六天~第八天程序调试、仿真第九天~第十天系统测试并编写设计说明书教研室意见年月日系〔部〕主管领导意见年月日长沙学院课程设计鉴定表姓名唐玉红学号2020044121专业08电子班级一班设计题目学校作息时刻系统的设计指导教师王新辉、刘辉、谢明华指导教师意见:评定等级:教师签名:日期:答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名:日期:系〔部〕意见:系主任签名:日期:说明课程设计成绩分〝优秀〞、〝良好〞、〝及格〞、〝不及格〞四类;名目一、设计说明……5二、硬件设计……5三、程序设计……51、使用方法………………52、差不多原理………………63、程序清单………………64、仿真测试………………11四、体会总结……11五、参考文献……12一、设计说明:〔1〕课题内容:以单片机为核心,设计一个智能化作息时刻操纵器。该操纵器要求的功能有:按本校作息时刻接通/断开电铃(以蜂鸣器代替);并用液晶屏显示时钟〔可用数码管显示〕。作息时刻操纵器常用于学校教学楼的时刻操纵,利用单片机内部定时器实现时刻基准定时,显示的内容要求有时、分、秒各两位〔用数码管能够不显示秒〕,并能调剂小时和分钟。〔2〕要求:完成该系统的硬件和软件的设计,在Proteus软件上仿真通过后,下载到单片机进行硬件验证。最后就课程设计本身提交一篇课程设计说明书二、硬件设计如以下图所示。单片机P3.3~P3.5与三个按钮连接,起分别操纵秒钟、分钟和时钟,P2.6与led灯相连代替喇叭,到一定时刻灯亮,P1.0~P1.7接数码管,操纵数码管数字的形成,P2.0~P2.3接数码管的操纵端,操纵数码管的显示。三、程序设计1、使用方法接通电源后,程序开始工作,数码管〝0000〞并开始计时。设置现在时刻按s-set键设置现在的秒钟调整,按一下秒钟加一;按m-set键设置现在的分钟调整,按一下分钟加一;h-set按键设置小时的调整,按一下小时加一。小时超过24小时时自动跳为0,当分钟超过60时自动跳到0设置作息时刻在程序中嵌入了我们学校的一套作息时刻。电铃的响停Proteus仿真运行时会自动判定是否到了打铃时刻即灯亮的时刻,每一次亮灯时时刻为10s过了十秒之后自动熄灭。2、差不多原理用独立式按键来实现分钟、小时、秒钟的可调,用中断和动态显示的方法时刻数码管上时刻的显示,用查询的方法在程序中嵌入一套作息时刻系统。3、程序清单//硬件连接:段选码P1.0~P1.7(a,b,c,d,e,f,g,h,dp),位选码P2.0~P2.3(高到低)//K1--P3.5;K2--P3.4;K3--P3.3;K4--P3.2#include"reg51.h"#defineucharunsignedchar#defineuintunsignedint#defineHidden0x10;//消隐字符在字形码中的位置ucharcodeBitTab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};ucharcodeDispTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharDispBuf[6];//6字节的显示缓冲区//ucharminutevalue;bitSec;//1s到的标记bitMinute;//1m到的标记bitHour;//1h到的标记bitH_up;bitH_down;bitM_up;bitM_down;sbitP2_7=P2^7;//周期测试位sbitp2_6=P2^6;//测试位voidmDelay(unsignedintDelay);ucharled_alarm;//闹铃leducharSecValue;//秒计数ucharMinuteValue;//分计数ucharHourValue;//时计数ucharcodeTH0Val=63075/256;ucharcodeTL0Val=63075%256;//晶振为12M,定时2.5ms定时器初值(运算值为63036,校准值为63075)voidalarm(){//if((minutevalue==0)&&(secvalue==0)&&(hourvalue==8))if((MinuteValue==5)&&(SecValue==0)&&(HourValue==8)){//p2_6=1;//mDelay(10000);//p2_6=0;led_alarm=1;}}voidTimer0()interrupt1{uchartmp;staticuchardCount;//计数器,显示程序通过它得知现在显示那个数码管staticuintCount;//秒计数器constuintCountNum=400;//预置值(400*2.5ms=1minute)P2_7=!P2_7;//外部测试位,用于调整定时器初值TH0=TH0Val;TL0=TL0Val;tmp=BitTab[dCount];//依照当前的计数值取位值P2=P2|0x3f;//P2与00111111相或,将低6位置1P2=P2&tmp;//P2与取出的值相与,将某一位清0tmp=DispBuf[dCount];//依照当前的计数值,取显示缓冲区的待显示值tmp=DispTab[tmp];//取字形码P1=tmp;//送出字形码dCount++;//计数值加1if(dCount==6)//假如计数值为6,归0dCount=0;//以下为秒计数Count++;//计数值加1if(Count>=CountNum)//到达预置计数值{Count=0;//清零Sec=1;//置1秒到标志位SecValue++;//秒值加1if(SecValue>=60){SecValue=0;Minute=1;//置1分到标志位MinuteValue++;//分值加1}if(MinuteValue>=60){Hour=1;//置1小时到标志位MinuteValue=0;HourValue++;//小时值加1}if((((HourValue==8)&&(MinuteValue==0))||((HourValue==8)&&(MinuteValue==45)))&&(SecValue<=10)){p2_6=0;}elsep2_6=1;}}voidInit(){TMOD=0x01;TH0=TH0Val;TL0=TL0Val;ET0=1;//开T0中断EA=1;//开总中断TR0=1;//T0开始运行}voidmDelay(unsignedintDelay)//延时程序,用于键盘消抖{unsignedinti;for(;Delay>0;Delay--){for(i=0;i<124;i++){;}}}ucharKey()//键盘程序,获得键值{ucharKValue;uchartmp;P3|=0x3c;//将P3口接键盘的4位置1KValue=P3;KValue|=0xc3;//将未接的四位置1if(KValue==0xff)//中间4位均为1,无键按下return(0);//返回mDelay(10);//延时10mS消抖KValue=P3;KValue|=0xc3;//再次读键盘if(KValue==0xff)return(0);for(;;){tmp=P3;if((tmp|0xc3)==0xff)//等待按键开释break;}return(KValue);}voidKProce(ucharKValue)//键值处理程序{if((KValue&0x20)==0)//K1H_up=1;if((KValue&0x10)==0)//K2H_down=1;if((KValue&0x08)==0)//K3M_up=1;if((KValue&0x04)==0)//K4M_down=1;}voidmain(){ucharKValue;//存放键值//p2_6=0;if((MinuteValue==5)&&(SecValue==0)&&(HourValue==0)){p2_6=0;}Init();//初始化//alarm();DispBuf[4]=SecValue/10;DispBuf[5]=SecValue%10;for(;;){DispBuf[2]=MinuteValue/10;DispBuf[3]=MinuteValue%10;DispBuf[0]=HourValue/10;DispBuf[1]=HourValue%10;if(Sec)//1s时刻到{DispBuf[4]=SecValue/10;DispBuf[5]=SecValue%10;if(DispBuf[4]==0)//DispBuf[4]=Hidden;//高位0消隐Sec=0;//清除1s到标志位}if(Minute){if(DispBuf[2]==0)//DispBuf[2]=Hidden;//高位0消隐Minute=0;//清除1m到标志位}if(Hour){if(DispBuf[0]==0)//DispBuf[0]=Hidden;//高位0消隐Hour=0;//清除1h到标志位}KValue=Key();//调键盘程序获得键值if(KValue)//该值不等于0{KProce(KValue);//调键盘处理程序}if(H_up)//小时值调整{HourValue++;if(HourValue>=24){HourValue=0;}H_up=0;}if(H_down){HourValue--;H_down=0;}if(M_up)//分值调整{MinuteValue++;if(MinuteVal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论