ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:303KB ,
资源ID:3063966      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3063966.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(单片机综合设计.doc)为本站上传会员【丰****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

单片机综合设计.doc

1、 大连理工大学本科设计报告 题目:基于7290的LED时钟系统设计 课程名称: 单片机综合设计 学院(系): 电子信息与电气工程学部 专 业: 电子信息工程 班 级 电子0804 学 号: 200801204 学生姓名: 宋陆阳 成 绩: 2011 年 05 月 23 日 题目:基于7290的LED时钟系统设计 1 设计要求 1)显示功能

2、 a.用开关K1\K2切换用8位数码管显示当前“时-分-秒”; b.用开关K1\K2切换用8位数码管显示当前“年-月-分”; c.用开关K1\K2切换用8位数码管显示报警“日.时-分”。 2)修改功能: a.能够通过按键操作修改当前时、分、秒并显示; b.能够通过按键操作修改报警时、分并显示。 3) 错误提示功能: 当输入修改值不符合时间合法数值时即时大于24,分大于60,秒大于60,提示"Error"错误,并返回正常走表。 4)报警功能: a.整点报时功能:59分55秒开始每秒响一下,且00秒频率提高; b.定时报警:当当前走表时间与所设置的报警时间一致时

3、驱动蜂鸣器产生“DO.RA.MI.FA.SO.LA.XI.DUO.”的铃音进行定时报警。 2 设计分析及系统方案设计 1. 主程序结构:无限循环结构. 完成初始化功能:进行7290复位,初始化PCF8563T的时间数据,对中断INT0,INT1进行工作方式设置,开中断,并进入无限循环且等待中断产生. 2.中断INT0:顺序结构 每秒钟PCF8567的CLKOUT产生一个中断,从PCF8563T中读入数据进行调整拆分送入内存,时钟秒加一并显示,当K1=1,K2=1时,8位数码管显示当前“时-分-秒”;当K1=0时,8位数码管显示当前“年-月-分”;K1=1,K2=0时,8位数码管显示

4、报警“日.时-分”. 判断当前时间是否为整点,若是,则从59分55秒开始每秒钟驱动蜂鸣器每秒响1000HZ铃音0.5秒,00秒频率提高; 判断当前时间是否与所设置报警时间相同,若满足要求,则驱动蜂鸣器产生一个“DO.RA.MI.FA.SO.LA.XI.DUO.”的铃声。 3.中断INT1:顺序结构 当有按键操作时产生中断。 读取键值,当按链介于“A—E”选择需修改的内容:A:修改当前时间“时”;B:修改当前时间“秒”;C:修改当前时间“分”;D:修改报警时间“时”;E:修改报警时间“分”,然后等待输入2次按键"0-9"所修改数据,当输入数据部符合时间格式时,即时大于24,分大于60,

5、秒大于60,显示提示“Error”并返回主程序,当输入数据符合正常时间格式时,回显,并退出中断;若输入其它键则无操作退出中断. 3 系统电路图 ZLG7290B PCF8563T 4 外围接口模块硬件电路功能描述 P3.2接PC8567的CLKOUT,每秒产生一次中断; P3.3接ZLG7290B,当有按键操作时产生中断; P1.3接蜂鸣器; P1.2接开关K1,选择切换显示当前“时分秒”或“年月日”; P1.4接开关K2,选择切换显示当前时间或报警“日时分”; P1.7接ZLG7290复位键; P1.0接I2C通讯线SDA; P1.1接I2C通讯线SCK。 89

6、C51: 89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统

7、提供了一种灵活性高且价廉的方案。 ZLG7290B: ZLG7290B是广州周立功单片机发展有限公司自行设计的数码管动态显示驱动、建键盘扫描管理芯片。能够驱动8位共阴极结构的LED数码管或64位独立的LED,同时还能扫描管理多达64个按键(S1-S56、F0-F7)的扫描识别。其中8只健(F0-F7)可以作为功能键使用就像电脑键盘上的Ctrl、Shift、Alt键一样。另外ZLG7290B 内部还设置有连击计数器,能够使某些按键按下后不松手而连续有效。接口采用I2C结构。该芯片为工业级芯片,被广泛运用于仪器仪表等工业测量领域的电路设计中。 特点:直接驱动1英寸以下的8位LED共阴极数码

8、管或独立的64位LED ;能够管理多达64只按键。具有自动去抖,其中8只按键可直接作为功能键使用;段电流可达20mA。位电流可达100mA以上;利用外接功率驱动器可以驱动一英寸以上的大型数码管;具有闪烁、段点亮、段熄灭、功能键、连击计数等功能;提供10种数字、21种字母的译码显示功能,也可以将字形码写入显示寄存器直接显示数据;系统仅使用键盘电路时,工作电流为1mA;与主控器之间采用I2C 接口,仅需两条信号线;工作电压范围:+3.3~+5.5V;工作温度范围:-40℃~+85℃;封装:DIP24(窄体) 或SOP-24. PCF8563T: PCF8563T 是低功耗CMOS实时时钟/日历

9、芯片,它具有一个可编程的时钟输出,一个中断输出和掉电检测电路,与外部主控器之间通过I2C总线连接。最大总线速度为400KHZ。每次对其的读写操作内部的地址寄存器都会自动产生增量。PCF8563T内部具有16个8位的寄存器;一个可自动增量的地址寄存器;一个32.768KHZ的振荡器(具有集成的补偿电容),一个用与为实时时钟RTC提供时钟源的分频器;一个可编程的时钟输出电路;一个定时器;一个报警器;一个掉电检测电路和一个400KHZ的I2C总线接口 5 主程序中主要变量定义 变量名称 RAM单元/寄存器 功能 当前时间值 10H-1DH 程序初始时存储初始时间, 当运行后存

10、当前时间 PC8563时间 20H-29H 存储从PC8563中读出当前的时间参数 当前时间1 30H-37H 存储处理无效位后当前日、月、年信息 当前时间2 38H-3FH 存储处理无效位后当前秒、时、分信息 报警时间 40H-47H 存储处理无效位后报警日、时、分信息 Data 50H-57H 存储“Error”的查表信息 数据个数 R7 I2C操作时读入数据个数 目标地址 R0 I2C操作时目标数据块首址 器件地址 R2 I2C操作时器件内部从地址 写地址 R3 I2C写操作时地址 读地址 R4 I2C读操作时地址

11、 6 系统软件中各个子程序的功能描述 子程序名称 入口参数 出口参数 功能 描述 INT_RCT 无 无 走表中断子程序,并且 判断整点闹铃以及报警 INT_7290 无 无 按键中断子程序, 修改当前“时分秒”或者报警“时分”可以进行输入错误提示,回显等功能 ALARM 无 无 产生0.5秒1000HZ音频 ALARM1 R5、R6 无 产生指定频率音频0.5秒 CHAFEN 20H-2AH 30H-47H 对20H-2AH数据进行拆分 CF A R3、R4 把A拆分成独立BCD码 ADJUST 20H-26H 20H-2

12、6H 屏蔽PCF8563读出无关位 DIS_ERR 无 无 LED显示“Error” RDKEY 无 A 读按键值 WR8563 写8563操作 DELAY 无 无 延时子程序 7 主程序程序流程图 开辟一个数据区10H-1DH存储时间、data-data+7存储显示命令参数 等待中断 主程序流程图 主程序 将10H-1DH存储时间、命令参数送PCF8563T中 A键? 查询按键? 按键定义 A键:修改小时 B键:修改分; C键:修改秒; D键:修改按键时; E键:

13、修改按键分; Y Y N Y INT1 读取键值 查询按键? N 读取键值 送小时的位 RETI N C键? B键? 当前分钟处理 ( 同小时 处理 ) 当前秒处理 ( 同小时 处理 ) 开中断 Y N 关中断 Y Y N 调拆分、查表送28H-2FH 送7290调显示 N 将51的10H-1DH的数据送PCF8563T D键? 报警时处理 ( 同小时 处理 ) D键? 报警时处理 ( 同小时 处理 ) N Y Y N

14、 数据合法 N Y 读取键值 送小时的时位 数据合法 Y N 调程序显示"Error" 按键中断INT_7290 利用RDADD从PCF8563T中读出时间参数送20H-2AH 利用ADJUST屏蔽掉参数中的无用的位 中断服务NINTernetINTernet 调CHAFEN子程序将时间分别送28H-2FH、38H-3FH缓冲区 P1.2=1? RETI 显示时分秒 显示年月日 N Y 报警时间到 整点时间到 P1.4=1? 显示报警日时分 产生报警闹铃 产生整点闹铃 Y Y N N 终端服务INT0 闹铃1

15、000HZ,0.5ms ALARM: 程序入口 PUSH PSW PUSH 07H T0.T1初始化 R7←10 启动T0.T1 N TF0=1? Y T0初值,TF0←0 驱动BUZZ N Y TF1=1? T1初值,TF1←0 N R7-1→R7 R7=0? Y 关闭T0.T1 POP 07H POP PSW 8 程序清单 SDA BIT P1.0 ;定义I2C信号引脚 SCL BIT P1.1 WSLA EQU 070

16、H RSLA EQU 071H DISDA EQU 20H ;源数据块首地址 DISCON EQU 08H ;写入数据个数 DATA_1 EQU 50H ;变量区首地址 WSLA_8563 EQU 0A2H ;PCF8563口地址 RSLA_8563 EQU 0A3H WSLA_7290 EQU 70H ;ZLG7290口地址 RSLA_7290 EQU 71H ORG 8000H LJMP 8100H ORG 8003H LJMP INT_RCT ORG 8100H ORG 8013H LJMP INT_7290

17、 ORG 8100H START: MOV SP,#60H CLR P1.7 ;7290复位 LCALL DELAY SETB P1.7 ;*********************************************************** ;设定PCF8563的时间和命令参数(参数和控制命令缓冲区10H-1DH) ;*********************************************************** MOV 10H,#00H ;启动控制字 MOV 11H,#1FH ;设置报警及定时器中断 MOV

18、 12H,#55H ;秒单元 MOV 13H,#37H ;分单元 MOV 14H,#10H ;小时单元 MOV 15H,#26H ;日期单元 MOV 16H,#03H ;星期单元 MOV 17H,#05H ;月单元 MOV 18H,#10H ;年单元 MOV 19H,#36H ;设定分报警 MOV 1AH,#10H ;设定小时报警 MOV 1BH,#26H ;设定日报警 MOV 1CH,#03H ;设定星期报警 MOV 1DH,#83H ;设定CLKOUT的频率(1S) MOV DATA_1, #13H ;变量缓冲区(显

19、示 "Error " ) MOV DATA_1+1,#13H ;注意: MOV DATA_1+2,#13H ;变量取值范围0-F MOV DATA_1+3,#11H MOV DATA_1+4,#12H MOV DATA_1+5,#11H MOV DATA_1+6,#11H MOV DATA_1+7,#10H ;************************************************************ MOV R7,#0EH ;写入参数个数(时间和控制字) MOV R0,#10H ;参数和

20、控制命令缓冲区首地址 MOV R2,#00H ;从器件内部从地址 MOV R3,#WSLA_8563 ;准备向PCF8563T写入数据串 LCALL WRNBYT ;写入时间、控制命令到8563 SETB EA MOV TCON,#00H SETB EX0 CLR IT0 SETB EX1 SETB IT1 SJMP $ ;等待中断 ;************************************************************* ; 中断服务INT_RCT子程序 ;***************

21、 INT_RCT:MOV R7,#0AH ;读出数个数 MOV R0,#20H ;目标数据块首址 MOV R2,#02H ;从器件内部从地址 MOV R3,#WSLA_8563 MOV R4,#RSLA_8563;准备读PCF8563T的时间参数 LCALL RDADD ;调读数据子程序,将读出的数据 ;存放于单片机20-26H中 LCALL ADJUST ;调时间调整子程序 MOV 12H,20H MOV 13H,21H MOV

22、14H,22H MOV 19H,27H MOV 1AH,28H MOV 1BH,29H LCALL CHAFEN ;调拆分子程序(包含查表) MOV A,22H ;判断是否到定时时间 CJNE A,28H,MMBUY MOV A,21H CJNE A,27H,MMBUY MOV A,#00H CJNE A,20H,MJ_1 MOV R5,#21H MOV R6,#0F9H CALL ALARM1 MJ_1: MOV A,#01H CJNE A,20H,MJ_2 MOV R5,#0E0H MOV R6,#0F9H CA

23、LL ALARM1 MJ_2: MOV A,#02H CJNE A,20H,MJ_3 MOV R5,#8BH MOV R6,#0FAH CALL ALARM1 MJ_3: MOV A,#03H CJNE A,20H,MJ_4 MOV R5,#0D7H MOV R6,#0FAH CALL ALARM1 MJ_4: MOV A,#04H CJNE A,20H,MJ_5 MOV R5,#67H MOV R6,#0FBH CALL ALARM1 MJ_5: MOV A,#05H CJNE A,20H,MJ_6 MOV R5,#0E8H

24、 MOV R6,#0FBH CALL ALARM1 MJ_6: MOV A,#06H CJNE A,20H,MJ_7 MOV R5,#5BH MOV R6,#0FCH CALL ALARM1 MJ_7: MOV A,#07H CJNE A,20H,MMBUY MOV R5,#8EH MOV R6,#0FCH CALL ALARM1 MMBUY: MOV A,#59H ;判断是否整点 CJNE A,21H,LC MOV A,#55H CJNE A,20H,LC_1 LCALL ALARM LC_1: MOV A,#56H CJNE

25、A,20H,LC_2 CALL ALARM LC_2: MOV A,#57H CJNE A,20H,LC_3 CALL ALARM LC_3: MOV A,#58H CJNE A,20H,LC_4 CALL ALARM LC_4: MOV A,#59H CJNE A,20H,LC CALL ALARM LC: MOV A,#00H CJNE A,21H,LCC CJNE A,20H,LCC MOV R5,#44H MOV R6,#0FEH CALL ALARM1 LCC: MOV R7,#08H MOV R2,#10H MOV

26、R3,#WSLA_7290 JNB P1.2,YEARS ;使用P1.2控制显示内容 JNB P1.4,BAOJIN MOV R0,#38H ;显示小时、分钟和秒 SJMP DISP YEARS: MOV R0,#30H ;显示年、月和日期 SJMP DISP BAOJIN: MOV R0,#40H DISP: LCALL WRNBYT ;调7290显示 JNB P3.2,$ RETI ;************************************************************** ;ALARM ;**

27、 ALARM: PUSH PSW ;产生0.5秒1000HZ音频 PUSH 07H MOV TMOD,#11H MOV TL0,#33H MOV TH0,#0FEH MOV TL1,#0FCH MOV TH1,#4BH SETB TR0 SETB TR1 LOOPC: JNB TF0,$ MOV TL0,#33H MOV TH0,#0FEH CLR TF0 CPL P1.3 JB TF1,LOOPC MOV TL1

28、0FCH MOV TH1,#4BH CLR TF1 DJNZ R7,LOOPC CLR TR0 CLR TR1 POP 07H POP PSW RET ALARM1:PUSH PSW ;产生指定频率音频0.5秒 PUSH 07H MOV TMOD,#11H MOV TL0,R5 MOV TH0,R6 MOV TL1,#0FCH MOV TH1,#4BH SETB TR0 SETB TR1 LOOPD: JNB TF0,$ MOV TL0,R5 MOV TH0,R6 CLR TF0 CPL P1.3 J

29、B TF1,LOOPD MOV TL1,#0FCH MOV TH1,#4BH CLR TF1 DJNZ R7,LOOPD CLR TR0 CLR TR1 POP 07H POP PSW RET ;************************************************************ ;各子程序 ;************************************************************* ORG 8300H CHAFEN: PUSH PSW ;对20H-2AH单元的

30、参数拆分, PUSH ACC ;查表后送28H-2FH(年月日) PUSH 03H ;和38H-3FH (时分秒) PUSH 04H MOV A,20H ;取秒参数 LCALL CF ;拆分、查表在R4(H)、R3中 MOV 38H,R3 ;送秒的个位 MOV 39H,R4 ;送秒的十位 MOV 3AH,#02H ;送分隔符- MOV A,21H ;取分参数 LCALL CF ;拆分、查表在R4(H)、R3中 MOV 3BH,R3 ;送分的个位 MOV 3CH,R4 ;送分的十位 MOV 3

31、DH,#02H ;送分隔符- MOV A,22H ;取小时参数 LCALL CF ;拆分、查表在R4(H)、R3中 MOV 3EH,R3 ;送小时的个位 MOV 3FH,R4 ;送小时的十位 MOV A,23H ;取日起参数 LCALL CF MOV A,R3 ORL A,#01H MOV R3,A MOV 30H,R3 MOV 31H,R4 MOV A,25H ;取月参数 LCALL CF MOV A,R3 ORL A,#01H MOV R3,A MOV 32H,R3 MOV 33H,R4

32、 MOV A,26H ;取年参数 LCALL CF MOV A,R3 ORL A,#01H MOV R3,A MOV 34H,R3 MOV 35H,R4 MOV 36H,#0FCH ;年的高两位处理 MOV 37H,#0DAH MOV A,27H ;报警分 LCALL CF MOV 40H,R3 MOV 41H,R4 MOV 42H,#02H MOV A,28H ;报警时 LCALL CF MOV 43H,R3 MOV 44H,R4 MOV 45H,#01 MOV A,29H ;报警日 LCA

33、LL CF MOV 46H,R3 MOV 47H,R4 POP 04H POP 03H POP ACC POP PSW ;******************************************************************* CF: PUSH 02H ;将A中的数据拆分为两个独立的 PUSH DPH ; BCD码并查表 PUSH DPL ; 结果分别存于R4、R3中 MOV DPTR,#LEDSEG MOV R2,A ANL A,#0FH MOVC A,@A+DPTR MOV R3,A

34、 MOV A,R2 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV R4,A POP DPL POP DPH POP 02H RET ;******************************************************************* ;将20H -26H中从PCF8563中读出的7个字节参数的无关位屏蔽掉(参见表8.7) ;******************************************************************* ADJUST: PUSH ACC

35、 MOV A,20H ;处理秒单元 ANL A,#7FH MOV 20H,A MOV A,21H ;处理分单元 ANL A,#7FH MOV 21H,A MOV A,22H ;处理小时单元 ANL A,#3FH MOV 22H,A MOV A,23H ;处理日期单元 ANL A,#3FH MOV 23H,A MOV A,24H ;处理星期单元 ANL A,#07H MOV 24H,A MOV A,25H ;处理月单元 ANL A,#1FH MOV 25H,A POP

36、 ACC RET ;************************************************************* ;中断服务INT_7290子程序 ;*************************************************************** INT_7290:PUSH 00H PUSH 02H PUSH 03H PUSH 04H PUSH 07H PUSH ACC PUSH PSW LCALL RDKEY ;读取第一个按键值(功能键) CJNE A,#0AH,MINUTE ;判

37、断是A键吗? ;是A键时开始处理小时数据 AKEY_1: JB P3.3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第二个按键值(小时的十位数? SWAP A ;处理输入的数据(十位) CJNE A,#00H,X_1 SJMP XX X_1: CJNE A,#10H,X_2 SJMP XX X_2: CJNE A,#20H,X_3 SJMP XX X_3: LJMP DIS_ERR XX: ANL 14H,#0FH ORL 14H,A JB P3.3,$ ;以查询的方式等待下一次按键操作 LCA

38、LL RDKEY ;读取第三个按键值(小时的个位数) CJNE A,#00H,Y_1 LJMP YY Y_1: CJNE A,#01H,Y_2 LJMP YY Y_2: CJNE A,#02H,Y_3 LJMP YY Y_3: CJNE A,#03H,Y_4 LJMP YY Y_4: CJNE A,#04H,Y_5 LJMP YY Y_5: LJMP DIS_ERR YY: ANL 14H,#0F0H ;处理输入的数据(个位) ORL 14H,A LCALL WR8563 LJMP BACK MINUTE: CJNE A,#0BH,SECO

39、ND ;判断是B键吗?是B键时开始处理分数据 AKEY_2: JB P3.3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第二个按键值(分钟的十位数? SWAP A ;处理输入的数据(十位) CJNE A,#00H,Z_1 SJMP ZZ Z_1: CJNE A,#10H,Z_2 SJMP ZZ Z_2: CJNE A,#20H,Z_3 SJMP ZZ Z_3: CJNE A,#30H,Z_4 SJMP ZZ Z_4: CJNE A,#40H,Z_5 SJMP ZZ Z_5: CJNE A,#50H,Z_6

40、 SJMP ZZ Z_6: LJMP DIS_ERR ZZ: ANL 13H,#0FH ORL 13H,A JB P3.3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第三个按键值(分钟的个位数) ANL 13H,#0F0H ;处理输入的数据(个位) ORL 13H,A LCALL WR8563 ;将修改后的时间参数送PCF8563 LJMP BACK SECOND: CJNE A,#0CH,HOUR_1 ;判断是C键吗?是C键时开始处理秒数据 AKEY_3: JB P3.3,$ ;以查询的方式等待下一次按键操作 L

41、CALL RDKEY ;读取第二个按键值(秒的十位数? SWAP A ;处理输入的数据(十位) CJNE A,#00H,Q_1 SJMP QQ Q_1: CJNE A,#10H,Q_2 SJMP QQ Q_2: CJNE A,#20H,Q_3 SJMP QQ Q_3: CJNE A,#30H,Q_4 SJMP QQ Q_4: CJNE A,#40H,Q_5 SJMP QQ Q_5: CJNE A,#50H,Q_6 SJMP QQ Q_6: LJMP DIS_ERR QQ: ANL 12H,#0FH ORL 12H,A JB P3.

42、3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第三个按键值(秒的个位数) ANL 12H,#0F0H ;处理输入的数据(个位) ORL 12H,A LCALL WR8563 ;将修改后的时间参数送PCF8563 LJMP BACK HOUR_1: CJNE A,#0DH,MIN_1 ;判断是D键吗? ;是D键时开始处理报警小时数据 AKEY_4: JB P3.3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第二个按键值(小时的十位数? SWAP A ;处理输入的数据(十位)

43、CJNE A,#00H,E_1 SJMP EE E_1: CJNE A,#10H,E_2 SJMP EE E_2: CJNE A,#20H,E_3 SJMP EE E_3: LJMP DIS_ERR EE: ANL 1AH,#0FH ORL 1AH,A JB P3.3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第三个按键值(小时的个位数) CJNE A,#00H,F_1 LJMP FF F_1: CJNE A,#01H,F_2 LJMP FF F_2: CJNE A,#02H,F_3 LJMP FF F_3:

44、CJNE A,#03H,F_4 LJMP FF F_4: CJNE A,#04H,F_5 LJMP FF F_5: LJMP DIS_ERR FF: ANL 1AH,#0F0H ;处理输入的数据(个位) ORL 1AH,A LCALL WR8563 SJMP BACK MIN_1: CJNE A,#0EH,BACK ;判断是E键吗? ;是E键时开始处理报警分数据 AKEY_5: JB P3.3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第二个按键值(分钟的十位数? SWAP A ;处理输入的数据(十位)

45、 CJNE A,#00H,S_1 SJMP SS S_1: CJNE A,#10H,S_2 SJMP SS S_2: CJNE A,#20H,S_3 SJMP SS S_3: CJNE A,#30H,S_4 SJMP SS S_4: CJNE A,#40H,S_5 SJMP SS S_5: CJNE A,#50H,S_6 SJMP SS S_6: LJMP DIS_ERR SS: ANL 19H,#0FH ORL 19H,A JB P3.3,$ ;以查询的方式等待下一次按键操作 LCALL RDKEY ;读取第三个按键值(分钟的个位数)

46、 ANL 19H,#0F0H ;处理输入的数据(个位) ORL 19H,A LCALL WR8563 ;将修改后的时间参数送PCF8563 SJMP BACK BACK: CJNE A,#0FH,DOWN DOWN: CLR IE0 ;清标志 POP PSW POP ACC POP 07H POP 04H POP 03H POP 02H POP 00H RETI ;*************************************************** ; DISPAY "Error" ;***************

47、 DIS_ERR:PUSH 07H PUSH 00H PUSH 01H PUSH 02H PUSH 03H MOV DPTR,#LEDSEG ;开始对变量查表 MOV R7,#DISCON ;写入数据个数 MOV R0,#DISDA ;源数据块首地址 MOV R1,#DATA_1 LOOP1: MOV A,@R1 MOVC A,@A+DPTR ;查表得对应的字形码 MOV @R0,A ;送显示缓冲区 INC R1 INC R0 DJNZ R7,L

48、OOP1 MOV 28H,#00H LOOP: MOV R7,#DISCON MOV R2,#10H MOV R3,#WSLA MOV R0,#DISDA LCALL WRNBYT ;调显示子程序 LCALL DELAY LCALL DELAY POP 03H POP 02H POP 01H POP 00H POP 07H SJMP DOWN ;********************************************************* ; 读键值子程序 (;出口参数累加器A---获取到的键值)

49、 RDKEY: MOV R0,#1FH ;键值缓冲单元 MOV R7,#01H ;取一个数据(键值) MOV R2,#01H ;指向内部数据键值寄存器地址 MOV R3,#WSLA_7290 ;取器件地址(写) MOV R4,#RSLA_7290 ;取器件地址(读) LCALL RDADD ;读出7290的01H单元中的键值 MOV A,1FH ;取健值送缓冲单元 DEC A RET ;****************

50、 ; 向日历芯片写入时间参数子程序 ;将RAM的10H-1DH中的时间参数(含控制字)写入芯片的00H-0DH单元 ;****************************************************************** WR8563: MOV R7,#0EH ;写入参数个数(时间和控制字) MOV R0,#10H ;参数和控制命令缓冲区首地址 MOV R2,#00H ;从器件内部从地址 MOV R3,#WSL

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服