毕业设计(论文)定时LCD闹钟设计_第1页
毕业设计(论文)定时LCD闹钟设计_第2页
毕业设计(论文)定时LCD闹钟设计_第3页
毕业设计(论文)定时LCD闹钟设计_第4页
毕业设计(论文)定时LCD闹钟设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、定时lcd闹钟设计摘 要:随着电子技术的迅速发展,特别是随着大规模集成电路出现,给人类生活带来了根本性的改变。本系统通过点阵式lcd液晶为载体显示数据,所以具有人性化的操作和美观的页面效果。可以显示时间,并有闹铃的家用电器功能。关键词:单片机; lcd液晶技术; 定时闹钟1引言 20世纪90年代,电子技术的迅猛发展,推动了现代电子产品在社会各个领域的发展。并且对社会生产力的发展和社会信息化程度的起到了促进作用,同时也使现代电子产品性能进一步提高,产品更新换代的节奏越来越快。 定时闹钟可以放在计算机教室或是实验室中使用,若lcd选择有背光显示的模块,在夜晚或黑暗的场合中也可以使用。可以设置现在的

2、时间及显示闹铃设置时间,若所设置的时间到了,则发出一阵声响告知计时终了,并可以启动继电器,进一步可以扩充可控制家电开关。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究定时闹铃应用,有着非常现实的意义。本课题将利用单片机8051的控制程序结合lcd设计一个简易的定时lcd闹钟。它结合了许多电子装置最基本的功能:利用单

3、片机定时器设计时间进行计时处理。2方案论证时钟模块方案 2.1方案一 基本门电路搭建 用基本门电路来实现定时闹钟,电路结构复杂,故障系数大,不易调试。2.2方案二 单片机编程 用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。与第一种方案比较优点是非常明显的。我们选择了第二种方案定时闹钟的控制电路分为以下几个部分:1) 单片机80c512) lcd显示器3) 按键控制4) 压电喇叭5) 继电器电路框图如图单片机晶 振复 位电 源显 示按键继电器喇 叭图1.1控制电路框图其中j1为+5v电源输入当电源输入时电源指示led会亮起,用以指示电源供给。定时在闹铃时间到后会使

4、压电喇叭发出哗声,并启动继电器使之状态为on。控制继电器on/off,可以直接控制家电开关。在选择lcd显示时,必须在有亮度照明的地方使用,若使用背光的显示模块就可以在黑暗中使用。无背光和有背光的模块在引脚上是兼容的,只是在价格有出入,一般是选者有背光的,这样用起来更方便3各电路设计和论证根据题目的要求,本系统除了核心器件单片机外主要还包括了以下几个部分:31电源电路设计和论证为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案31.1方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。312方案二:采用

5、单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。31.3方案三:采用三只干电池提供电源。该方案的优点是系统简明扼要,节约成本;缺点是输出功率不高,只能勉强推动8051,适合小电流负载。综上所述,我们选择第三种方案。32 按键电路设计和论证321方案一:4*4矩阵式键盘。如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。322方案二:独立式按键。如果设置过多按键,将会占用较多i/o口,而且会给布线带来不便,因此,此方案适用于按键较少的情况。如果选择此方案,由于按键较少,在修改时间或设置闹铃时间时就不能直接输入,只能通

6、过加或减完成,稍为麻烦一些,但其程序简单。由于并不需要经常修改时间和设置闹铃时间,而且方案二的程序简单,按键少、成本低,因此,选择方案二33 显示器331方案一:用数码管作为显示器。数码管的驱动电路简单,虽然使用方便,但缺点很多。其缺点是功耗较大,集成度低。由于数码管使用起来不方便,332方案二:lcd液晶显示器。如果选择此方案,系统驱动能力,将会提高系统的功率,集成度高。这样就可以用电池供电,lcd液晶显示器的体积小,消耗电量少,便于携带。所以选择方案二。文字型 lcd常见的文字型lcd基本的方块图如下图1.2文字型lcd结构图图1.3lcd引脚图lcd引脚的功能为: d0d7: 双向的数据

7、总线,lcd数据读写方式可以分为8位及4位两种,以8位数据进行读写则d0d7皆有效,若以4位方式进行读写,则只用到d7d4。rs: 寄存器选择控制线,当rs=0时,并且做写入动作时,可以写入指令寄存器,若rs=0,且做读取的动作时,可以读取忙碌标志及地址计数器的内容。如果rs=1则用于读写数据寄存器。r/w: lcd读写控制线,r/w=0时,lcd执行写入的动作,r/w=1时则做读写的动作。en: 启用控制线,高电平动作。vcc: 电源正端。vo: 亮度调整电压输入控制引脚,当输入0v时字符显示最亮。gnd: 电源地端。因为lcd本身并不会发亮,为了使夜间能看清楚lcd內容,某些lcd模组另外

8、提供a、k做为背光用的电源接脚,有些厂商为了控制简化,已将此两接脚及相关电路接到lcd的电源脚,所以lcd只要1、2接上电源就lcd背光就会亮。目前常见控制lcd的晶片最高可控制显示80个字元,但实际lcd面板尺寸依价钱及使用者需求而有不同的规格,目前市面较常见的规格有16字2行或20字2行。34 定时/计时部分如果使用时钟芯片,系统就不怕掉电且时间精确。但这种芯片比较贵,况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价格较高的时钟芯片。341定时/计数器的四种工作方式方式0 定时器/计数器的工作方式0称之为13位定时/计数方

9、式。它由tl(1/0)的低5位和th(0/1)的8位构成13位的计数器,此时tl(1/0)的高3位未用。方式1方式1的工作原理和功能如图1.1。定时/计数器一共有四种工作方式,就是用m1m0来控制的,2位正好是四种组合,对t0、t1要分别设定各控制字。m1 m0操作方式功能描述0 0方式013位定时器0 1方式116位定时/计数器1 0方式2具有自动重装的8位定时/计数器1 1方式3定时0分2个8位定时器,定时/计数器即可作定时用也可用计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在我们。如果c/t为0就是用作定时器(开关往上打),如果c/t为1就是用作计数器(开关往下打)。 ga

10、te=0,分析一下逻辑,gate非后是1,进入或门,或门总是输出1,和或门的另一个输入端int1无关,在这种情况下,开关的打开、合上只取决于tr1,只要tr1是1,开关就合上,计数脉冲得以畅通无阻,而如果tr1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于tr1。 gate=1,在此种情况下,计数脉冲通路上的开关不仅要由tr1来控制,而且还要受到int1引脚的控制,只有tr1为1,且int1引脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性可以用来测量一个信号的高电平的宽度,是16位的定时/计数方式,将m1m0设为01即可,其它特性与工作方式0相同。方式2 通常这种

11、式作方式常用于波特率发生器(我们将在串行接口中讲解),用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是最好的了。方式3这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,tl0可以构成8位的定时器或计数器的工作方式,而th0则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,t0被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?tl0还是用原来的t0的标记,而th0则借用t1的标记。如此t1不是无标记、控

12、制可用了吗?是的。一般情况处,只有在t1以工作方式2运行(当波特率发生器用)时,才让t0工作于方式3的。 图1.4定时计数器方试3的t1结构定时器/计数器的定时/计数范围工作方式0:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。35 继电器如图1.2继电器接点说明如下1)nc常闭点。以com为共同点,nc与com在平时是呈导通的状态。2)com 共通点。输出控制接点的共同接点。3)常开点。

13、nc与com平时呈开路的状态,当继电器工作时,no与com导通,nc与com则呈开路状态。继电器所扮演的角色是一组可以电气控制开关,因此是串联到电器的ac 110v电源回路中,其功能可以取代电器上的开关。在使用上io51 控制板上的继电器线圈驱动电压为直流5v,做电器上的开关时,其流过的电流负载请勿大过,约2a内较保险,以免烧毁继电器或是8051相关控制电路。3.6电路原理图 图1.5电路原理图3.6.1功能说明 定时闹钟的功能基本如下: 文字型lcd(16*2)显示 显示格式为“时时 分分”。 由led闪动来做秒的计数表示。具有四个按键来做功能设置,可以设置现在的时间及显示闹钟设置时间。一旦

14、时间到就会发出一阵声响,同时继电器启动,可以扩充家点开启关闭。程序执行后工作指示灯led闪动,表示程序开始执行,lcd显示“00 00”,按下操作键k1k4动作如下:操作键k1:设置现在的时间。操作键k2:显示闹钟设置时间。操作键k3:设置闹钟时间。操作键k4:闹钟on/off的状态设置,设为on是连续三次发出哗的一声,设为off时发出哗的一声。设置现在的时间或是闹钟时间设置如下:操作键k1:调整时。操作键k2:调整分。操作键k3:设置完成。 时间到时发出一阵声响,按下k4键可以停止声响。在本设计中使用一般的lcd显示器显示数据,除了具有显示现在时间的功能外,也可以扩充其他功能增加码表计书数。

15、闹钟功能时间到了会产生音乐声。增加计时倒数功能增加多组定时器功能本系统利用单片机89c51。它的引脚功能和80c51的引脚功能相似3.6.2引脚简要说明主电源引脚vcc和vssvcc(40脚):主电源接5vvss(20脚):接地时钟电路引脚xtal1 和xtal2xtal2(18脚):接外部晶体振荡器的一端。片内是一个振荡电路反相放大器的输出端。xtal1(19脚):接外部晶体振荡器的另一端。片内是一个振荡电路反相放大器的输入端。控制信号rst/vpd、ale/(/prog) 、/ psen和 (/ea)/vpprst/vpd(9脚):复位端。高电平有效,宽度在24个时钟周期宽度以上,使单片机

16、复位。该引脚有复用功能,vpd为备用电源输入端,防止主电源掉电。ale/(/prog)(30脚):地址锁存信号端。访问片外存贮器时,ale作低八位地址的锁存控制信号。平时不访问片外存贮器时,该端以六分之一的时钟振荡频率固定输出脉冲。ale端负载驱动能力为8个lsttl门。该引脚有复用功能, 为片内程序存贮器编程(固化)的编程脉冲输入。/psen(29脚):片外程序存贮器读选通信号端。负载能力为8lsttl门。(/ea)/vpp(31脚):/ea端接高电平时,cpu取指令从片内程序存贮器自动顺延至片外程序存贮器。 /ea端接低电平时,cpu仅从片外程序存贮器取指令。该引脚有复用功能,vpp为片内

17、程序存贮器编程时的编程电压。 输入/输出引脚p0、p1、p2和p3口p0.0p0.7(3932脚):访问片外存贮器时作为低八位地址线和八位数据线(复用)。负载能力为8个lsttl门。p1.0p1.7(18脚): 8位准双向i/o口。负载能力为3个lsttl门。p2.0p2.7(2128脚):访问片外存贮器时作为高八位地址线。p3.0p3.7(1017脚):8位准双向i/o口。负载能力为3个lsttl门。另外还有专门的第二功能。p3口的第二功能p3.0(10脚): rxd(串行口输入端)p3.1(11脚): txd(串行口输出端)p3.2(12脚): /int0(外部中断0输入端)p3.3(13

18、脚): /int1(外部中断1输入端)p3.4(14脚): t0(定时器/计数器0外部输入端)p3.5(15脚): t1(定时器/计数器1外部输入端)p3.6(16脚): /wr(片外数据存贮器写选通信号输出端)p3.7(17脚): /rd(片外数据存贮器读选通信号输出端) 图1.6 80c51系列单片机引脚图4 系统软件设计41 软件功能检测按键。当系统检测到某个案件被按下时,转到相应子程序处理,可实现校时、设定闹铃时间的功能。显示。系统通过调用显示子程序,可将显示缓冲区里的内容通过输出到lcd液晶显示器。计时。系统通过中断和软件计数器可产生秒信号。每到1s,系统将会调整时间存储单元的内容,

19、从而实现计时功能。比较。每当秒存储单元的内容为0时,系统通过调用比较子程序可判断当前时间是否符合闹铃条件,若符合,则调用发音子程序使蜂鸣器发出闹铃声音。产生音频方波输出。系统通过软件产生音频方波输出使蜂鸣器发声,这样可以省去硬件振荡电路。设定。系统进入设定状态后,可通过按“设定”键改变闪亮位位置和按“on”或“off”键来达到报时和设定闹铃时间的目的。42软件编程设计1init初始化控制变量。2init-timer初始化定时器接口,使用定时器0模式0计时。3t0-int定时器0计时中断程序每隔5ms中断一次。4set-time设置现在的时间包括小时及分钟。5show-dig在lcd的第一行显示

20、数字。6sgow-dig2在lcd的第二行显示数字。7conv将时分的数据转换为数字数据显示在lcd上。8set-lcd对lcd做初始化工作。9r-line1清除lcd的第一行字符。10cd-print在lcd的第一行或第二行显示字符。11com以位控制方式将命令写入lcd。12wdata以四位控制方式将数据写入lcd。13lcdp1在lcd的第一行显示字符。14dp2在lcd的第二行显示字符。15bz压电喇叭发出哗的一声。16look-atime查看已设置的闹钟时间。17set-atime设置闹钟时间。18time-pro 过了1s后则更新时间并检查闹钟时间。19time-out所设置的闹钟

21、时间到了。43程序说明及流程图 本设计程序中,可以学习利用单片机定时器设计时间计时处理,单片机定时器负责定时的计数,不会因为按键处理而中断时间秒数的增加,时,分,秒数据是存在变量内并写入lcd而显示相关时间。在主控程序循环中主要工作为扫描是否有按键,若有按键就作相对功能处理,同时也检查所设置的时间是否到了。时间计时处理程序是等过了1s后,则更新时间数据,将最新的时,分,秒的数据转换为数字数据并显示在lcd上 ,程序中如何判断是否过了1s后?可以设一旧秒数变量,当新旧秒数变量不一样是 ,则表示已过了1s,要做相关程序事件处理了。使用lcd做数据显示,一旦写入数据到lcd上,数据将会一直显示在面板

22、上,与此相对应的是,在七段显示器上的显示,必须靠显示器扫描程序中的定时来扫描才能将数据显示。这是两者不一 样的地方,当然使用的场合也不一样。定时闹钟的动作利用计时处理来做秒计数,当所设置的时间到了,压电喇叭则不会发出声响,led持续闪东,启动继电器。在发出闹铃的通道,若有按下k4键,等按下键放开。则停止闹铃发出声响,并清除闹铃位,继电器关为off状态。主程序控制的工作流程如下:主程序开始继电器off,消除闹铃标志初始化变量及lcd接口初始化定时器lcd闪动。表示程序开始执行扫描显示器更新时间数据,检查闹铃时间是否到了 是否按k1,k2,k3,k4键?k1:设置现在的时间k2:显示闹铃设置时间k

23、3:设置闹铃时间k4:闹铃on/off的设置ny图 1.7 主程序控制的工作流程 定时闹钟lcd的控制程序文件名为pcll。asm,主要控制子程序说明如下:init:初始化控制变量。mov deda,#0 ;5ms计数值为0mov seco ,#0 ;旧的秒数清除为0mov sec , #0 ;秒钟变量清除为0mov min , #0 ; 分钟变量清除为0mov hour ,#1 ;小时变量清除为0ret-init_timer: ;初始化定时器接口;mov tmod, #00000000b ;设置定时器0工作模式为模式0mov ie , #10000010b ;启用定时器0中断产生mov tl

24、0 ,#l0 ;加载低字节mov th0, #hisetb tr0 ;启用定时器0开始计时ret-use timer mode 0count=5ms/1us=5000-t0-int: ;定时器0计时中断程序每隔5ms中断一次push acc ;将累加器放入堆栈mov tl0 ,#l0 ; mov th0 ,#hi ;inc deda ;5ms计数值加11 sec time out check ;mov a,deda ;cjnz a ,#co, tt ;是否1s到了mov deda , #0 ;计数值清除为0cpl wled; ;led灯亮灭变换inc sec; ;秒计数加1mov a , se

25、c;cjnz a , #60; tt ;是否1 min到了1 min time outinc min; ;分计数加1mov sec , #0 ;秒计数清为0mov a , mincjnz a , #60 ;tt ;是否1 h到了1 hour time out inc hour ;小时计数加1 mov min , #0 ;分计数清为0 mov a , hour; cjnz a #24, tt ;是否24 h到了 mov sec, #0 ;秒钟变量清除为0 mov min, #0 ;分钟变量清除为0 mov hour ,#0 ;小时变量清为0 tt: pop acc ;将累加器由堆栈取出 reti

26、-k2:hh k3:mm k4:ok ;设置目前时间set-time: ;设置现在的时间包括小时及分钟。clr tr0 ;定时器动作暂停mov sec,#0 ;秒钟变量清为0scan 3 key to adj. s0:jb k2, s1 ;未按下k2键则继续扫描 k1 keyed adj hh. ;小时调整 call bz; ;发出哗的一声 inc hour mov a, hour cjne a, #24, s11 ;是否24小时到了 mov hour, #0; s11: call conv ;转换显示数据到lcd mov r5, #20 ;延迟一下 call delay jmp s0 ;继续

27、程序执行. s1: jb k3, s2 ;未按下k3键则继续扫描 k2 keyed adj mm. ;分钟调整 call bz; inc min; mov a, mincjne a, #60, s21 ;60 min是否到了mov min, #0; s21: call conv ;数据转换到lcd mov r5, #20 ;延迟一下 call delay jmp s0 ;继续程序执行 s2: jb k4, s0; jnb k4, $; ;有按下则等待放开来 k3 keyed ok.; ;设置完成 call bz;call bz; setb tr0; ;启动定时器ret; -a:dig x: l

28、cd x pos ; 在lcd第一行显示数字show on lcd line1 show-dig: mov b #10 ;设置被除数 div ab ;除法运算,结果a存商数,b存余数 add a, #30h ;a为十位数,转换为字符push b; ;b放入堆栈暂存起来mov b, x; ;设置lcd显示位置call lcdp1;pop b ;b由堆栈取出mov a, b ;b为个位数add a, #30h ;转换为字符inc x ;lcd显示位加1mov b, x ; 设置lcd显示位置call lcdp1 ;由lcd显示出来ret;-show on lcd line2a:dig x:lcd

29、x pos ;在lcd的第二行显示数字sgow-dig2: mov b, #10 ;设置被初数div ab; ;除法运算,结果a存商数,b存余数add,#30h ;a为十位数,转换为字符push b; mov b, x ;设置lcd显示位置call lcdp2 ;由lcd显示出来 pop b; mov a, b ;b为个位数add a, #30h ;转换为字符 inc x; ;lcd显示位加1 mov b, x ;设置lcd显示位置 call lcdp2 ;由lcd显示出来 ret - ;显示现在的时间 时时:分分:秒秒 数据 convert to ascii and showconv:将时分

30、的数据转换为数字数据显示在lcd上。 conv: show hour. ;显示小时数据mov a, hour mov x, #5 call show_dig2inc x mov a, # : mov b, x call lcdp2 show min. ;显示分钟数据 mov a, min;inc x;call show_dig2inc xmov a, #: mov b, x call lcdp2; show sec. ;显示时间秒数 mov a, sec inc x; mov a, sec inc x call show_dig2 ret;* lcd control;*set-lcd:对lcd

31、做初始化工作。clr en; en=0 ;启用失败call init_lcd ;初始化lcdmov r5,#10 ;延迟一下call delaymov dptr, #lmess1 ;指针指到显示消息1mov a, #1 ;显示在第一行 call lcd_print ;显示执行消息1于第一行mov dptr, #lmess2 ;指针指到显示消息2mov a, #2 ; 显示在第二行call lcd_print ;显示执行消息2于第二行ret-init_lcd1: ;lcd控制指令初始化mov a,#28h ;双行显示,字型使用5*7点阵call wcom;mov a;#0ch ;光标出现,不闪烁

32、call ccommov a ,#0eh ;每次向右移一位,显示屏不移动call wcommov a, #01h ;清除lcd显示屏call wcom;ret-clr_line1: 清除lcd的第一行字符。mov a,#80h ;设置第一行地址; call wcommov r0,#24 ;设置计数值 c1:mov a,# ;载入空格符到lcdcall wdata ;输出字符到lcddjnz r0,c1 ;计数结束ret-a=line 1 or 2 ;在lcd第一行或第二行显示字符dptr=message pointerlcd_print: cjnz a,#1,line2 ;判断是否为第一行li

33、ne1: mov a,#80h ;设置lcd的第一行地址call wcom ;写入命令call clr_line ;清除该行字符数据mov a,#80 ;设置lcd第一行地址call wcom jmp fillline2:mov a,#0c0h ;设置lcd的第二行地址call wcom;call clr_line;mov a,#0c0h;call wcom; fill: ;填入字符clr amovc a,a+dptr ;由消息区取出字符cjnz a,#0,lc1 ; 判断是否为结束码 retlc1:call wdata ;写入数据inc dptr ;指针加1jmp fill ;继续填入字符r

34、et-clr_line: ;清除该行lcd字符mov r0,#24cl1: mov a,#call wdatadjnz r0,cl1;ret-de: mov r7,#5 ;短暂延迟dinz r7,$ ret - en1: ;短脉冲产生启用信号 setb en call de clr en call de ret - init_lcd: ;4位i/o控制lcd接口初始化 mov p0, 30h; call en1; mov po, 30h; call en1; mov p0, #30h; call en1 mov p0, #20h ;启动4位接口指令 call en1 call init_lcd

35、1 ;lcd指令设置初始化 ret -wcom: 以4位控制方式将命令写入lcd。writ hi 4 bit ;写入高四位数据mov p0, aa clr rs ;设置写入命令call en1; rlc a ;左移四位 rlc a;rlc a;write l0 4 bit ;写入低四位数据 mov p0, aclr rs;set comman ;设置写入命令 ;call en1ret-wdata:以四位控制方式将数据写入lcd。write hi 4 bit ;写入高4位数据mov p0, a ;设置写入数据setb rscall en1 rlc a ;左移4位rlc arlc arlc awr

36、ite l0 4 bit ;写入低4位数据mov p0,asetb rs ;设置写入数据call en1; ret -print a char on lcd line 1a=asc datab=line x pos.lcdp1: ;在lcd的第一行显示字符。line 1push acc ;将a放入堆栈mov a ,b ; 设置显示地址add a,#80h ;设置lcd第一行地址call wcom ;写入命令pop acc ;由堆栈取出acall wdata ;写入数据 ret -print a char on lcd line 2a=asc data b=line x pos.lcdp2: ;

37、在lcd的第二行显示字符。line 1push accmov a,b ;设置显示地址add a,#0c0h ;设置lcd的第二行地址call wcom;pop acccall wdataret-delay r5*10 ms ;延迟子程序delay: ;总延迟子程序r5*10 msmov r6,#50;d1: mov r7, #100;djnz r7, $djnz r6, d1djnz r5, delayret - led_bl: ;工作指示灯闪烁 mov r4, #4; leo:cpl wled ;位反向 mov r5, #10 ;延迟100ms call delay; djnz r4,le0

38、 ret -mmenu: db“1-set 2-al 3-sal” ,0 ;lcd显示数据 madj: db“k2: h k3: m k4: ok”, 0 mlal: db“now alarm time: ”, 0 maadj: db“k3: h k3: m k4: ok”, 0menu: ;lcd显示菜单 mov dptr, #mmenu mov a, #1; call lcd_print ret -bz: ;压电喇叭发出哗的一声。mov r6, #0b1:call dex cpl spk djnz r6, b1;mov r5, #10;call delay;ret-dex: mov r7,

39、#180 ;短暂延迟de1: nop; djnz r7, de1; ret - look alarm timelook-atime: ;查看已设置的闹钟时间。show hour. ;显示小时数 mov a, hh mov x, #5; call show_dig2 inc x; mov a, #:mov b, x;call lcdp2; show min. ;显示分钟数mov a, mm; inc x call show_dig2 inc x mov a, #: mov b, x call lcdp2 show sec. ;显示秒数 mov a, #0; inc x; call show_dig2 ret- k2: hh k3:mm k4:ok ;设置闹铃时间set-atime: call look_atime ;加载闹铃时间数据csan 3 key to adj. as0: jb k2, as1

温馨提示

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

评论

0/150

提交评论