单片机课程设计电子数字钟.docVIP

  • 5
  • 0
  • 约4.2千字
  • 约 10页
  • 2018-12-28 发布于广东
  • 举报
单片机课程设计电子数字钟.doc

《单片机课程设计》报告 题目: 电子数字钟 专业年级:电子信息工程2012级 学号: 120101011122 姓名: 吴杰 指导教师:张翼 同组设计者:马磊 2014年12月15日 文华学院信息学部 基于STC89C51单片机电子数字钟的实现 [设计题目]电子数字钟 [设计要求] 基本功能:要求利用实验箱上的数码管模拟电子数字钟。显示时、 分、秒,并且随时问跳变。在整点时,启动蜂鸣器。 扩展功能: 校时、校分、校秒(分高低位); 整点报时:蜂鸣器响,数码管停留在整点闪烁一段时间,led 灯间歇性闪3下; 时段控制;6: 00点输出灯亮,蜂鸣器响-起床;6:50输出 灯灭-上课;18: 00-22:59,输出灯亮;23点,寝室准吋熄灯。 [开发工具]硬件:STC89C51开发板 软件环境:Keil uVision4、PZISP自动下载软件 [硬件设计] 电路原理罔 [软件设计] 1.系统软件设计流程 main 教洗移 按键检测程序: 農乐鰣 定时器中断程序: 秒单毛靖零,今单毛加/ 4、单兔綺零,时单兔知/ 时单毛靖零 时阒显示 定讨森肀新CLU 时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间 也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数 溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件 实现O 秒计时是釆用中断方式进行溢出次数的累积,计满20次,即得到秒计 时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。 要求每满1秒,则“秒”单元中的内容加1; “秒”单元满60,则“分” 单元中的内容加1; “分”单元满60,则“时”单元中的内容加1; “时” 单元满24,则将时、分、秒的内容全部清零。 2.程序源代码: #includereg51.h //定义全局变量IO 口 sbil kl=PlA0; //校时的商位 sbit k2=PlAl; //校时的低位 sbit k3=PlA2; //校分的髙位 sbi(k4=PlA3; //校分的低位 sbit k5=PlA4; //校秒的髙位 sbit buzzcr=P3A5; sbit Icd=P3A6; //低电平存效,做时段控制的指示灯 sbit Iedl=P3A7; //低电平有效,做整点报吋的指示灯 //8位数码管共阴,显示范围0-9 unsigned char code tabled = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 定义秒的低位,商位,分的低位,商位,时的低位,商位 unsigned char ml,in2,m3,m4,m5,in6; unsigned char n,pkl,pk2,pk3,pk4,pk5; void delay(int k); //声明延时函数 void button(void); //声明按键函数 //定时器T1的定时时间定为50ms,计数溢出20次即可得到时钟的最小计时单位:秒。 void Tiinel(void) interrupt 3 { TH 1=(65536-500(X))/256; //卨位赋值 TL1=(65536-50000)%256; //低位赋值 n++; //计数累加 if(n==20) //当计数每累加到20时,时间为1秒 { n=0;ml++; //计数清零,秒的低位自加1 if (ml ==10) //抄的低位超过9时,溢出进位到高位 ml=0;m2++;//秒的低位淸零,秒的髙位自加1 ifYm2==6)//秒的髙位为6吋,溢出进位到分的低位 {m2=0;m3++;} //秒的离位清零,分的低位自加1 if(m3==10) //分的低位超过9时,溢出进位到髙位 {m3=0;m4++;} //分的低位淸零,分的商位自加1 if(m4==6) //分的高位为6时,溢岀进位到时的低位 {m4=0;m5++;} //分的岛位清零,时的低位加1 if(m5==10) //时的低位超过9时,溢出进位到时的高位 {m5=0;m6++;} //时的低位淸零,时的髙位自加1 if(m6==2m5==4) //当到达24点的时候淸零 {m6=0;m5=0;} void main() { //初始化 n=0; //计数淸零 m 1 =m2=m3=m4=m5=m6=0; //初始时间状态为 00-00-00 TM()D=0xl(); //开妇定时器T1,采用16位工作方式 TH 1=(65536-50000)/256; // 卨位赋值 TLl=(65536-5(H)00)%256; //低位赋值 EA=1;ET1=1; //开启中断 TR1=1; 开启定时器T1 led=l;//Ied初始状态为灭 led

文档评论(0)

1亿VIP精品文档

相关文档