电子时钟实习报告(编辑修改稿)内容摘要:

各种课外的知识。 在以 后的学习实践和工作中,更要学会自学,要有耐心和毅力,知识更新一日千里,要活到老、学到老,在大学课堂上 学的只是方法,至于其中 深层次 的内容,还要靠自己去挖掘,所谓 “师傅领进门,修行在个人”就是这个道理,这才是成年人的学习生活。 今后我 们 的 道路还 很长,我 们要学的东西也很多。 通过本 次实习,我 们深刻地认识到自学的重要性, 我 们要以一种良好的态度去迎接每一次 挫折和挑战。 致谢 首先,感谢我们的指导老师。 本次课程设计是在老师的指导和同学们的帮助下修改完成的。 在此,我们要向他们的细心帮助和指导表示由衷的感谢。 在这段时间里,我们从他们身上不仅学到了许多的专业知识,更感受到他们工作中的兢兢业业,生活中的平易近人。 此外,他们严谨的治学态度和忘我的工作精神值得我们去学习。 非常感谢大家在我们的课程设计中,给予我们极大的帮助,使我们对整个课程设计的思路有了总体的把握,并耐心的帮我们解决了许多实际问题,使我们有了很大的收获。 同时,他们在整个开发过程中提出了许多建设性意见,并 给我们解决了一些专业性问题。 感谢多年来传授我们知识的老师们,更要感谢那些对我们学习上支持和鼓励的人。 同时感谢所有关心帮助过我们的同学、老师和学校。 总之,在以后的学习生活中我们将以加倍的努力,给帮助过我们的学校、老师及同学们以回报。 参考文献 [1]余发山 .单片机原理及应用技术 .江苏:中国矿业大学出版社, 2020. [2]王建校 .51 系列单片机及 C51 程序设计 .北京:科学出版社, 2020. [3]谭浩强 .C 程序设计 .北京:清华大学出版社, 2020. [4]何立民 .单片机高级教程 .北京 :北京航空航天大学出版社, 2020. [5]王福瑞 .单片微机测控系统设计大全 .北京:北京航空航天大学出版社, 2020. 16 附录 (一) 主程序 include include include include include include include include include void wendu1() //温度处理 { temp2=ReadTemperature()。 temp3=temp2/10。 if(temp3100) wendu[7]=temp3/100+39。 039。 //温度百位 else wendu[7]=39。 39。 wendu[8]=temp3%100/10+39。 039。 //温度十位 wendu[9]=temp3%10+39。 039。 //温度个位 wendu[10]=0x2E。 //小数点 wendu[11]=temp2%10+39。 039。 //温度小数点后第一位 DelayMs(100)。 } /****************时间获取函数 **************************/ void LCD_time() //时间、日期、星期和闹钟的处理 { wendu1()。 time1[2]=year/10+39。 039。 time1[3]=year%10+39。 039。 time1[6]=month/10+39。 039。 time1[7]=month%10+39。 039。 time1[10]=date/10+39。 039。 time1[11]=date%10+39。 039。 time2[0]=hour/10+39。 039。 time2[1]=hour%10+39。 039。 time2[4]=minute/10+39。 039。 time2[5]=minute%10+39。 039。 time2[8]=second/10+39。 039。 time2[9]=second%10+39。 039。 // week[4]=day%10+39。 039。 // week[5]=39。 39。 nz[0]=nz_hour/10+39。 039。 nz[1]=nz_hour%10+39。 039。 nz[4]=nz_minute/10+39。 039。 17 nz[5]=nz_minute%10+39。 039。 nz[8]=nz_second/10+39。 039。 nz[9]=nz_second%10+39。 039。 if(nz[0]==time2[0]amp。 amp。 nz[1]==time2[1]amp。 amp。 nz[4]==time2[4]amp。 amp。 nz[5]==time2[5]amp。 amp。 nz[8]==time2[8]amp。 amp。 nz[9]==time2[9]) flag6=1。 if(time2[4]==39。 039。 amp。 amp。 time2[5]==39。 039。 amp。 amp。 time2[8]==39。 039。 amp。 amp。 time2[9]==39。 039。 ) flag7=1。 } void init_interrupt() //中断初始化 { TMOD|=0x01。 //置定时器 0 工作方式 1 EA=1。 //打开全局中断 ET0=1。 //打开定时 0 中断 TMOD |= 0x10。 TH1 = 0x0DC。 TL1 = 0x00。 EA = 1。 ET1 = 1。 } void main() { LCD_init()。 //液晶初始化 LCD_clear()。 //液晶清屏 DS_init()。 //DS1302 初始化 DS_set_type(1)。 //有错 display()。 //初始化显示姓名和学号 time_init()。 //初始化设置时间 init_interrupt()。 //中断初始化设置 while(1) { keyscan_manage()。 //按键扫描获得键值 DS_gettime()。 //获得 DS1302 时间、日期、星期信息 LCD_time()。 //处理 DS1302 信息 LCD_clear()。 switch(flag4) { case 0: //显示当前时间 { LCD_clear()。 LCD_display_time()。 break。 18 } case 1: //闹钟时间到,显示闹钟时间 { LCD_clear()。 LCD_display_nz_time()。 break。 } default: break。 } if(flag6==1) //闹钟到,播放音乐世上只有妈妈好 { unsigned char k,i=0。 flag6=0。 TR0=1。 display_nz()。 while(i100) { //音乐数组长度 ,唱完从头再来 k=MUSIC[i]+7*MUSIC[i+1]1。 //去音符振荡频 率所需数据 Timer0_H=FREQH[k]。 Timer0_L=FREQL[k]。 Time=MUSIC[i+2]。 //节拍时长 i=i+3。 Song()。 } TR0=0。 } if(flag7==1) //整点报时时间到 { uint i=hour,j。 flag7=0。 if(i==0) j=48。 else j=2*i。 if(hour12) { LCD_clear()。 display_nz1()。 //12 点之前,显示“上午” } else { LCD_clear()。 //12 点之前,显示“下午” display_nz2()。 } while((j)!=0) { SPK=!SPK。 //蜂鸣器开始报时,几点钟就报几声 delay(4000)。 } } 19 if(flag11==1) //开启秒表 { TR1=1。 } if(flag11==2) //暂停秒表,纪录时间 { TR1=0。 Led=0。 display_mb()。 } if(flag11==3) //秒表清零 { display_mb1()。 mmiao=0。 miao=0。 fen=0。 } } } /* 定时器 0 中断 */ void TIM0_ISR() interrupt 1 //控制音乐播放 { TR0=0。 SPK=!SPK。 TH0=Timer0_H。 TL0=Timer0_L。 TR0=1。 } /* 定时器 1 中断 */ void Timer1Interrupt(void) interrupt 3 //秒表定时 { TR1=0。 // Led=0。 TH1 = 0x0DC。 TL1 = 0x00。 mmiao++。 if(mmiao==100) { mmiao=0。 miao++。 if(miao==60) { miao=0。 fen++。 } } 20 mb[4]=fen/10+39。 039。 mb[5]=fen%10+39。 039。 mb[7]=miao/10+39。 039。 mb[8]=miao%10+39。 039。 mb[10]=mmiao/10+39。 039。 mb[11]=mmiao%10+39。 039。 display_mb()。 TR1=1。 } (二) LCD 液晶显示程序 ifndef _LCD12864_H_ define _LCD12864_H_ /******************************************* 函数名称: Delay_1ms 功 能:延时约 1ms 的时间 参 数:无 返回值 :无 ********************************************/ void Delay_1ms(void) { uchar i。 for(i = 150。 i 0。 i)。 } /******************************************* 函数名称: Delay_Nms 功 能:延时 N 个 1ms 的时间 参 数: n延时长度 返回值 :无 ********************************************/ void Delay_Nms(uint n) { uint i。 for(i = n。 i 0。 i) Delay_1ms()。 } /************选屏 *****************/ void LCD_choose(uchar cs) { switch(cs) { case 0:cs1=0。 cs2=1。 break。 case 1:cs1=1。 cs2=0。 break。 case 2:cs1=0。 cs2=0。 break。 default: break。 21 } } /**************忙检查 ***************************/。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。