基于单片机的可编程作息时间控制器的设计内容摘要:

16 第五章 总结 此次课程设计为准备近两个多月,是在肖辉老师的指导下做出来的,我从中获益匪浅。 本课程设计是《单片机原理与应用技术》的综合训练。 从选题、确定方案、设计原理图、仿真、焊接的过程中,我们学 到了很多,这对我们来说是一次将课本所学知识应用到具体实践中的一次考验。 虽然在这个过程中我们遇到了很多困难,编写程序需要一步一步并认真的调试,一个小小的错误都可导致整个程序的不可用,硬件仿真需要考虑硬件与软件的连调,才能保证硬件与软件协同工作。 我们通过查阅资料、同学的帮助,最终基本解决这些问题,从而基本完成了课程设计的要求。 在这个过程中我们学会了发现问题、分析问题并最终解决问题,为我以后的工作和学习打下了一定的基础。 此次课程设计,也使我们发现了自己的缺点,课本所学知识与实践是有一定距离的,我们不仅要学好科 学文化知识,更要积极的参与实践学习,真样才能有更大的收获,真正学到知识,要把理论与实际相结合,从而成为真正有用的人。 通过校园作息时间控制系统的设计,让我体会到单片机使用的广泛性以及其重要性,单片机技术的出现给现代控制领域带来了一项新的改变。 在此次的设计中我遇到了很多的问题:首先,在查找资料的时候,对于校园作息时间控制系统这个方面 AT89C51 的资料非常多,而关于单片机 PIC16F877A 这个方面的资料很有限。 其次,在建立总体框架的时候,总体思路不够明确,从而导致框架结构建造缓慢。 最后,硬件的实现还是有一定困 难。 总之这次毕业设计让我把理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面全面的培养学生的全面素质。 这些在我今后的学习和工作当中都会有很大的帮助。 四年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。 我不是最出色的学生,但我所付出的并不少,我学会了基本的思考方式,我坚信路要一步一步的走。 17 文献阅读 [1]余发山 .王福忠编著 . 单片机原理及应用技术 [M].徐州:中国矿业大学出版 社 ,2020 年 . [2]李光飞 .单片 机 C 程序设计指导 [M].北京 :北京航空航天大学出版社 ,2020 年 1 月 [3]耿长清 .单片机应用技术 [M].化学工业出版社 ,2020 年 8 月 . [4]胡健 ,刘玉宾 ,朱焕立 .单片机原理及接口技术实践教程 [M].机械工业出版社 ,2020 年 . [5]黄仁欣 .单片机原理及应用技术 [M].清华大学出版社 ,2020 年 3 月 . [6]刘守义 .单片机应用技术 [M].电子科技大学出版社 ,2020 年 . [7]李群芳 ,张士军 ,黄建 .单片微型计算机与接口技术 [M].电子工业出版社 . [8]彭为 ,黄科 ,雷道仲 .单片机典型系统设计实例讲解 [M].2020 年 . [9]何立民 .单片机应用技术选编 [M].北京 :北京航空航天大学出版社 ,2020 年 . [10]杨刚 ,周群 .电子系统设计与实践 [M].北京 :电子工业出版社 ,2020 年 . 致谢 此次论文是在我的指导老师,肖辉老师的亲切关怀与细心指导下完成的。 从课题的选择到论文的最终完成,肖辉老师始终都给予了细心的指导和不懈的支持,在他的身上,我们可以感受到一个学者的严谨和务实,这些都让我们获益匪浅,并且将终生受用无穷。 毕竟“经师易得,人师难求”,希望借此机会向肖辉老师表示最衷心的感谢。 感谢学院为我提 供良好的做毕业设计的环境,最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友,以及在设计中被我引用或参考的论著的作者 18 附件 1:硬件图 19 附 2:源程序代码 include //调用 头函数 __CONFIG(XT amp。 WDTDIS amp。 LVPDIS)。 //设置单片机工作模式 define uchar unsigned char //无符号字符型定义符重说明 define uint unsigned int //无符号整型定义符重说明 define lcd_rs RA1 //LCD 端口定义 define lcd_rw RA2 define lcd_e RA3 define i_o RB5 //DS1302 端口定义 define sclk RB6 define rst RB7 define K1 RB1//键盘端口定义 define K2 RB2 define K3 RB3 uchar test=7,sw[]={5,5,2,9,1,0,3}。 uchar presetTime[]={0x00,0x30,0x09,0x13,0x05,0x03,0x21,0x00}。 //初始时间日期 秒、分、小时、年、月、星期 、日 存放表 uchar dateTime[7]。 uchar bell_n=3,yuzhi[][3]={0x00,0x30,0x01,0x15,0x30,0x02,0x30,0x30,0x03}。 const uchar digit[]={:}。 //定义字符数组显示数字 const uchar weekstr[][4]={SUN,MON,TUE,WEN,THR,FRI,STA}。 //定义字符数组显示 uchar time_rx @ 0x30。 //定义接收寄存器 static volatile bit time_rx7 @ (unsigned)amp。 time_rx*8+7。 //接收寄存器的最高位 void delay(uchar n)//延时函数 { uchar i。 for(i=0。 i50。 i++)。 } void port_init() //端口初化函数 { // ADCON1=0X07。 //设置 A 口为普通 I/O 口 TRISA=0X00。 //设置 A 口为输出 TRISB=0X1f。 //设置 A 口为输出 TRISC=0X00。 //设置 C 口为输出 20 TRISE0=0。 } //DS1302 时间控制有关函数 uchar time_read_1() //读一个字节函数子程序 { int j。 //设置循环变量 TRISB5=1。 //设置数据口方向为输入 for(j=0。 j8。 j++) //连续读取 8bit { sclk=0。 //拉低时钟信号 time_rx=time_rx1。 //接收寄存器右移 1 位 time_rx7=i_o。 //把接收到的数据放到接收寄存器的最高位 sclk=1。 //拉高时钟信号 } TRISB5=0。 //恢复数据口方向为输出 sclk=0。 //拉低时钟信号 return(time_rx)。 //返回读取到的数据 } void time_write_1(uchar time_tx) //写一个字节数据函数子主程序 { int j。 //设置循环变量 for(j=0。 j8。 j++) //连续写 8bit { i_o=0。 //先设置数据为 0 sclk=0。 //时钟信号拉低 if(time_txamp。 0x01) //判断待发送的数据位是 0 或 1 { i_o=1。 //待发送数据位是 1 } time_tx=time_tx1。 //待发送的数据右移 1 位 sclk=1。 //拉高时钟信号 } sclk=0。 //写完一个字节,拉低时钟信号 } void get_time() //读取时间函数子程序 { int i。 //设置循环变量 rst=1。 //使能 DS1302 time_write_1(0xbf)。 //发送多字节读 取命令 for(i=0。 i7。 i++) //连续读取 7 个字节数据 { dateTime[i]=time_read_1()。 //调用读取 1 个字节数据的函数 21 delay(100)。 } rst=0。 //复位 DS1302 } void set_time() //设置时间函数子程序 { int i。 //定义循环变量 rst=1。 //使能 DS1302 time_write_1(0xbe)。 //时钟多字节写命令 for(i=0。 i8。 i++) //连续写 8 个字节数据 { time_write_1(presetTime[i])。 //调用写一个字节函数 delay(100)。 } rst=0。 //复位 } void ds1302_init() //DS1302 初始化函数子程序 { sclk=0。 //拉低时钟信号 rst =0。 //复位 DS1302 rst=1。 //使能 DS1302 time_write_1(0x8e)。 //发控制命令 time_write_1(0)。 //允许写 DS1302 rst=0。 //复位 } //LCD1602 显示控制有关函数 void lcd_writeComd(uchar cmdChar) //写命令函数 { PORTC=cmdChar。 lcd_rs=0。 //该字节数据为命令,而 不是数据 lcd_rw=0。 //此次操作为写,而不是读 lcd_e=0。 //拉低使能信号 delay(50)。 //保持使能信号为低一段时间 lcd_e=1。 //拉。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。