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

下载本文档

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

文档简介

1、长沙学院单片机技术和应用 课程设计说明书 题目:学校作息时间系统的设计 系部:1信系专业:电气信息工程 一 姓名:唐玉红学号: 2008044121指导老师:王新辉 刘辉谢明华起止时间:2010.12.20 12.31系(部):电子与通信工点1专业:08级电子信息工程指导教师:王新辉、刘辉、谢明华课题名称学校作息时间系统的设计设 计 内 容 及 要 求(1)课题内容:以单片机为核心,设一个智能化作息时间控制器。该控 制器要求的功能有:按本校作息时间接通/断开电铃(以蜂鸣器代替);并用 液晶屏显示时钟(可以用数码管显示)。作息时间控制器常用于学校教学楼的时间控制,利用单片机内部定时 器实现时间基

2、准定时,显示的内容要求有时、分、秒各两位(数码管显示 可以不显示秒),并能调节小时和分钟。(2)要求:完成该系统的硬件和软件的设计,在 Proteus软件上仿真通过 后,下载到单片机进行硬件验证。最后就课程设计本身提交一篇课程设计 说明书。设 计 工 作 量1、汇编或C51语百程序设计;2、程序调试;3、在Proteus上进行仿真成功后,进行T载硬件实物验证;4、提交一份完整的课程设计说明书,包括封而,中文摘要,目录,正文(正 文主要包括:设计原理、程序设计、程序分析、仿真分析、调试过程,调 试结果等部分),参考文献、设计总结等。进 度 安 排起止日期(或时间量)设计内容(或预期目标)备注第f

3、课题介绍,答疑,收集材料,C51介绍第二天设计方案论证,练习编写 C51程序第三天第六天程序设计第六天第八天程序调试、仿真第九天第十天系统测试并编写设计说明书教研室 意见年 月日系(部)主 管领导意 见年 月日长沙学院课程设计鉴定表姓名唐玉红 学号 2008044121专业08电子班级 一班设计题目学校作息时间系统的设计指导教师 王新辉、刘辉、谢明华指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级: 答辩小组长签名: 日期: 教研室总见:教研室主任签名: 日期: 系(部)意见:系主任签名: 日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;目录一、设计说

4、明5二、硬件设计5三、程序设计51、使用方法52、基本原理63、程序清单64、仿真测试11四、经验总结11五、参考文献12一、设计说明:( 1)课题内容:以单片机为核心,设计一个智能化作息时间控制器。该控制器要求的功能有:按本校作息时间接通/ 断开电铃 ( 以蜂鸣器代替) ;并用液晶屏显示时钟(可用数码管显示) 。作息时间控制器常用于学校教学楼的时间控制, 利用单片机内部定时器实现时间基准定时,显示的内容要求有时、分、秒各两位(用数码管可以不显示秒) ,并能调节小时和分钟。( 2)要求:完成该系统的硬件和软件的设计,在Proteus 软件上仿真通过后,下载到单片机进行硬件验证。最后就课程设计本

5、身提交一篇课程设计说明书二、硬件设计如下图所示。单片机 P3.3P3.5 与三个按钮连接,起分别控制秒钟、分钟和时钟, P2.6 与 led 灯相连代替喇叭,到一定时间灯亮, P1.0P1.7 接数码管,控制数码管数字的形成, P2.0P2.3 接数 码管的控制端,控制数码管的显示。 三、程序设计1、使用方法接通电源后,程序开始工作,数码管“ 0000”并开始计时。( 1) 设置现在时间按 s-set 键设置现在的秒钟调整,按一下秒钟加一;按m-set 键设置现在的分钟调整,按一下分钟加一; h-set 按键设置小时的调整,按一下小时加一。小时超过 24 小时时自动跳为0,当分钟超过60 时自

6、动跳到 0( 2) 设置作息时间在程序中嵌入了我们学校的一套作息时间。( 3) 电铃的响停Proteus 仿真运行时会自动判断是否到了打铃时间即灯亮的时间, 每一次亮灯时 时间为 10s 过了十秒之后自动熄灭。2、基本原理用独立式按键来实现分钟、小时、秒钟的可调,用中断和动态显示的方法时间数码管上时间的显示,用查询的方法在程序中嵌入一套作息时间系统。3 、程序清单/ 硬件连接 :段选码 P1.0P1.7(a,b,c,d,e,f,g,h,dp), 位选码 P2.0P2.3( 高到低 )/ K1-P3.5;K2-P3.4;K3-P3.3;K4-P3.2#include "reg51.h&

7、quot;#define uchar unsigned char#define uint unsigned int#define Hidden 0x10; /消隐字符在字形码中的位置uchar code BitTab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; uchar codeDispTab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar DispBuf6; /6/uchar minutevalue ;bit Sec; /1sbit Minute; /1mbit Hour; /1hbit H_up;bit H

8、_down;bit M_up;bit M_down;sbit P2_7=P2A7; sbit p2_6=P2A6; /void mDelay(unsigned int Delay);uchar led_alarm;/uchar SecValue; /uchar MinuteValue; /uchar HourValue; /uchar code TH0Val=63075/256;uchar codeTL0Val=63075%256;/值为 63036, 校准值为 63075)到的标记到的标记到的标记周期测试位 测试位字节的显示缓冲区led秒计数分计数时计数晶振为12M,定时2.5ms定时器初值

9、(计算void alarm()/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;void Timer0() interrupt 1 uchar tmp;static uchar dCount; /示那个数码管static uint Count; /const uint CountNum=400;

10、/P2_7=!P2_7;/TH0=TH0Val;TL0=TL0Val;tmp=BitTabdCount; /计数器 , 显示程序通过它得知现在显秒计数器预置值 (400*2.5ms=1minute)外部测试位,用于调整定时器初值根据当前的计数值取位值P2=P2|0x3f; /P2 P2=P2&tmp; /P2 tmp=DispBufdCount; / 待显示值tmp=DispTabtmp; /P1=tmp; / dCount+; / if(dCount=6) / dCount=0;/ 以下为秒计数 Count+; / if(Count>=CountNum) / Count=0;

11、/ Sec=1; / SecValue+; / if(SecValue>=60) SecValue=0;Minute=1; / MinuteValue+; / if(MinuteValue>=60) Hour=1; /MinuteValue=0;HourValue+; /与 00111111 相或 , 将低 6 位置 1与取出的值相与, 将某一位清0根据当前的计数值, 取显示缓冲区的取字形码送出字形码计数值加 1如果计数值为 6, 归 0计数值加 1到达预置计数值清零置 1 秒到标志位秒值加 1置 1 分到标志位分值加 1置 1 小时到标志位小时值加 1if(HourValue=8

12、)&&(MinuteValue=0)|(HourValue=8)&&(MinuteValue=45)&& (SecValue<=10)p2_6=0; else p2_6=1;void Init() TMOD=0x01;TH0=TH0Val;TL0=TL0Val;ET0=1; /开 T0 中断EA=1; /开总中断TR0=1; /T0开始运行void mDelay(unsigned int Delay) /延时程序,用于键盘消抖 unsigned int i; for(;Delay>0;Delay-) for(i=0;i<124;

13、i+); uchar Key() / uchar KValue;uchar tmp;P3|=0x3c;/KValue=P3;KValue|=0xc3; / if(KValue=0xff) / return(0); / mDelay(10); / KValue=P3;KValue|=0xc3; / if(KValue=0xff) return(0); for(;) tmp=P3;if(tmp|0xc3)=0xff) / break; return(KValue);void KProce(uchar KValue) / if(KValue&0x20)=0) /K1 H_up=1;键盘程序,

14、获得键值将 P3 口接键盘的4 位置1将未接的四位置1中间 4 位均为1,无键按下返回延时10mS?肖抖再次读键盘等待按键释放键值处理程序if(KValue&0x10)=0) /K2 H_down=1;if(KValue&0x08)=0) /K3M_up=1;if(KValue&0x04)=0) /K4 M_down=1;void main()存放键值 uchar KValue; / p2_6=0;if(MinuteValue=5)&&(SecValue=0)&&(HourValue=0) )p2_6=0;Init(); /初始化/ala

15、rm();DispBuf4=SecValue/10;DispBuf5=SecValue%10;for(;)DispBuf2=MinuteValue/10;DispBuf3=MinuteValue%10;DispBuf0=HourValue/10;DispBuf1=HourValue%10;if(Sec) /1s DispBuf4=SecValue/10;DispBuf5=SecValue%10;if(DispBuf4=0)/ DispBuf4=Hidden; /Sec=0; /if(Minute) if(DispBuf2=0)/ DispBuf2=Hidden; /Minute=0; /if(

16、Hour) if(DispBuf0=0)/ DispBuf0=Hidden; /Hour=0; /KValue=Key(); /if(KValue) / 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(MinuteValue>=60)MinuteValue=0;M_up=0;if(M_down) MinuteValue-;M_down=0;时间到高位 0 消隐清除

17、1s 到标志位高位 0 消隐清除1m到标志位高位 0 消隐清除 1h 到标志位调键盘程序获得键值该值不等于0调键盘处理程序小时值调整分值调整4、仿真测试将写好的程序仿真无误后,导入到硬件图的 51 芯片里面进行测试,结果如下:把程序下载到实物上时,一到设定时间蜂鸣器就会叫,表示打铃。四 、经验总结做了两周的课程设计,让人感受颇深,有关于单片机知识的,但更多的是团队的合作。此次单片机的课程设计题目是作息时间系统, 与我们学生的学习生活息息相关, 自己对功能的实现不是很满意, 因为有一个功能没有实现, 通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解, 同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距, 书本上的知识很多都是理想化后的结论, 忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果, 有时结果甚至很差别很大。 通过这次实践使我更深刻的体会到了理论联系实际的重要性, 我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。单片机是很重要的一门课程,老师和一些已经工作了的同学都说过, 如果学好

温馨提示

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

评论

0/150

提交评论