已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要本设计以at89c51单片机为核心芯片,与型号为1602的液晶显示器构成数字电子时钟电路。at89c51是一个低功耗,高性能cmos 8位单片机,片内含4k bytes isp(in-system programmable)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及at89c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,功能强大的微型计算机的at89c51可为许多嵌入式控制应用系统提供高性价比的解决方案.液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。关键词: 液晶显示器;单片机;数字时钟 - ii -abstractabstractthe design at89c51 microcontroller core chip, and the model 1602 hungry for a digital lcd clock electronic circuit. at89c51 scm is a vlsi chip, which integrates cpu, memory (ram / rom), i / o interface, timer / counter, serial communication interface circuit. with a high degree of integration, small size, high reliability and control functions, low power consumption characteristics. model for the 1602 character lcd with micro-power consumption, small size, content rich, ultra-thin and light many advantages, in a pocket-type instruments and low-power application system, which is increasingly widely used. keywords: liquid crystal display; microcontroller; digital clock 目 录目 录摘 要iabstractii第 1 章 绪 论11.1 电子时钟研究意义及简介11.2 数字电子时钟的功能1第 2 章基于单片机的数字电子时钟的设计方案选择22.1 主控制器22.1.1 采用数字逻辑芯片22.1.2 采用单片机作为整个控制系统的核心22.2 时钟控制方案比较22.3 键盘显示方案比较3第 3 章系统功能实现总体设计思路43.1 系统器件介绍43.1.1 at89c51单片机的结构43.1.1.1 中央处理器(cpu)43.1.1.2 内部数据存储器(内部ram)53.1.1.3 内部程序存储器(内部rom)53.1.1.4 定时器/计数器53.1.1.5 并行i/o口 53.1.1.6 串行口 53.1.1.7 时钟电路53.1.2 lcd1602液晶的介绍53.1.2.1 lcd1602特征及应用53.1.2.2 lcd1602指令集53.1.2.3 lcd1602管脚功能63.2 数字时钟的总体设计63.3 数字时钟的功能6第 4 章基于单片机的数字电子钟系统硬件设计84.1 时钟电路模块84.2 复位电路模块94.3 lcd1602显示电路模块104.4 按键电路模块114.5 闹铃电路模块114.6 系统硬件电路图12第 5 章基于单片机的数字电子钟系统软件设计145.1 系统软件设计145.2 主程序设计145.2.1 实现功能145.2.2 功能流程图155.3 按键扫描程序设计165.3.1 实现功能165.3.2 按键扫描流程图165.3.3 按键扫描部分代码175.4 时间更新程序处理函数185.4.1 实现功能185.4.2 工作流程图185.4.3 时间更新程序部分代码195.5 秒表更新程序处理函数235.5.1 时间更新程序部分代码235.5.2 工作流程图245.5.3 函数部分代码255.6 显示切换函数处理程序275.6.1 实现功能275.6.2 工作流程图275.6.3 显示切换函数部分代码28结 论33致 谢34参考文献35附录a36附录b43 - 2 -第 1 章 绪 论1.1 电子时钟研究意义及简介时钟,是我们生活中不可缺少的,随着时代的发展,人们对时钟的要求越来越高,这就要我们对时钟的设计的要求也越来越来高。我们用过的机械时钟,它成本高,内部结构复杂,功能少;而采用集成电路的时钟,它电路较复杂,都不符合这个时代的设计理念。通过研究对比我们选择设计一款基于单片机的简易电子时钟,电子时钟一般由震荡器,分频器,译码器,显示器等部分组成,这些都是数字电路最基本的,应用最广的电路。它成本低,体积小,简单实用,功能强大。这款简易电子时钟使用at89c51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒和设置闹铃,用扬声器来进行定时提醒,用lcd1602来进行显示,同时使用c语言程序来控制整个时钟显示,使得编程变得更容易1.2 数字电子时钟的功能电子时钟主要是利用电子技术将时钟电子化,数字化,拥有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。本简易电子时钟设计功能主要为:1.年月日时分秒显示及校对功能,24小时制。2.具有闹铃功能。3.具有秒表功能。第 2 章 基于单片机的数字电子时钟的设计方案选择2.1 主控制器2.1.1 采用数字逻辑芯片本系统有功能设置、数据装入、定时、显示、音响控制多个功能模块。各个状态保持或转移的条件依赖于键盘控制信号。由于键盘控制信号繁多,系统的逻辑状态以及相互转移更是复杂,用纯粹的数字电路或小规模的可编程逻辑电路实现该系统有一定的困难,需要用中大规模的可编程逻辑电路。这样,系统的成本就会急剧上升相对于方案二。因此,本设计并未采用这种方案。2.1.2 采用单片机作为整个控制系统的核心由于单片机具有体积小、成本低、可靠性高、抗干扰能力强、应用灵活、开发效率高、易于被产品化等优点,其具有很强的面向控制的能力,自70年代以来,在很多领域得到广泛的应用。单片机有8位,如51系列;有16位的如98系列;还有32位的,如当前市场比较热门的arm单片机。单片机比较容易实现系统的智能化控制,而且方便,经济。鉴于市场上常见的51系列8位单片机的售价比较低廉,技术成熟,对于我们的系统在控制上完全能够胜任。我们的设计采用at89c51型单片机。本系统的主控制器采用at89c51单片机作为整个控制系统的核心2.2 时钟控制方案比较方案一 使用专用时钟芯片。使用微控制器控制专用时钟芯片实现计时控制,这种方案有着计时精度高、控制简单的优点,而且更易于实现日期/时间显示、定时烹调等计时扩展功能。方案二 采用小规模集成元件定时此方案主要使用计数器/分频器。该方法价格便宜,但是接线复杂,设计也比较困难,对时序要求比较高。同时该方案功能单一,也无法实现复杂功能,可扩展性差。也不能实现一些人性化的界面设计方案三 利用mcu的内部定时器软件现实时钟功能。鉴于本系统采用at89c51单片机作为整个控制系统的核心,充分利用单片机内部的时钟电路,进行定时控制,从而减少电路设计的复杂度,而且能够减少整套系统的成本。另外,单片机能够实现复杂功能,充分利用单片机扩展灵活特性,通过设计软件,能够设计出友好的人机界面接口和性能。况且单片机价格也比较便宜,性价比很高。本系统时钟控制部分我们采用了方案三,从而充分体现出高性价比。2.3 键盘显示方案比较方案一 采用并行口扩展芯片扩展并行口的方法来设计键盘显示系统。采用键盘显示专用控制器8279显示时钟、火力、倒计时等等功能,而用led显示各种工作状态的指示信号。这种方法键盘控制简单,但8279只能显示数字信息,显示能力有限,不灵活。如果采用这种方法,为了表达更多的信息,就必需使用许多led来引导用户进行操作。方案二 中文字符显示和端口键盘扫描采用lcd液晶字符显示。字符显示具有强大的信息表达能力,采用这种显示方法只需少量的键盘加上软件配合,就可以实现多种用户功能控制和选择,目前市场上lcd1602系列的液晶显示模块技术比较成熟,这是一种能够显示2行,每行16个字符的液晶显示模块。而少量的键盘,使用软件扫描方法将会比使用8279经济许多,而且控制起来也不为了实现更多的功能而又减少成本。我们采用了方案二作为本系统的键盘显示。综上所述,我们的总体设计思想是硬件尽量简单,用软件实现更多的功能,这样就可以用比较低的成本来实现这个系统 。本系统采用at89c51作为主控部分,lcd1602液晶作为显示部分,键盘使用软件扫描方法,使用一个蜂鸣器作为声音提示部分第 3 章 系统功能实现总体设计思路3.1 系统器件介绍3.1.1 at89c51单片机的结构at89c51单片机是美国atmel公司生产低电压,高性能cmos 8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(eprom)和128 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存取技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器(cpu)和flash 存储单元,功能强大。at89c51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。图3-1为at89c51单片机的基本组成功能方块图。有图可见,在这一块芯片上,集成了一台微型计算机的主要组成部分,其中包括cpu、存储器、可编程i/o口、定时器/计数器、串行口等,各部分通过内部总线相连。下面介绍几个主要部分。外时钟源外部事件数定时器/计数器2*16数据存储器256b ram程序存储器4kb rom振荡器和时序oscat89c51可编程全双工串行口可编程i/o64kb总线扩展控制器闪中断外中断 控制 并行口 串行通信图3-1 at89c51 功能方块图3.1.1.1. 中央处理器(cpu)中央处理器是单片机中最核心的部分,是单片机的大脑和心脏,主要完成运算和控制功能。at89c51的cpu是一个字长为8位的中央处理单元,即它对数据的处理是按字节为单位进行的。3.1.1.2. 内部数据存储器(内部ram)at89c51 中共有256个ram单元,但其中能作为寄存器供用户使用的仅有前面128个,后128个被专用寄存器占用。3.1.1.3. 内部程序存储器(内部rom)at89c51 共有4 kb掩膜rom,用于存放程序、原始数据等3.1.1.4. 定时器/计数器at89c51 共有2 个16 位的定时器/计数器,可以实现定时和计数功能。3.1.1.5. 并行i/o口at89c51 共有4 个8 位的i/o口(p0、p1、p2、p3口),可以实现数据的并行输入、输出。3.1.1.6. 串行口at89c51有1 个全双工的可编程串行口,以实现单片机和其他设备之间的串行数据传送。3.1.1.7. 时钟电路at89c51 单片机内部有时钟电路,但是晶振和微调电容需要外接。时钟电路为单片机产生时钟脉冲序列3.1.2 lcd1602液晶的介绍3.1.2.1. lcd1602特征及应用微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中3.1.2.2. lcd1602指令集1602通过d0d7的8位数据端传输数据和指令。显示模式设置: (初始化)0011 0000 0x38 设置162显示,57点阵,8位数据接口;显示开关及光标设置: (初始化)0000 1dcb d显示(1有效)、c光标显示(1有效)、b光标闪烁(1有效)0000 01ns n=1(读或写一个字符后地址指针加1 &光标加1),n=0(读或写一个字符后地址指针减1 &光标减1),s=1 且 n=1 (当写入一个字符后,整屏显示左移)s=0 当写入一个字符后,整屏显示不移动数据指针设置:数据首地址为80h,所以数据地址为80h+地址码(0-27h,40-67h)其他设置:01h(显示清屏,数据指针=0,所有显示=0);02h(显示回车,数据指针=0)。3.1.2.3. lcd1602管脚功能1602采用标准的16脚接口,其中:第1脚:vss为电源地第2脚:vdd接5v电源正极第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10k的电位器调整对比度)。第4脚:rs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:rw为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:e(或en)端为使能(enable)端。第714脚:d0d7为8位双向数据端。3.2 数字时钟的总体设计此设计原理框图如下图3-2所示,此电路包括以下三个部分:单片机,键盘,闹铃电路。采用at89c51芯片和lcd1602等来实现电子时钟的功能。lcd1602显示键盘51单片机闹铃电路独立键盘独立键盘图3-2总体设计图3.3 数字时钟的功能电子时钟主要是利用电子技术将时钟电子化,数字化,拥有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。本简易电子时钟设计功能主要为:1.年月日时分秒显示及校对功能,24小时制。2.具有闹铃功能。3.具有秒表功能。第 4 章 基于单片机的数字电子钟系统硬件设计该数字电子时钟工作原理是用一片at89c51单片机通过编程去控制lcd1602实现的。通过2个开关控制来进行时间的调节以及秒表功能,p2.0(key1)口控制按键,当系统处于正常时间显示并且按下此键时,可以进入秒表功能和时间功能的切换,此键还可以作为时间和日期以及闹铃的调整位选中键,当系统处于时间显示模式时,按此键可以选中相应的需要调整的位。当系统处于时间显示模式时,p2.1(key2)口控制按键,按此键对相应的选中位进行加,当系统处于秒表工作模式时按此键可以控制秒表计时的启动和暂停。其工作流程:1.年月日时分秒显示。通电后lcd自动显示c语言程序设置好的默认时间2.闹钟显示和设定。通电后,a的右边显示的是默认的闹钟时间,通过key1和key2可以设置闹铃时间。3.秒表显示以及启动和暂停以及清零。lcd处于正常显示时间模式下时按下key1释放后可以进入秒表模式,前3次按下key2的功能依次为启动停止清零,每按3次key2为一个轮回。4.1 时钟电路模块下图所示为时钟电路原理图,在at89c51芯片内部有一个高增益反相放大器,其输出端为引脚xtal2,输入为芯片引脚xtal1。而在芯片外部,xtal1和xtal2之间跨接晶体振荡器和微调电容,构成一个稳定的自激振荡电路,电路产生的振荡脉冲经过触发器进行十二分频之后,便成为单片机的时钟信号。图4-1时钟电路模块4.2 复位电路模块下图所示为复位电路原理图,在单片机的实际应用系统中,除单片机本身需复位以外,外部扩展的i/o接口电路等也需要一个复位,因此需要一个系统的同步复位信号,即单片机复位后,cpu开始工作,外部的电路一定要复位好,以保证cpu有效地对外部电路进行初始化编程。单片机复位的条件是:必须使rst/vpd 或rst引脚加上持续两个机器周期(即24个振荡周期)的高电平。电路为上电复位电路,它是利用电容充电来实现的。在接电瞬间,rst端的电位与vcc相同,随着充电电流的减少,rst的电位逐渐降低。只要保证rst为高电平时间大于两个机器周期,就能正常复位。图4-2复位电路模块4.3 lcd1602显示电路模块下图所示为lcd1602显示模块电路原理图图4-3显示电路模块4.4 按键电路模块下图所示为独立按键模块电路原理图,根据此电子时钟功能要求,需要设置以下两个功能键:工作模式键(key1),模式辅助键(key2)。按照键盘与cpu的连接方式可分为独立键盘和矩阵键盘。独立式键盘是各个按键相互独立,每个按键占用一个i/o口,外加上拉电阻,每个i/o口上的按键不会影响到其他i/o口的按键工作状态。独立式键盘电路配置灵活,软件结构简单,所以本设计采用独立式键盘。图4-4按键电路模块4.5 闹铃电路模块下图所示为闹铃模块电路原理图,闹铃模式时,设定好闹铃的时间,闹铃的时间有时和分,当设定好的闹铃时间与系统的当前时间的时和分相等时,系统给p2.2端口送低交替的高低电平,蜂鸣器发出一定频率报警声,一分钟后报警声停止,如果这一分钟内有按键按下则报警声也停止。图4-5闹铃电路模块4.6 系统硬件电路图下图所示系统电路原理图, 该数字电子时钟工作原理是用一片at89c51单片机通过编程去控制lcd1602实现的。通过2个开关控制来进行时间的调节以及秒表功能,p2.0(key1)口控制按键,当系统处于正常时间显示并且按下此键时,可以进入秒表功能和时间功能的切换,此键还可以作为时间和日期以及闹铃的调整位选中键,当系统处于时间显示模式时,按此键可以选中相应的需要调整的位。当系统处于时间显示模式时,p2.1(key2)口控制按键,按此键对相应的选中位进行加,当系统处于秒表工作模式时按此键可以控制秒表计时的启动和暂停。其工作流程:1.年月日时分秒显示。通电后lcd自动显示c语言程序设置好的默认时间2.闹钟显示和设定。通电后,a的右边显示的是默认的闹钟时间,通过key1和key2可以设置闹铃时间。3.秒表显示以及启动和暂停以及清零。处于正常显示时间模式下时按下key1释放后可以进入秒表模式,前3次按下key2的功能依次为启动停止清零,每按3次key2为一个轮回。图4-6硬件接线图第 5 章 基于单片机的数字电子钟系统软件设计5.1 系统软件设计系统软件包含四个部分:主程序,定时器扫描程序,按键扫描程序,按键处理程序;通过这四个部分可以实现数字电子钟的功能设计。5.2 主程序设计程序设计主要是通过单片机内部timer0和timer1产生系统时钟信号,经过单片机的运算分别得到时间的年月日时分秒和秒表的时分秒毫秒,单片机在主程序中循环扫描按键端口,根据返回的键值分别将这些数据传给lcd1602对应显示出来。5.2.1 实现功能程序实现的功能是:正常显示年月日和时分秒以及闹钟的时分。若单片机检测到key1第一次按下并释放则lcd切换到显示秒表模式00:00:00:00,第二次按下key2并释放则返回到时钟显示模式。在时钟正常显示模式下若前5按下key2按键并释放则一次选中闹钟的时分和时钟的分时年月日,选中位会出现光标闪烁并且时钟不自动走动,第6次按下key2并释放之后则正常显示时钟,6次为一个循环。在光标闪烁的时候若按下key1并且释放则可以对相应位进行校正。若在秒表显示模式下第一次按下key2并释放则启动秒表计时,第二次按下key2释放后则暂停秒表,第三次按下key2释放后则秒表清零,三次为一个循环。5.2.2 功能流程图通过以上分析可得图5-1系统工作流程图:图5-15.3 按键扫描程序设计5.3.1 实现功能当系统检测到有按键按下时返回相应的非零的键值,否则返回零。5.3.2 按键扫描流程图图5-2按键扫描流程图5.3.3 按键扫描部分代码unsigned char key scan(void)static unsigned char value;/键值static unsigned char do_key;/执行相应命令标识static unsigned char key_scan_step;/键盘扫描步骤if(key_scan_step=0)key_value = 0;if(do_key=0)if(key & 0x03 != 0x03)t1=0;do_key=1;if(t1=key_shake_time)&(key & 0x03) != 0x03)value = key & 0x03;do_key = 0;key_scan_step = 1;if(key_scan_step=1)&(key & 0x03) = 0x03)key_scan_step = 0;switch(value)case 0x02 :value = 1;break;case 0x01 :value = 2;break;case 0x03 :value = 0;break;default :value = 0;break;return(value);elsereturn(0);5.4 时间更新程序处理函数5.4.1 实现功能通过对t0值的判断来得到秒分时日月年的计算。5.4.2 工作流程图图5-3时间更新程序流程图5.4.3 时间更新程序部分代码void update_time(void)if(t0=20)t0=0;time.second+;if(time.second59)time.second=0;time.minute+;if(time.minute59)time.minute=0;time.hour+;if(time.hour23)time.hour=0;time.day+;switch(time.month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(time.day31)time.day=1;time.month+;if(time.month12)time.month=1;time.year+;if(time.year 2060)time.year = 2012;break;case 4:case 6:case 9:case 11:if(time.day30)time.day=1;time.month+;if(time.month12)time.month=1;time.year+;if(time.year 2060)time.year = 2012;break; case2:if(time.year/4=0)&(time.year/100!=0)|(time.year/400=0)&(time.day29) time.day=1;time.month+;if(time.month12)time.month=1;time.year+;if(time.year max_year)time.year = min_year; else if(time.day28) time.day=1;time.month+;if(time.month12)time.month=1;time.year+;if(time.year 2060)time.year = 2012; break;default:break;if(model_flag = 0)write_lcd(0x8c,wcmd);write_lcd(time.day%10+0,wdata);write_lcd(0x8b,wcmd);write_lcd(time.day/10+0,wdata);write_lcd(0x89,wcmd);write_lcd(time.month%10+0,wdata);write_lcd(0x88,wcmd);write_lcd(time.month/10+0,wdata);write_lcd(0x83,wcmd);write_lcd(time.year/1000)+0,wdata);write_lcd(0x84,wcmd);write_lcd(time.year%1000/100)+0,wdata);write_lcd(0x85,wcmd);write_lcd(time.year%1000%100/10)+0,wdata);write_lcd(0x86,wcmd);write_lcd(time.year%10+0,wdata);if(model_flag = 0)write_lcd(0xc1,wcmd);write_lcd(time.hour%10+0,wdata);write_lcd(0xc0,wcmd);write_lcd(time.hour/10+0,wdata);if(model_flag = 0)write_lcd(0xc4,wcmd);write_lcd(time.minute%10+0,wdata);write_lcd(0xc3,wcmd);write_lcd(time.minute/10+0,wdata);if(model_flag = 0)write_lcd(0xc7,wcmd);write_lcd(time.second%10+0,wdata);write_lcd(0xc6,wcmd);write_lcd(time.second/10+0,wdata);5.5 秒表更新程序处理函数5.5.1 时间更新程序部分代码通过对t1值的判断来得到秒表的毫秒、秒、分、时的计算5.5.2 工作流程图图5-4秒表更新程序流程图5.5.3 函数部分代码void update_stop_watch(void)if(sw_t1=1)sw_t1=0;time.sw_msecond+;if(time.sw_msecond99)time.sw_msecond=0;time.sw_second+;if(time.sw_second59)time.sw_second=0;time.sw_minute+;if(time.sw_minute59)time.sw_minute=0;time.sw_hour+;if(time.sw_hour23)time.sw_hour=0;if(model_flag = 1)write_lcd(0xc3,wcmd);write_lcd(time.sw_hour%10+0,wdata);write_lcd(0xc2,wcmd);write_lcd(time.sw_hour/10+0,wdata);if(model_flag = 1)write_lcd(0xc6,wcmd);write_lcd(time.sw_minute%10+0,wdata);write_lcd(0xc5,wcmd);write_lcd(time.sw_minute/10+0,wdata);if(model_flag = 1)write_lcd(0xc9,wcmd);write_lcd(time.sw_second%10+0,wdata);write_lcd(0xc8,wcmd);write_lcd(time.sw_second/10+0,wdata);if(model_flag = 1)write_lcd(0xcc,wcmd);write_lcd(time.sw_msecond%10+0,wdata);write_lcd(0xcb,wcmd);write_lcd(time.sw_msecond/10+0,wdata);5.6 显示切换函数处理程序5.6.1 实现功能通过对模式标志位model_flag值的判断来决定显示器的显示模式。5.6.2 工作流程图图5-5切换程序流程图5.6.3 显示切换函数部分代码void shift_display(void)if(model_flag = 0 & time_change_flag = 0 & shift_flag =0)shift_flag = 1;dowrite_lcd(0x01,wcmd);/清屏write_lcd(0x8b,wcmd);write_lcd(time.day/10+0,wdata);write_lcd(0x8b,wcmd);write_lcd(time.day/10+0,wdata);write_lcd(0x8c,wcmd);write_lcd(time.day%10+0,wdata);write_lcd(0x8a,wcmd);write_lcd(-,wdata);write_lcd(0x88,wcmd);write_lcd(time.month/10+0,wdata);write_lcd(0x89,wcmd);write_lcd(time.month%10+0,wdata);write_lcd(0x87,wcmd);write_lcd(-,wdata);write_lcd(0x83,wcmd);write_lcd(time.year)/1000+0,wdata);write_lcd(0x84,wcmd);write_lcd(time.year%1000/100+0,wdata);write_lcd(0x85,wcmd);write_lcd(time.year)%1000%100/10+0,wdata);write_lcd(0x86,wcmd);write_lcd(time.year)%10+0,wdata);write_lcd(0xcf,wcmd);write_lcd(time.alarm_minute%10+0,wdata);write_lcd(0xce,wcmd);write_lcd(time.alarm_minute/10+0,wdata);write_lcd(0xcd,wcmd);write_lcd(:,wdata);write_lcd(0xcc,wcmd);write_lcd(time.alarm_hour%10+0,wdata);write_lcd(0xcb,wcmd);write_lcd(time.alarm_hour/10+0,wdata);write_lcd(0xc9,wcmd);write_lcd(a,wdata);write_lcd(0xc7,wcmd);write_lcd(time.second%10+0,wdata);write_lcd(0xc6,wcmd);write_lcd(time.second/10+0,wdata);write_lcd(0xc5,wcmd);write_lcd(:,wdata);write_lcd(0xc4,wcmd);write_lcd(time.minute%10+0,wdata);write_lcd(0xc3,wcmd);write_lcd(time.minute/10+0,wdata);write_lcd(0xc2,wcmd);write_lcd(:,wdata);write_lcd(0xc1,wcmd);write_lcd(time.hour%10+0,wdata);write_lcd(0xc0,wcmd);write_lcd(time.hour/10+0,wdata);while(0);else if(model_flag = 1& sw_stop_flag = 2 & shift_flag = 1)shift_flag =0;sw_t1 = 0;time.sw_msecond = 0;time.sw_second = 0;time.sw_minute = 0;time.sw_hour = 0;dowrite_lcd(0x01,wcmd);/清屏write_lcd(0x8c,wcmd);write_lcd(h,wdata);write_lcd(0x8c,wcmd);write_lcd(h,wdata);write_lcd(0x8b,wcmd);write_lcd(c,wdata);write_lcd(0x8a,wcmd);write_lcd(t,wdata);write_lcd(0x89,wcmd);write_lcd(a,wdata);write_lcd(0x88,wcmd);write_lcd(w,wdata);write_lcd(0x86,wcmd);write_lcd(p,wdata);write_lcd(0x85,wcmd);write_lcd(o,wdata);write_lcd(0x84,wcmd);write_lcd(t,wdata);write_lcd(0x83,wcmd);write_lcd(s,wdata);write_lcd(0xcb,wcmd);write_lcd(time.sw_msecond/10+0,wdata);write_lcd(0xcb,wcmd);write_lcd(time.sw_msecond/10+0,wdata);write_lcd(0xcc,wcmd);write_lcd(time.sw_msecond%10+0,wdata);write_lcd(0xca,wcmd);write_lcd(:,wdata);write_lcd(0xc9,wcmd);write_lcd(time.sw_second%10+0,wdata);write_lcd(0xc8,wcmd);write_lcd(time.sw_second/10+0,wdata);write_lcd(0xc7,wcmd);write_lcd(:,wdata);write_lcd(0xc6,wcmd);write_lcd(time.sw_minute%10+0,wdata);write_lcd(0xc5,wcmd);write_lcd(time.sw_minute/10+0,wdata);write_lcd(0xc4,wcmd);write_lcd(:,wdata);write_lcd(0xc3,wcmd);write_lcd(time.sw_hour%10+0,wdata);write_lcd(0xc2,wcmd);write_lcd(time.sw_hour/10+0,wdata);while(0);结 论经过前一段时间的设计,基本完成基于单片机的数字电子时钟设与计制作的要求。功能上基本达标:日期和时钟的显示,秒表显示,定时功能,调时功能。时钟显示功能,精确度完全可以满足日常生活显示时间的需要;秒表功能,可以满足大部分比赛计时的需要;调时功能,方便快捷;定时功能准确可靠,还有扩展成音乐闹钟的余地。硬件设计合乎要求,软件设计可以配合硬件实现要求功能。在设计过程中,重点就在于软件算法的设计,若设计好了程序算法,就可以轻松写出程序代码,以达到硬件功能,此次设计让自己对这些cad软件和编程软件以及单片机的使用有了进一步的提高,对于整个项目的整体设计制作有一个全局性的把握,这为自己不久的将来走上工作岗位打下了坚实的基础。致 谢在论文即将完成之际,我首先向关心帮助和指导我的导师表示衷心的感谢并致以崇高的敬意!在论文工作中,一直得到导师的亲切关怀和悉心指导。导师以其渊博的学识、严谨的治学态度、求实的工作作风和他敏捷的思维给我留下了深刻的印象,我将终生难忘。论文工作即将结束,回顾四年多来的学习经历,面对现在的收获,我感到无限欣慰。为此,我向热心帮助过我的所有老师和同学表示由衷的感谢!特别感谢我的师妹和师弟们所提供的大力支持和帮助!在我即将完成学业之际,我深深地感谢各位老师给予我的全力支持!参考文献1 李叶紫,王喜斌,胡辉,孙东辉编著mcs_51单片机应用教程北京:清华大学出版社.20082 陆剑单片机应用技术指导书m河南:河南工业职业技术学院.20053 范风强,兰婵丽 单片机语言c51应用实战集锦北京:电子工业出版社. 20034 徐爱钧,彭秀华单片机高级语言c51应用程序设计m北京:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022年山西大学附中高考语文三模试卷
- 2024-2025学年人教版八年级数学上册期末提高试卷(含简单答案)
- 学生会宣传部期末工作总结(30篇)
- 林草生态综合监测技术合同承诺书
- 联合国国际销售合同公约文本
- 离婚协议存款归女方所有的离婚协议范文
- 合同税率变更说明范文
- 合同实务指南
- 激励高三知识课件
- 《捣固研讨会演示》课件
- 代理记账业务规范代理记账业务内部规范制度
- 中国传统文化(英文版)
- 高中通用技术《技术试验及其方法》公开课课件
- 厨房排油烟不锈钢风管施工方案
- 南京大学在校学生校史知识认知情况调查问卷
- 道德与法治中考备考建议课件
- 财产保险退保申请范文推荐6篇
- 食品工程原理课程设计
- YYT 0325-2022 一次性使用无菌导尿管
- 羊膜在眼科临床中应用课件
- (71)第十五章15.2.3整数指数幂1-负整数指数幂-导学案
评论
0/150
提交评论