当前位置:文档之家› 智能时控开关设计

智能时控开关设计

智能时控开关设计摘要本系统通过单片机的定时器功能,利用8279键盘及显示功能,实现了5路开关的时控功能。

通过8279控制的键盘0-9输入调节时间的数字键,A为启动定时器,B设置时间,C时间清零,D停止,E通过外部干预停止提示,F设置开关通道和开关时间。

通过设置定点时间的子程序中添加判断语句实现开关选中有LED亮灯提示;定点到达通过显示程序添加判断语句实现LED闪烁提示,使得程序简洁。

合理利用定时中断T0中断程序控制P1.5输出1kHz方波控制蜂鸣器鸣叫提示。

外部干预后LED灭,蜂鸣器停止鸣叫。

关键字:定时器失控开关 8279 键盘显示引言随着科学技术和社会经济的迅猛发展,人类社会中自动控制,智能控制越来越普及,而单片机正是这种技术普及的基础。

顺着单片机的生产技术和其本身的性能的快速提高,以及单片机的价格便宜等因素,单片机被应用于非常广泛的领域。

本文中的智能时控开关就是应用单片机来实现的。

主要应用到了单片机的定时器模块,输入输出模块结合8279的键盘输入和显示功能来实现了对外部5路开关的实时控制。

同时,近年来顺着声控开关的广泛应用,其方便人们的同时,缺点也是逐渐被人们发现。

例如外部噪音的存在也会使声控开关点亮电灯,那样会使得开关的节能性能不是很好。

所以人们希望通过实时控制开关来控制电灯。

顺着单片机的功能不断完善和其价格的大众化,使得智能时控开关得到广泛的应用。

与此同时,智能时控开关还能运用于其他很多的领域,所以本文所研究的智能失控开关具有重要的意义。

本文所应用的基本程序来之实验室的实验系统的帮助文档中的8279显示实验中的时钟功能实验。

在基础程序之上进行改进添加自己的元素实现实验的基本功能。

李晶 2010-6-7目录摘要 (I)引言 ...................................................................................................................... I I 1功能要求 (1)1.1主要内容 (1)1.2基本要求 (1)1.3提高部分 (1)2准备知识 (2)3系统设计 (2)3.1控制端口分配及开关状态定义 (2)3.2控制键的分配和主要寄存器功能 (3)3.21按键分配 (3)3.22寄存功能 (3)3.3程序设计 (3)3.31主程序的设计 (3)3.32设置时间的设计 (4)3.33键盘输入设计 (5)3.34读键盘子程序 (6)3.35设置开关时间 (7)3.36时钟T1中断服务程序 (8)3.37 显示的实现 (8)3.38开关时间到达判断和蜂鸣器 (9)3.39开关通道置位和灯的闪烁控制 (9)4主要参数的计算 (10)5实验仿真 (10)6实验程序 (11)6 功能扩展 (23)7参考文献 (23)8附录 (24)1功能要求1.1主要内容利用单片机中的定时器、IO接口、中断系统等资源,设计一智能时控开关系统,能根据时刻信息或倒计时信息对多路开关进行控制。

1.2基本要求系统含24小时时钟,用数码管可显示小时、分钟及秒时间信息;可通过按键对时钟进行校准,可对定时时刻或倒计时时间进行设置;定时时间到时,用发光二极管闪烁及蜂鸣器发声提示。

人工干预后停止闪烁及发声,并用发光管指示开关状态。

1.3提高部分可对多路(3~5路) 开关进行定时控制;可对每路按多个时间顺序设置开关控制。

(如:8:00开,12:00关,14:00开,16:00关;尝试为系统设置语音提示功能。

2准备知识试验箱内部理解图如图1所示图1 8279键盘显示电路在程序中需要用到8279的键盘显示功能,那么在做实验之前必须先弄清楚8279的基本功能,8279的基本功能表见附录1。

通过控制8279可以很方便的实现键盘的输入和LED的显示功能。

3系统设计3.1控制端口分配及开关状态定义根据题目的要求,需要实现(3-5)路开关的控制,那么需要用到单片机的输出口,由于实验电路板上面只有p1和p3口可以外接,其次可以用p0口通过数据锁存器输出控制LED灯来表示开关的状态,但是p0口的控制需要每次选通74LS373再输出数据,而且访问外部数据存储器只能用寄存器A,不方便操作,所以在这里不选用p0口;因为p3口做一般的输入输出不常用,所以这里也不选。

那么本文用p1口的p1.0-p1.4四个口实验控制四路开关的状态。

用p1.5输出方波来控制蜂鸣器的鸣叫。

具体分配如表1所示表1 控制端口分配选择LED的亮表示开关的开,LED灯的灭来表示开关的关,因为p1.1在单片机复位之后是高电平状态,那么可以再程序的初始化时给p1口输出低电平即可方便实现开关状态的控制。

3.2控制键的分配和主要寄存器功能3.21按键分配在与8279相连的键盘上,除了基本的0-9十个数字键之外,还有A-F六个键,那么可以通过这六个按键来实现所需要的控制,因为键盘上有0-9数字键,在设置时间时候就可以直接通过按键来设置,不需要用加1、减1的方式来控制了。

通过分析可以知道,实现智能开关的控制,首先需要实现数字时钟的显示控制功能。

那么这里需要的控制键有,时钟起动、设置时间、清零、停止四个键,需要实现开关的控制,那么开关状态改变时间设置需要一个键,再次外部干涉需要一个键。

所以按键的功能分配如表2所示寄存器的分配在整个程序的设计过程中式非常重要的,如果不能分配好寄存器作用,在整个程序的设计工程中需要在很多的地方用到堆栈保护,那样不但增加工作量,也使得程序变得冗长,可读性变差。

所以,在程序设计之前应该对程序中用到的主要功能的寄存器进行分配处理。

表3是本文中的主要的寄存器的功能分配,在一些小程序中用到的功能这里不列出表3 主要寄存器功能3.3程序设计主要的程序是由主程序、定时中断程序、设置时间子程序、设置开关时间子程序、键盘输入子程序、显示子程序等部分组成,下面分别就这几个部分的设计过程详细介绍3.31主程序的设计主程序主要实现主程序的初始化,8279的初始化(调用子程序实现),设置定时模式和状态,实现显示(调用显示子程序),开定时中断T1,定时器开始工作。

读键盘的状态(通过子程序调用实现),通过查询的方式判断键盘值来实现键盘功能的子程序调用。

主程序流程图如图2所示图2 主程序流程图3.32设置时间的设计因为设计时间许要通过键盘来设置,那么就需要调用读键盘子程序来实现输入的功能,为了能够判断输入的数值是否合法,在键盘输入之程序中都给了标志位赋值为0FFH,那么可以通过标志位来判断输入是否合法。

因为需要分别输入时、分、秒的数值,所以需要在每次输入之前判断输入的合法性,如何判断将在键盘输入子程序里叙述。

设置时间子程序流程图如图3所示。

图3 设置时间子程序流程图3.33键盘输入设计时间的时、分、秒均是由两位数组成,所以在键盘输入子程序中需要实现键盘输入,为了响应调用程序,需要在键盘输入完成之前置标志位,如果输入合法标志位置为:0FFH,如果输入不合法置标志位为00H,判断输入是否合法可以通过判断输入的键值是否在需要的数值范围内,键盘输入的之程序流程图如图4所示。

图4 读键盘子程序流程图3.34读键盘子程序键盘输入子程序流程图如图5所示图5 读键盘子程序流程图3.35设置开关时间由于开关时间的设置不需要很高的精度,这里在设置开关的时间时就不需要设置秒钟的数值了,那么可以把秒钟的位来显示开关的通道数值,当开关通道被选中时相应的LED灯就被点亮,表示现在控制的开关是这个通道,当时间到达时LED灯闪烁提示开关状态改变。

设置开关时间的子程序流程图如图6所示图6 设置开关时间子程序流程图3.36时钟T1中断服务程序定时器时钟T1用于实现数值时钟,参考单片机课本的时钟的流程图,得到时钟流程图如图7所示图7 中断服务程序3.37 显示的实现实现显示功能不需要判断,直接从高位到低位的一次进行显示即可,在程序设计的过程中主要注意设置显示的位置来控制不同的数值显示的位置,单个键的显示通过调用子程序来实现。

显示子程序流程图如图8所示图8 显示子程序流程图3.38开关时间到达判断和蜂鸣器当某个开关的定时时间到达时需要进行处理,那么开关当时时刻是否达到需要在哪里判断才能满足每次循环都能对定时时间进行判断。

因为定时器的时间是通过定时器T1的中断程序完成的,那就说,没秒钟中断程序都需要执行20次,所以把开关时间判断放在T1的中断服务子程序中是最合适的,即能实现实时监控,当有需要控制的开关的定时时间达到时候能够迅速判断到。

本文通过定时中断T0实现蜂鸣器鸣叫控制。

在中断服务程序中对P1.5的电平进行反转,使其鸣叫。

只有在开关定时时间到时才开中断,从而实现时间到达蜂鸣器鸣叫的功能。

3.39开关通道置位和灯的闪烁控制为了指示被控制的开关序号,在设置定时时间时就可以设置使相应的LED 灯变成高电平,表示现在控制的是这个开关。

时间达到时,为了表示开关的状态变化,通过控制LED灯的闪烁来表示,那么在什么地方来控制相应的P1口的状态周期性变化。

考虑到显示时间子程序每秒钟要显示20次,那么这里把控制p1口状态周期性变化的程序放在显示子程序中能够方便的实现,只需要用一个CPL指令就可以实现状态口的周期性变化来控制LED灯的状态。

这里通过控制相应的标志位,如果定时时间到,则设置相应的标志位,实现闪亮LED灯控制。

当有外部干预时,不但需要清除LED灯的状态,还要清除控制LED灯闪烁的标志,同时还要时定时中断T0停止,是蜂鸣器停止鸣叫。

4主要参数的计算在整个实验的过程中,由于需要用到两个定时器,其中T1用来产生定时时钟,T0用来产生控制蜂蜜器的方波。

因为实验箱上的C51单片机的工作频率是11.0592MHz ,用来做定时时钟时,最大定时时间是定时器工作在方式1时16612(20)0.071s 11.059210-⨯=⨯ 不能满足1s 的时间要求,所以只能用循环的方式来实现一秒钟,选择定时器定时时间为50ms ,中断20次为1s ,那么定时器的初值应该为161612(2)50s 11.059210X m -⨯=⨯解得1X =19456,转化为十六进制等于4C00H 。

同理,定时器T0用来产生1KHz 的方波使蜂鸣器鸣叫,那么应该让定时器T0 5ms 溢出一次,所以有160612(2)5s 11.059210X m -⨯=⨯解得0X =60928,转化为十六进制等于FC8FH 。

5实验仿真为了更好实现实验功能,对实验电路进行了仿真,通过对仿真电路图的调试,得到比较好的实验结果,仿真电路图如图9所示图9 实验仿真电路图6实验程序程序中的具体功能在程序的注释中给出,实验程序如下;系统晶振是11.0592 MHz Z8279 EQU 0FF82H ;8279 状态/命令口地址D8279 EQU 0FF80H ;8279 数据口地址LEDMOD EQU 00H ;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址READKB EQU 40H ;读FIFO RAM 地址0 的命令字SIGN EQU 08H ;00H设置为输入合法标志位FLAG EQU 09HKEY0 EQU 00H ;开关1状态KEY1 EQU 01H ;开关2状态KEY2 EQU 02H ;开关3状态KEY3 EQU 03H ;开关4状态KEY4 EQU 04H ;开关5状态ORG 0000HAJMP STARTORG 000BH ;T0中断程序入口地址LJMP INT_T0ORG 001BH ;T1 中断程序入口地址LJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279 ;初始化8279MOV R4,#12H ;时MOV R3,#33H ;分MOV R2,#54H ;秒MOV R1,#20 ;秒MOV R0 ,#30H ;开关定时时间存储器其始地址MOV R7 ,#10CLR KEY0 ;清楚开关状态标志CLR KEY1CLR KEY2CLR KEY3CLR KEY4LOOP: MOV @R0,#0FFHINC R0DJNZ R7 ,LOOPMOV P1,#00HSETB SIGN ;标志MOV TMOD,#11HMOV TL1,#00HMOV TH1,#4CHMOV TL0,#8FHMOV TH0,#0FCHSETB ET0 ;中断允许SETB PT1SETB ET1SETB EA ;允许断WAIT: LCALL GETKEY ;读键盘CJNE A,#0FFH,CONT ;判断是否有键输入MOV A,B ;有键输入CJNE A,#3CH,KEY_A ;输入键是'C',转CLEAR_TLCALL CLEAR_TKEY_A: CJNE A,#3AH,KEY_D ;输入键是'A',转START_T LCALL START_TKEY_D: CJNE A,#3DH,KEY_B ;输入键是'D',转STOP_T LCALL STOP_TKEY_B: CJNE A,#3BH,KEY_F ;输入键是'B',转SET_TLCALL SET_TKEY_F: CJNE A,#3FH,KEY_E ;输入键是'F',转DINGSHI_T LCALL DINGSHI_TKEY_E: CJNE A,#3EH,CONT ;输入键是'E',转MONITOR LCALL MONITORCONT: JNB SIGN,WAIT ;若无秒标志则循环LCALL DISPLAY ;显示时间CLR SIGN ;清标志SJMP WAIT ;循环;实现外部干预子程序MONITOR:NOPJNB KEY0,L77CLR P1.0CLR KEY0L77: JNB KEY1,L80CLR P1.1CLR KEY1L80: JNB KEY2,L83CLR P1.2CLR KEY2L83: JNB KEY3,L86CLR P1.3CLR KEY3L86: JNB KEY4,L91CLR P1.4CLR KEY4L91: CLR TR0CLR P1.5RETSJMP $;时间清零子程序CLEAR_T:CLR TR1 ;关计数器MOV R4,#0H ;小时清零MOV R3,#0H ;分钟清零MOV R2,#0H ;秒清零SETB SIGN ;置秒标志RET;电子钟计时子程序START_T:SETB TR1 ;开计时中断RET;电子钟停止计时子程序STOP_T: CLR TR1 ;关计时中断RET;设置初值子程序SET_T: CLR TR1 ;关计数器MOV R5,#7LCALL GETWORD ;读小时数CJNE A,#0FFH,INV ALID ;判断输入合法性MOV A,BADD A,#232JC INV ALID ;判断输入小时值< 24MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R4,A ;保存输入的值MOV R5,#4 ;读分钟数LCALL GETWORDCJNE A,#0FFH,INV ALID ;判断输入合法性MOV A,BADD A,#196JC INV ALID ;判断输入分钟数< 60MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R3,A ;保存输入的值MOV R5,#1 ;读秒数LCALL GETWORDCJNE A,#0FFH,INV ALID ;判断输入合法性MOV A,BADD A,#196JC INV ALID ;判断输入分钟值< 60MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R2,A ;保存输入的值MOV R5,#1 ;读秒数AJMP SET_TOKINV ALID:LCALL CLEAR_T ;不合法则时间清零SET_TOK:LCALL DISPLAY ;显示时间SETB TR1RET;设置定时时间子程序DINGSHI_T:SETB FLAGMOV R0,#30HMOV DPTR ,#Z8279MOV A,#LEDCLS ;清除LED 显示MOVX @DPTR,AMOV R5,#1LCALL GETWORD ;选择设置定时开关通道CJNE A,#0FFH,DINGSHI_T ;判断输入合法性MOV A,BADD A,#251JC DINGSHI_T ;判断输入小时值< 5MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV B,#2MUL ABADD A,R0MOV R0,AMOV R5,#7LCALL GETWORDCJNE A,#0FFH,DINGSHI_T ;判断输入合法性MOV A,BADD A,#232JC DINGSHI_T ;判断输入分钟数< 24MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV @R0,A ;保存输入的值INC R0MOV R5,#4 ;读秒数LCALL GETWORDCJNE A,#0FFH,DINGSHI_T ;判断输入合法性MOV A,BADD A,#196JC DINGSHI_T ;判断输入分钟值< 60MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV @R0,A ;当通道选中时,LED亮提示通道被;中MOV A,30HCJNE A,#0FFH,L196CLR P1.0 ;如果开关0选中则LED0亮AJMP L198L196: SETB P1.0L198: MOV A,32HCJNE A,#0FFH,L199CLR P1.1AJMP L203L199: SETB P1.1 ; 如果开关1选中则LED1亮L203: MOV A,34HCJNE A,#0FFH,L202CLR P1.2AJMP L207L202: SETB P1.2 ;如果开关2选中则LED2亮L207: MOV A,36HCJNE A,#0FFH,L205CLR P1.3AJMP L213L205: SETB P1.3 ;如果开关3选中则LED3亮L213: MOV A,38HCJNE A,#0FFH,L208CLR P1.4AJMP SET_TOKDL208: SETB P1.4 ;如果开关4选中则LED4亮SET_TOKD:CLR FLAGRET;读数子程序GETWORD:WKEY1: LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY1 ;无键输入,则再读MOV A,BADD A,#0C6HJC ERROR1 ;判断输入是否大于9MOV A,BSUBB A,#30HJC ERROR1 ;判断输入是否小于0MOV R6,ALCALL DISLED ;显示输入的字符MOV B,#10MUL ABPUSH ACC ;保存输入的值WKEY2: LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY2 ;无键输入则再读MOV A,BADD A,#0C6H ;判断输入是否大于9JC ERROR2MOV A,BSUBB A,#30H ;判断输入是否小于0JC ERROR2DEC R5MOV R6,ALCALL DISLED ;显示输入的字符MOV B,APOP ACCADD A,BMOV B,A ;把得到的值存在BMOV A,#0FFH ;置合法输入标志AJMP KEYOKERROR2: POP ACCERROR1: MOV A,#0 ;置非法输入标志KEYOK: RET;8279初始化子程序INIT8279:PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALL DELAY ;延时MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式MOVX @DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率MOVX @DPTR,AMOV A,#LEDCLS ;清除LED 显示MOVX @DPTR,APOP DPLPOP DPHRET;读取键盘子程序;有输入则输出: B: 读到的键码A: 按键的标志0FFH GETKEY: PUSH DPH ;保存现场PUSH DPLPUSH PSWMOV DPTR,#Z8279MOVX A,@DPTR ;读8279状态ANL A,#07H ;屏蔽D7-D3JNZ GETV AL ;判断是否有键输入MOV A,#0H ;置标志(无键输入)SJMP NKBHITGETV AL: MOV A,#READKB ;读FIFO RAM 命令MOVX @DPTR,AMOV DPTR,#D8279MOVX A,@DPTR ;读键ANL A,#3FH ;屏蔽SHIFT 和CTRL 键MOV DPTR,#KEYCODE ;键码表起始地址MOVC A,@A+DPTR ;查表MOV B,A ;置返回键值MOV A,#0FFH ;置标志(有键输入) NKBHIT: POP PSW ;恢复现场POP DPLPOP DPHRET;显示字符子程序;输入: R5,位置R6,值DISLED: PUSH DPH ;保存现场PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置显示起始地址ADD A,R5 ;加位置偏移量MOV DPTR,#Z8279MOVX @DPTR,A ;设定显示位置MOV DPTR,#LEDSEG ;置显示常数表起始位置MOV A,R6MOVC A,@A+DPTR ;查表MOV DPTR,#D8279MOVX @DPTR,A ;显示数据POP DPLPOP DPHRET;延时子程序DELAY: PUSH 7 ;保存现场PUSH 1MOV R7,#0HDELAY1: MOV R1,#0HDJNZ R1,$DJNZ R7,DELAY1POP 1 ;恢复现场POP 7RET;定时器中断服务子程序INT_T1:;保护现场PUSH PSWPUSH ACCPUSH DPLPUSH DPHCLR TR1 ;关中断MOV TMOD,#11HMOV TL1,#00H ;50ms毫秒定时常数MOV TH1,#4CHDJNZ R1,JUDGEMOV R1,#20CJNE R2,#59H,SECCJNE R3,#59H,MINCJNE R4,#23H,HOURMOV R2,#00MOV R3,#00MOV R4,#00AJMP JUDGESEC: MOV A,R2ADD A,#1DA AMOV R2,AAJMP JUDGEMIN: MOV A,R3ADD A,#1DA AMOV R3,AMOV R2,#00AJMP JUDGEHOUR: MOV A,R4ADD A,#1DA AMOV R4,AMOV R2,#00MOV R3,#00;判断定时是否到JUDGE: ;判断开关1 MOV A,R4CJNE A,30H,JUDGE_KEY1MOV A,R3CJNE A,31H,JUDGE_KEY1SETB KEY0MOV 30H,#0FFHMOV 31H,#0FFHSETB TR0JUDGE_KEY1: MOV A,R4 ;判断开关2 CJNE A,32H,JUDGE_KEY2MOV A,R3CJNE A,33H,JUDGE_KEY2SETB KEY1MOV 32H,#0FFHMOV 33H,#0FFHSETB TR0JUDGE_KEY2: MOV A,R4 ;判断开关3 CJNE A,34H,JUDGE_KEY3MOV A,R3CJNE A,35H,JUDGE_KEY3SETB KEY2MOV 34H,#0FFHMOV 35H,#0FFHSETB TR0JUDGE_KEY3:MOV A,R4 ;判断开关4 CJNE A,36H,JUDGE_KEY4MOV A,R3CJNE A,37H,JUDGE_KEY4SETB KEY3MOV 36H,#0FFHMOV 37H,#0FFHSETB TR0JUDGE_KEY4: MOV A,R4 ;判断开关5 CJNE A,38H,EXIT_INTMOV A,R3CJNE A,39H,EXIT_INTSETB KEY4MOV 38H,#0FFHMOV 39H,#0FFHSETB TR0RET;显示时间EXIT_INT:JB FLAG ,L431LCALL DISPLAY;恢复现场L431:SETB TR1POP DPHPOP DPLPOP ACCPOP PSWRETI ;中断返回;定时器0产生蜂鸣器的频率INT_T0:CLR TR0MOV TMOD ,#11HMOV TL0,#67HMOV TH0,#0FCHSETB TR0CPL P1.5 ;RETI;显示时分秒DISPLAY:MOV A,R4ANL A,#0FHMOV R6,AMOV R5,#6LCALL DISLED ;显示小时低位MOV A,R4SWAP AANL A,#0FHMOV R6,AMOV R5,#7LCALL DISLED ;显示小时高位MOV A,R3ANL A,#0FHMOV R6,AMOV R5,#3LCALL DISLED ;显示分钟低位MOV A,R3SWAP AANL A,#0FHMOV R6,AMOV R5,#4LCALL DISLED ;显示分钟高位MOV A,R2ANL A,#0FHMOV R6,AMOV R5,#0LCALL DISLED ;显示秒低位MOV A,R2SWAP AANL A,#0FHMOV R6,AMOV R5,#1LCALL DISLED ;显示秒高位JNB KEY0,L478CPL P1.0 ;如果开关0的定时时间到,;50ms是p1.0的电压反转L478: JNB KEY1,L480CPL P1.1L480: JNB KEY2,L482CPL P1.2L482: JNB KEY3,L484CPL P1.3L484: JNB KEY4,L486CPL P1.4L486: RET;LED显示常数表LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,087H ;'0.,1.,2.,3.,4.,5.,6.,7.'DB0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H ;'8.,9.,A.,B.,C.,D.,E.,F.' DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, ' ;键盘键码表KEYCODE:DB30H,31H,32H,33H,34H,35H,36H,37H ;'1,2,Q,W,A,S,+,Z'DB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FH ;'3,4,E,R,D,F,X,C'END6 功能扩展由于时间有限,智能时控开关的扩展功能不能完全得到实现,所以这里这能给出扩展功能的实现的想法。

相关主题