单片机毕业设计电子钟_第1页
单片机毕业设计电子钟_第2页
单片机毕业设计电子钟_第3页
单片机毕业设计电子钟_第4页
单片机毕业设计电子钟_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、i 目录 摘要摘要.1 1 第一章第一章 绪论绪论.2 2 第二章第二章 设计要求与方案论证设计要求与方案论证.3 3 2.1 设计要求.3 2.1.1 基本要求.3 2.1.2 发挥部分.3 2.2 系统基本方案选择和论证.3 2.2.1 芯片的选择.3 2.2.2 显示模块选择方案和论证.3 2.2.3 时钟信号的选择方案和论证.4 2.3 电路设计最终方案决定.4 第三章第三章 系统的硬件设计与实现系统的硬件设计与实现.5 5 3.1 数字钟电路设计框图.5 3.2 系统硬件概述.5 3.3 硬件电路结构的设计.5 3.3.1 单片机主控制模块的设计.5 3.3.2 显示模块的设计.6

2、3.3.3 电路原理及其说明.7 3.3.4 led 原理说明.9 3.3.5 开关模块说明.11 第四章第四章 系统的软件设计系统的软件设计.1212 4.1 程序流程框图.12 4.2 lcd 的初始化与及显示程序.13 第五章第五章 系统调试系统调试.1515 5.1 硬件调试.15 5.2 软件调试.15 结论结论.1616 致谢致谢.1717 参考文献参考文献.1818 附录附录.1919 四川信息职业技术学院毕业设计说明书 (论文) 第 1 页 摘要 数字钟是对.年、月、日、周、时、分、秒,数字显示及到时提醒的计时装置,广泛 用于个人家庭,车站, 码头办公室等公共场所,成为人们日常

3、生活中不可少的必需品, 由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超 过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。 最常见的数字钟通常使用单片机模块控制,一种用单片机原理实现时、分、秒计 时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更 长的使用寿命,因此得到了广泛的使用。 本次设计就是通过用单片机为主控制,通过电路仿真而实现。首先使用 proteus 7 professional 软件进行绘制硬件电路图,用 keil 软件进行编程与调试, 最终生成 hex 文件,传入单片机内部,从而实现仿真效果。 此次设计的多功能数字时钟

4、具有显示年、月、日、周、时、分、秒及对各日期与时 间的调整、校正功能。整个时钟通过简易的键盘来实现各个功能,界面简洁、直观、 易于操作。 关关键词键词:数字钟、仿真、单片机 四川信息职业技术学院毕业设计说明书 (论文) 第 2 页 第一章 绪论 20 世纪末,单片机技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透 了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时 也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们 来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的 事情,当事情不是很重要的时候,这种遗忘无伤大雅。但

5、是,一旦重要事情,一时的耽 误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着 cmos 化、低 功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单 片机的主要发展趋势。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和 设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通 过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制 技术的一次革命。 单片机模块中最常见的是数字时钟,数字时钟是一种用单片机原理实现时、分、 秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械

6、装置,具有 更更长的使用寿命,因此得到了广泛的使用。 数字时钟是采用单片机原理实现对.年、月、日、周、时、分、秒,数字显示及到时 提醒的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生 活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得 数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便, 而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程 序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时 电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及 扩大

7、其应用,有着非常现实的意义。 四川信息职业技术学院毕业设计说明书 (论文) 第 3 页 第二章 设计要求与方案论证 2.1 设计要求 2.1.1 基本要求 1 设计能支持年月日星期时分秒的时钟,时钟要具有时间调整功能。 2 该设计要用 keil 软件进行编程与调试,利用 proteus 7 professional 软件 进行绘制硬件电路图且进行仿真。 2.1.2 发挥部分 1 闹钟时间精度。 2 时钟功耗小于 0.5ma/5v。 2.2 系统基本方案选择和论证 本时钟的设计具体有两种方法。一是通过单纯的数字电路来实现;二是使用 单片机来控制实现。本次设计选取了较为简单的单片机控制;而选择这一

8、方法后还 要进行各个芯片的选择。以下是我在这次设计中所用的方案。 2.2.1 芯片的选择 方案一:采用 at89c51 芯片,其为高性能 cmos 8 位单片机,该芯片内含有 4k bytes 的可反复擦写的只读程序存储器(perom)、128 bytes 的随机存取数据存储器 (ram)、 32 位可编程 i/o 口线、2 个 16 位定时/计数器、6 个中断源、可编程串行 uart 通道及低功耗空闲和掉电模式,但是由于 at89c51 芯片可擦写的空间不够大,且 中断源提供的较小,为防止运行过程中出现不必要的问题,我们不选用 at89c51。 方案二:采用 at89c52 芯片,它除了具备

9、 at89c51 的所有功能与部件外,其最大 的优势就是 at89c52 提供了 8k 字节可擦写 flash 闪速存储器空间、8 个中断源、及 256*8 字节内部存储器(ram),解决了我们对可反复擦写的 flash 闪速存储器空间大 小与中断源的不够问题的担心。 2.2.2 显示模块选择方案和论证 方案一:采用 led 数码管显示,显示较为清楚,但是由于设计要求时钟功能比较 四川信息职业技术学院毕业设计说明书 (论文) 第 4 页 重要,因此用如用 led 进行显示会使得硬件电路较为复杂,且在软件实现上也较难, 为实现功能带来了一定的困难。 方案二:采用 lcd,电路比较简单,且在软件设

10、计上也相对简单,具有低功耗功能, 能够满足设计最优的要求。因此,在设计中我采用的显示模块是 lcd 显示。 2.2.3 时钟信号的选择方案和论证 方案一:直接采用单片机定时计数器提供的秒信号,使用程序实现年、月、日、周、 时、分、秒计数。采用此种方案可减少芯片的使用,节约成本,实现的时间误差较小, 但程序设计较为复杂。 方案二:采用 ds1302 时钟芯片实现时钟, ds1302 芯片是一种高性能的时钟芯片, 可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,256 位 的 ram 作为数据暂存区,工作电压 2.5v5.5v 范围内,2.5v 时耗电小于 300na。且硬

11、 件电路连接较为简单,程序设计容易实现。 2.3 电路设计最终方案决定 综上各方案所述,对此次数字时钟的方案选定为: 采用 at89c52 作为主控制系统; 并由其定时计数器提供时钟; lcd 作为显示电路,来实现功能。 四川信息职业技术学院毕业设计说明书 (论文) 第 5 页 第三章 系统的硬件设计与实现 3.1 数字钟电路设计框图 lcd 动态扫描 显示模块 at89c52 主控制器 开关调节模块 晶振电路 模块 复位电路 图(3-1)电路设计框图 3.2 系统硬件概述 该电路是由 at89c52 单片机为控制核心,具有在线编程功能,低功耗,能在 3v 超 低压工作;时钟电路也由 at89

12、c52 单片机提供,减少芯片的使用,节约成本,它可以 对年、月、日、周、日、时、分、秒进行计时,具有闰年补偿功能。时间显示部份采用液 晶 lm016l(lcd)。 3.3 硬件电路结构的设计 3.3.1 单片机主控制模块的设计 此次单片机数字时钟的设计采用 at89c52 为主控制芯片,并由其定时器提供时 钟,利用 lcd 进行时间按显示。下图为用 proteus 软件画的原理图: 四川信息职业技术学院毕业设计说明书 (论文) 第 6 页 图(3-2)仿真电路图 3.3.2 显示模块的设计 如图(3-4)所示,该设计采用液晶显示装置即把时钟信号以及温度信号同时显示 在液晶显示器上,不仅结构简单

13、清新可见,而且省电也容易控制。数据的传输采用 p0 口进行控制, 其引脚 vss 接地,vee 接 vcc,rs 和 rw、e 是显示器的控制端分别由单 片机的引脚 p1.0、p1.1、p1.3 进行控制。而 vdd 是作为液晶显示器的灰度调节引脚, 接一变阻器来改变其显示的清晰度。 图(3-3) lm016l 液晶显示器 3.3.3 电路原理及其说明 1 主控制芯片 at89c52 的原理及说明 at89c52 是美国 atmel 公司生产的低电压,高性能 cmos8 位单片机,片内含 8k 四川信息职业技术学院毕业设计说明书 (论文) 第 7 页 bytes 的可反复擦写的只读程序存储器(

14、perom)和蔼可亲 256 bytes 的随机存取数据 存储器(ram),器件采用 atmel 公司的高密度、非易失性存储技术生产,与标准 mcs- 51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器(cpu)和 flash 存储 单元,功能强大 at89c52 单片机适合于许多较为复杂控制应用场合。 图(3-4)at89c52 引脚 2 主要性能参数: 与 mcs-51 产品指令和引脚完全兼容 8k 字节可重擦写 flash 闪速存储器 1000 次擦写周期 全静态操作:0hz24mhz 三级加密程序存储器 2568 字节内部 ram 32 个可编程 i/o 口线 3

15、个 16 位定时/计数器 8 个中断源 可编程串行 uart 通道 低功耗空闲和掉电模式 3 引脚功能 vcc(40):电源电压 gnd(20):接地 p0 口(32-39):p0 口是一个 8 位双向 i/o 接口,也即地址/数据总线复用口。作为 四川信息职业技术学院毕业设计说明书 (论文) 第 8 页 输出口用时,每位吸收电流的方式驱动 8 个 ttl 逻辑门电路,对端口 p0 写“1”时,可 作为高阻抗输入端用。在访问外部数据存储器时,这组口线分时转换地址(低 8 位)和 数据总线复用。 p1 口(1-8):p1 是一个带内部上拉电阻的 8 位双向 i/o 口,p1 的输出缓冲级可驱 动

16、(吸收或输出电流)4 个 ttl 逻辑门电路,对端口写“1”通过内部的上拉电阻把端口 拉到高电平时,此时可作输入口。作为输入品使用时,因为内部存在上拉电阻,某个 引脚被外部信号拉低时会输出一个电流。与 at89c51 不同之处是,p1.0 和 p1.1 还可 以分别作为定时/计数器 2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex)。 p2 口(21-28):p2 是一个带有内部上拉电阻的 8 位双向 i/o 口,p2 的输出缓冲级 可驱动(吸收或输出电流)4 个 ttl 逻辑门电路,对端口 p2 写“1”,通过内部的上拉电 阻把端口拉到高电平时,此时可作输入口。作为输入品使用时

17、,因为内部存在上拉电 阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或 16 位地 址的外部数据存储器(例如执行 movx dptr 指令)时,p2 口送出高 8 位地址数据。在 访问 8 位地址的外部数据存储器时,p2 口输出 p2 锁存器的内容。 p3 口(10-17):p3 是一组带有内部上拉电阻的 8 位双向 i/o 口,p3 口输出缓冲级 可驱动(吸收或输出电流)4 个 ttl 逻辑门电路,对端口 p3 写“1”时,它们被内部上拉 电阻拉高并可作为输入端口,此时,被外部拉低的 p3 口将用上拉电阻输出电流。p3 口除了作为一般的 i/o 口线外,更重要的用途是它的第

18、二功能,如下表所示: 端口引脚第二功能 p3.0rxd(串行输入口) p3.1txd(串行输出口) p3.2int0(外中断 0) p3.3int1(外中断 1) p3.4t0(定时/计数器 0) p3.5t1(定时/计数器 1) p3.6wr(外部数据存储器写通道) p3.7rd(外部数据存储器读通道) 表 3-1 p3 口的第二功能 rst(9):复位信号输入端。当振荡器工作时,rst 引脚出现两个机器周期以上高电 平将使单片机复位。 四川信息职业技术学院毕业设计说明书 (论文) 第 9 页 ale/prog(30):地址锁存有效信号输出端。当访问片外程序存储器或数据存储器 时,ale(地

19、址锁存允许)输出脉冲用于锁存地址的低 8 位字节,一般情况下,ale 仍以 时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的, 要注意的是:每当访问外部数据存储器时将跳过一个 ale 脉冲。 psen(29):程序存储允许输出端。是片外程序存储器的读选通信号,当 at89c52 由外部程序存储器取指令(或数据)时,每个周期两次 psen 有效,即输出两个脉冲。在 此期间,当访问外部数据存储器,将跳过两次 psen 信号。 ea/vpp(31):外部访问允许。欲使 cpu 仅访问外部程序存储器(地址为 0000h ffffh),ea 端必须保持低电平(接地),需注意

20、的是:如果加密位 lb1 被编程,复位时 内部会锁 ea 端状态。如 ea 端为高电平(接 vcc 端),cpu 则执行内部程序存储器中的 指令。flash 存储器编程时,该引脚加上+12v 的编程允许电源 vpp,当然这必须是该 器件是使用 12v 编程电压 vpp。 xtal1(19):振荡器反相放大器的及内部时钟发生器的输入端。 xtal1(18):振荡器反相放大器的输出端。通过 xtal1、xtal2 外接晶振后,即可构 成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。 4 特殊功能寄存器 在 at89c52 片内存储器中,80h-ffh 共 128 个单元为特殊功能寄存器(sfr

21、),其中 包括 b 寄存器、累加器、程序状态寄存器(psw)、定时/计数器控制、中断优级控制寄 存器(ip)、p3 口锁存寄存器、中断允许控制寄存器(ie)、串行口控制寄存器等。它们 可运用来设置片内电路的运行方式,记录电路的运行状态,mcs-51 单片机对特殊功能 寄存器采取与片内 ram 统一编址的方法,可按字节地址直接寻址。在已有的基础上 at89c52 与 at89c51 相比还提供了两个定时/计数器。定时/计数器 2 的控制和状态位 位于 t2con 与 t2mod,该功能的数在自动装载的情况下可装入到寄存器中,提高了效 率。 3.3.4 lcd 原理说明 在实际应用中,用户很少直接

22、设计 lcd 显示器驱动接口,一般是直接使用专用 的 lcd 显示驱动器和 lcd 显示模块。其中,lcd 显示模块 lcm(liquid crystal dis play module)是把 lcd 显示器、背景光源、线路板和驱动集成电路等部件构成一个 四川信息职业技术学院毕业设计说明书 (论文) 第 10 页 整体,作为一个独立的部件使用,具有功能较强、易于控制、接口简单等优点,在 单片机系统中应用较多。其内部结构如图 2-8 所示。lcd 显示模块只留一个接口与 外部通信。显示模块通过这个接口接收显示命令和数据,并按指令和数据的要求进 行显示。外部电路通过这个接口读出显示模块的工作状态和

23、显示数据。lcd 显示模 块一般带有内部显示 ram 和字符发生器,只要输入 ascii 码就可以进行显示。lcd 显示模块按功能显示可分为:lcd 段式显示模块、lcd 字符型显示模块、lcd 图形显 示块三类。液晶显示器因其功耗低、重量轻而成为便携式应用中的主流显示技术。 这里所用的字符型液晶模块是一种用 5x7 点阵图形来显示字符的液晶显示器,根据 显示的容量可以分为 1 行 16 个字、2 行 16 个字、2 行 20 个字等等。液晶显示有点 振式和字符式两种,在这里采用字符式液晶显示器 1602 来实现显示电路的功能。 lcd 驱动器 lcd 显示器 lcd 控制器 vss vdd

24、vl rs r/w e d0-d7 图(3-4)lcd 显示电路 由于 1602 液晶显示器是本身带有驱动模块的液晶屏,它只有并口线和一些控制 线,与单片机的连接有两种不同的方法,直接访问方式和间接访问方式。直接访问 方式就是微处理器把液晶显示模块当作存储器或 i/o 设备直接挂在总线上,模块 8 位数据总线与微处理器的数据总线相连,用读操作 或写操作 信号与地址信号共同 产生控制信号。 3.3.5 开关模块说明 校时电路主要靠键盘来控制。键盘是一组按键的集合。共有四个按键,分别是: 四川信息职业技术学院毕业设计说明书 (论文) 第 11 页 改变时间、增加、减少、清零。它是嵌入式计算机系统中

25、不可缺少的外围电路。是 实现人机对话的纽带,借助键盘可以向计算机输入程序、置数、逻辑操作以及写入 程序和程序检测等。 四川信息职业技术学院毕业设计说明书 (论文) 第 12 页 第四章 系统的软件设计 4.1 程序流程框图 开始 初始化程序 主键值检测 根据主键进行散转 有则主键值加一 时 间 秒 钟 调 整 时 间 分 钟 调 整 时 间 小 时 调 整 时 间 周 调 整 时 间 日 调 整 时 间 月 调 整 时 间 年 调 整 显 示 周 显 示 日 显 示 月 显 示 年 时 间 显 示 时 间 显 示 主 界 面 图(4-1) 主程序流程 四川信息职业技术学院毕业设计说明书 (论文

26、) 第 13 页 4.2 lcd 的初始化与及显示程序 1 lcd 的初始化 void ini()/*lcd 的初始化函数 rw=0; en=0; p1=0 xff; writecg(); write_order(0 x38);/*端口写入 write_order(0 x0c); /*端口写入 write_order(0 x06); /*端口写入 write_order(0 x01); /*端口写入 2 lcd 的显示程序 void open()/*定义一个 lcd 显示函数 uchar num; /*定义一个无符号的字符变量 num write_order(0 x80+0 x10); /*调

27、用 write_order 函数 for(num=0;opensnum!=0;num+)/*循环打开 write_date(opensnum); delay(20); for(num=0;num16;num+)/*对端口 0 x1c 写入 write_order(0 x1c); delay(200); for(num=0;num5;num+)/*对端口 0 x18 写入 四川信息职业技术学院毕业设计说明书 (论文) 第 14 页 write_order(0 x18); delay(200); for(num=0;num4;num+)/*对端口 0 x18 写入 write_order(0 x1

28、c); delay(200); for(num=0;num3;num+)/*对端口 0 x18 写入 write_order(0 x18); delay(200); for(num=0;num2;num+)/*对端口 0 x1c 写入 write_order(0 x1c); delay(200); for(num=0;num1;num+)/*对端口 0 x18 写入 write_order(0 x18); delay(100); write_order(0 x80+0 x53); for(num=0;opens1num!=0;num+)/*循环延时写入数据 write_date(opens1n

29、um); delay(500); 四川信息职业技术学院毕业设计说明书 (论文) 第 15 页 第五章 系统调试 5.1 软件调试 打开程序调试软件 keil uvision2,在里面新建一个工程,命名为:数字时钟. uv2。接着新建文件,编写相应程序。编写好的各个程序进行编译与连接。但若是在该 过程中,看见我们编好的程序有错误,那么就根据他相应的提示来修改错误,直到该 程序能够正确编译为止。 能够正常编译的程序说明没有什么问题了,此时我们在点击相关栏目,让它生成 我们在硬件仿真时所需要的.hex 文件。到此步,我们的软件调试就完成了。 5.2 硬件调试 打开 proteus 7 profess

30、ional 软件,按照方案所选的电路元件来设计整体电路, 线把个芯片按一定的位置放好,然后对相应的对象进行连接,连接时需仔细,以免 调试时发生错误。做好之后把编程所生成的。hex 文件加载到 at89c52 中,运行仿 真软件,查看运行效果。如果运行出错那么就根据他相应的提示来修改错误,直到 仿真成功为止。这样,整个设计过程就到此结束,剩下的就是撰写论文。 四川信息职业技术学院毕业设计说明书 (论文) 第 16 页 结论 通过本次毕业设计的制作,我较为全面地回顾了,大学三年所学的硬件知识与软 件知识。同时,单片机原理与应用及电子技术方面的相关知识,在这次毕业设计中得 到了较好地实践。 在本次毕

31、业设计中我也学到了很多东西,比如说:我学会了使用 proteus 7 professional 软件进行硬件原理图的绘制、利用 kile 软件对我设计的程序的检查与 生成.hex 文件及遇到问题怎么解决等。 首先,在这次毕业设计中,在我遇到过很多我自己不理解的问题及书本上或是我 以前没有看见过的知识点。在面对这些问题时,我首先采用的是上网搜寻的方法来查 看别人是否和我一样遇到过相类似的问题,并且查看一下别人是怎样解决这个问题 的。当别人有了解决它问题的方法时,我在根据别人的提示,想想自己的问题出在哪 里,该怎么解决。当我还是无法想到解决的办法是,我就带着自己的问题到图书馆查 阅资料,如果我的问

32、题还是没有解决,我就带着问题去问我们的指导老师,让他帮我 解决。采用这样的方法,我的很多问题都迎刃而解了! 其次,就是在本次毕业设计过程中,我不但努力解决自己遇到的问题,还积极帮 助同学解决他们遇到的问题。这样一来,我的知识得到了进一步的巩固,同学的问题 也得到了相应的解决,我达到的一举双收的效果,我为此而感到高兴。 最后,让我觉得这次毕业设计的最大成果是:我知道了将理论用到实际中时,会遇 到很多的问题。因此,在此时我们一定要先沉着的找出问题出现的原因,在对症下 药,来解决问题。我相信只要我们面对问题沉着、冷静,我们的问题都会被解决。 四川信息职业技术学院毕业设计说明书 (论文) 第 17 页

33、 致谢 在论文即将完成,敲下“致谢”两个字的时候,我心中感慨万千。回眸过去,一路走 来,需要感谢的人太多,实在是用这些简单的文字所不能表达和承载的。 首先,我应当感谢的是这一块与北大清华比起来并不十分肥沃的土壤我亲 爱的母校四川信息职业技术学院对我的哺育。衷心地祝愿我所留恋的母校,在建设和 谐校园的过程中,在外延拓展和内涵提高方面,同时取得丰硕的成果,创建成为世界 一流的专科学院。 其次,我要特别感谢的是:让我感动,让我敬佩的我的指导导师母中旭。他拥 有深厚的学术研究功底和学术涵养,同时他待人和蔼可亲。在我论文撰写过程中,母 老师对我的积极鼓励和耐心、细致的指导,给我了许多的信心与帮助,使我的

34、论文由 十分粗糙,结构和思路相当混乱,我自己非常不满意的论文逐渐转变成为语言组织比 较紧凑、思路比较清晰、材料有序排列,硬件和软件有机地融合的论文。因而,我要特 别感谢指导老师母中旭老师对我的指导。我真心地祝愿我的导师身体健康、工作 顺利、家庭幸福,在学术研究上取得更为辉煌的成就,为我等晚辈做出更好的引航作 用,桃李满天下! 最后,谨以此文献给我最最挚爱的父母,是你们让我有机会、有毅力完成了全部 的学业,鼓励我、支持我一步步走到了今天,愿你们一生平安。 四川信息职业技术学院毕业设计说明书 (论文) 第 18 页 参考文献 1边春远、王志强mcs-51 单片机应用开发实用子程序人民邮电出版社 2

35、马忠梅、主编单片机的 c 语言应用程序设计马忠梅北京航空航天大学出版社 3李朝青、主编单片机原理及接口技术第 3 版 北京航空航天大学出版社 4谭浩强c 语言程序设计第四版 清华大学出版 5马忠梅、张凯单片机的 c 语言应用程序设计北京航空航天大学出版社 6廖先芸电子技术实践与实训高等教育出版社 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 19 页 附录 主程序: #include #define uchar unsigned char #define uint unsigned int sbit lcdrs=p35; sbit lcden=p34; sbit dula=p26;

36、 sbit wela=p27; sbit s0 =p10; sbit s1 =p11; sbit s2 =p12; sbit s3 =p13; uchar code table1=2008-08-28 wen; uchar code table2=21:31:30; uchar num,t0; char sec,minute,hour,day,week,month; uint year; void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-); /写入指令子函数 void write_order(uchar order) l

37、cdrs=0; p0=order; delay(2); lcden=1; delay(2); lcden=0; /写入数据子函数 void write_data(uchar data1) 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 20 页 lcdrs=1; p0=data1; delay(2); lcden=1; delay(2); lcden=0; /初始化子函数 void init() sec=0; minute=0; hour=0; week=0; day=1; month=1; year=2008; tmod=0 x01; th0=(65536-50000)/256;

38、tl0=(65536-50000)%256; ea=1; et0=1; tr0=1; wela=0; dula=0; lcden=0; write_order(0 x38); /设置显示模式 write_order(0 x0c); /开显示开光标,光标闪烁 write_order(0 x01); /显示清屏 write_order(0 x06); /光标显示效果 write_order(0 x80); /定义第一行写入数据的地址 for(num=0;num14;num+) write_data(table1num); delay(2); write_order(0 x80+0 x43); /定

39、义第一行写入数据的地址 for(num=0;num8;num+) write_data(table2num); delay(2); void change(uchar addr,uchar data1) /改变 时 分 秒 天 月 的子函数 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 21 页 uchar x,y; x=data1/10; y=data1%10; write_order(0 x80+addr); delay(1); write_data(0 x30+x); delay(1); write_data(0 x30+y); delay(1); void yearchan

40、ge(uchar addr,uint year) /改变年的子函数 uchar x,y,z,w; x=year/1000; y=year%1000/100; z=year%100/10; w=year%10; write_order(0 x80+addr); delay(1); write_data(0 x30+x); delay(1); write_data(0 x30+y); delay(1); write_data(0 x30+z); delay(1); write_data(0 x30+w); delay(1); void weekchange(uchar z) /改变周数的子函数 s

41、witch(z) case 0: write_order(0 x80+0 x0b); delay(1); write_data(m); delay(1); write_data(o); delay(1); write_data(n); delay(1); 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 22 页 break; case 1: write_order(0 x80+0 x0b); delay(1); write_data(t); delay(1); write_data(u); delay(1); write_data(e); delay(1); break; case

42、2: write_order(0 x80+0 x0b); delay(1); write_data(w); delay(1); write_data(e); delay(1); write_data(n); delay(1); break; case 3: write_order(0 x80+0 x0b); delay(1); write_data(t); delay(1); write_data(h); delay(1); write_data(u); delay(1); break; case 4: write_order(0 x80+0 x0b); delay(1); write_dat

43、a(f); delay(1); 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 23 页 write_data(r); delay(1); write_data(i); delay(1); break; case 5: write_order(0 x80+0 x0b); delay(1); write_data(s); delay(1); write_data(a); delay(1); write_data(t); delay(1); break; case 6: write_order(0 x80+0 x0b); delay(1); write_data(s); delay(1)

44、; write_data(u); delay(1); write_data(n); delay(1); break; default:break; void display() if(t0=20) t0=0; sec+; if(sec=60) sec=0; minute+; 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 24 页 if(minute=60) minute=0; hour+; if(hour=24) hour=0; day+; week+; if(week=7) week=0; if(day=31) day=1; month+; if(month=13) month=

45、1; year+; yearchange(0,year); change(0 x05,month); change(0 x08,day); weekchange(week); change(0 x43,hour); change(0 x46,minute); change(0 x49,sec); /键盘扫描的子函数,修改时间 void keyscan() uchar snum; if(s0=0) delay(5); if(s0=0) 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 25 页 while(!s0);/松手检测 snum+; if(snum=1) /选定 秒 tr0=0;

46、 write_order(0 x80+0 x40+9); write_order(0 x0f); if(snum=2) /选定 分 write_order(0 x80+0 x40+6); write_order(0 x0f); if(snum=3) /选定 时 write_order(0 x80+0 x40+3); write_order(0 x0f); if(snum=4) /选定 星期 write_order(0 x80+0 x0b); write_order(0 x0f); if(snum=5) /选定 天 write_order(0 x80+0 x08); write_order(0

47、x0f); if(snum=6) /选定 月 write_order(0 x80+0 x05); write_order(0 x0f); if(snum=7) /选定 年 write_order(0 x80); write_order(0 x0f); if(snum=8) /恢复 计时 tr0=1; write_order(0 x0c); snum=0; 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 26 页 if(snum!=0) /增加 时 分 秒 天 月 年 if(s1=0) delay(5); if(s1=0) while(!s1); if(snum=1) sec+; if

48、(sec=60) sec=0; change(0 x49,sec); write_order(0 x80+0 x40+9); if(snum=2) minute+; if(minute=60) minute=0; change(0 x46,minute); write_order(0 x80+0 x40+6); if(snum=3) hour+; if(hour=24) hour=0; change(0 x43,hour); write_order(0 x80+0 x40+3); if(snum=4) week+; if(week=7) week=0; weekchange(week); write_order(0 x80+0 x0b); if(snum=5) 附件: 四川信息职业技术学院毕业设计说明书 (论文) 第 27 页 day+; if

温馨提示

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

评论

0/150

提交评论