基于单片机的多功能电子钟课程设计说明书(编辑修改稿)内容摘要:

信 引 脚 定 义数 据 设 定 引 脚 定 义数 据 存 储 地 址显 示 数 据 缓 冲 地 址初 始 化 液 晶 屏 幕显 示 初 始 画 面清 液 晶 屏 幕 显 示 空 白读 取 D S 1 3 0 2 程 序读 D S 1 3 0 2 程 序数 据 分 离 送 显 示 缓 存分 离 数 据 子 程 序日 历 显 示 子 程 序写 指 令 到 液 晶 屏读 数 据 到 液 晶 屏 主程序流程图 山东建筑大学信息与电气工程学院课程设计说明书 16 (2)子程序流程图设计 DS1302 定时器中断子程序流程图 开 始给 定 时 器 再 次 赋 值执 行 年 、 月 、 日 、 时 、 分 、 秒 的 显 示结 束判 断 是 否 计 满 1 8 次秒 加 1 , 判 断 是 否 等 于 6 0分 加 1 , 秒 置 0 , 判 断 分 是 否 等 于 6 0时 加 1 , 分 置 0 , 判 断 时 是 否 等 于 2 4日 加 1 , 时 置 0 , 判 断 该 年 是 否 为 闰 年判 断 日 是 否 到 月 底月 加 1 , 日 置 1 , 判 断 月 是 否 等 于 1 2年 加 1 , 月 置 1 , 判 断 年 是 否 为 1 0 0YNNNNNNNYYYYYYYYN 图 DS1302 中断流程图 山东建筑大学信息与电气工程学院课程设计说明书 17 程序主要实现对 DS1302 写保护、充电,对年、月、日、时、分、秒等寄存器的读写操作。 在读写操作子程序中都执行了关中断指令,因为在串行通信时对时序要求比较高,而且在此是用 I/O 口软件模拟串行时钟脉冲,所以在通信过程中最好保证传输的连续性,不要允许 中断,如图 所示。 LCD1602 流程图 程序主要实现对信息的显示,包括年、月、日、时、分、秒等信息,在这里要注意它的读写控制指令。 其流程图如图 所示。 开 始R W 和 E 都 置 零设 置 点 阵 8 位 数 据 接 口 , 两 行 显 示开 显 示 , 不 显 示 光 标地 址 指 针 加 一 , 画 面 不 一 定刷 新 , 全 部 清 零给 地 址 , 从 第 一 行 开 始 写显 示 第 一 行 数 据给 第 二 行 地 址 , 显 示 第 二 行 数 据结 束 图 LCD1602 初始化流程图 山东建筑大学信息与电气工程学院课程设计说明书 18 总结与致谢 通过这次对《 基于 单片机的电子时钟 设计 》的设计与制作过程,加强了我们动手、思考和解决问题的能力。 在设计过程中我们利用 Altium 软件进行原理图及 PCB 图的绘制,最后再利仿真软件进行检查,看程序是否能显示其功能。 在设计过程中让我进一步深刻的学习各种软件的利用以及各种软件给我们带来的便利。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的辛勤指导 下,终于游逆而解。 同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢。 同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢。 山东建筑大学信息与电气工程学院课程设计说明书 19 参考文献 [1] 马潮 . AVR 单片机嵌入式系统原理与应用实践 [M].北京 : 北京航空航天大学出版社 ,20xx. [2] 杨欣,王玉凤,刘湘黔 . 51 单片机应用从零开始 [M].北京 : 清华大学出版社 ,20xx. [3] 陈在平 . 现场总线及工业控制网络技术 [M].北京 : 电子工业出版社 ,20xx. [4] 沈建华,杨艳琴 . MSP430 系列 16 位超低功耗单片机 原理与实践 [M]. 北北京航空航天大学出版社 ,20xx. [5] 张成伟 . 基于嵌入式 Linix 的 GSM/GPRS 无线通信模块的设计与实现 [D]. 华中科技大学 [6] 赵亮 GPRS 无线网络在远程数据采集中的应用计算机工程与设计 .20xx. 26(9). [7] 马忠梅 .单片机的 C 语言应用程序设计 [M].北京 :北京航空航天大学出版社 ,20xx. [8] 胡汉才 .单片机原理及其接口技术 [M].北京 :清华大学出版社 ,20xx. [9] 雷霖 . 现场总线及工业控制网络技术 [M].北京 : 电子工业出版社 ,20xx. [10] 许洪华 . 现场总线与工业以太网技术 [M]. 北京 : 电子工业出版社 ,20xx. 山东建筑大学信息与电气工程学院课程设计说明书 20 附录一 include include /************************************************************/ define uchar unsigned char define uint unsigned int define TIME (0X1000050000) define FLAG 0XEF //闹钟标志 /************************************************************/ //引脚连接图 sbit CLK=P1^2。 sbit DAT=P1^3。 sbit RST=P1^4。 sbit RS=P1^5。 sbit RW=P1^6。 sbit E=P1^7。 sbit P33=P3^3。 sbit KEY1 = P2^0。 sbit KEY2 = P2^1。 sbit KEY3 = P2^2。 sbit KEY4 = P2^3。 /************************************************************/ //全局变量及常量定义 uchar i=20,j。 uchar DataBuf[16] = {}。 //日期 uchar TimeBuf[16] = {}。 //时间 uchar alarm[2],time[3]。 uchar code Day[]={31,28,31,30,31,30,31,31,30,31,30,31}。 //12 个月的最大日期 (非闰年 ) //闰年月星期表 const unsigned char WeekTab[] = { (3 5) + 31,///1 月 (6 5) + 29,///2 月 (0 5) + 31,///3 月 (3 5) + 30,///4 月 (5 5) + 31,//5 月 (1 5) + 30,//6 月 山东建筑大学信息与电气工程学院课程设计说明书 21 (3 5) + 31,//7 月 (6 5) + 31,//8 月 (1 5) + 30,//9 月 (4 5) + 31,//10 月 (0 5) + 30,//11 月 (2 5) + 31 //12 月 }。 //音律表 uint code table1[]={64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178,65217}。 //发声部分的延时时间 uchar code table2[]={0x82,1,0x81,0xf4,0xd4,0xb4,0xa4, 0x94,0xe2,1,0xe1,0xd4,0xb4,0xc4,0xb4,4,0}。 //闹钟中用的全局变量 uchar th1,tl1。 /************************************************************/ //延时 1ms 函数 delay1ms(uchar time) { uchar i,j。 for(i=0。 itime。 i++) { for(j=0。 jj++)。 } } /************************************************************/ //LCD 控制函数 Enable() { RS=0。 RW=0。 E=0。 delay1ms(3)。 E=1。 } 山东建筑大学信息与电气工程学院课程设计说明书 22 /************************************************************/ //LCD1602 写入字符函数 LCD1602_WriteSChr(uchar i) { P0=i。 RS=1。 RW=0。 E=0。 delay1ms(2)。 E=1。 } /************************************************************/ //LCD1602 写入字符串函数 //入口函数 //uchar data *address : 写入数据首地址 //ucharm:写入字节数 LCD1602_WriteStr(uchar *address,uchar m) { uchar i,j。 for(i=0。 im。 i++,address++) { j=*address。 LCD1602_WriteSChr(j)。 } } /************************************************************/ //LCD 显示 void LCDShow(void) { P0=0XC。 //显示器开、光标关 Enable()。 //P0=0x80。 //写入显示起始地址 //Enable()。 //LCD1602_WriteStr(DataBuf。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。