⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 触摸键盘、拼音输入法、动态曲线和区域图片切换.txt

📁 能生成图象和动态曲线的汇编源程序,需要的就下吧,免费的哦!
💻 TXT
📖 第 1 页 / 共 4 页
字号:
 M600实现触摸键盘、拼音输入法、动态曲线和区域图片切换 
;DMT64480S_03演示程序,DMT64480S_03基于北京迪文科技有限公司的M600内核
;MCU 是C8051F410,时钟使用PCF8563,整个程序不到4K
;主要评估演示了以下功能
;.两条示波器效果动态曲线的实现,使用了连线和区域清除指令
;.时钟的显示和调整,使用了文本显示指令,中文和ASCII字符混合显示
;.图片剪切功能,在屏幕右上角每秒切换显示一个小图片,用户可以类似的制作漂亮的3D模拟表盘
;.触摸按键的实现
;.借助M600内嵌的拼音输入法实现汉字输入

        $include (C8051F410.inc)
        BUZZ    BIT     P1.4
        JDQ0    BIT     P1.0
        JDQ1    BIT     P1.1
        KEYIN   BIT     P2.0

        SDA1    BIT     P0.7
        SCL1    BIT     P0.6

        SADDR   EQU     0A3H    ;PCF8563 总线地址
        SADDW1  EQU     0A2H    

        SYSFLG  EQU     20H
                TI0FLG  BIT     SYSFLG.7
                RI0FLG  BIT     SYSFLG.6
                RTCOK   BIT     SYSFLG.5        ;400mS定时器中断OK
                PICOK   BIT     SYSFLG.4        ;300mS图片刷新时间OK
                ADOK    BIT     SYSFLG.3
                ADJFLG  BIT     SYSFLG.2

        SYSFLG1 EQU     21H     ;触摸按键
                TCHOK   BIT     SYSFLG1.7
                KEYOK   BIT     SYSFLG1.6
                CAPSLK  BIT     SYSFLG1.5       ;0=正常 1=大写锁定
                HZSTA   BIT     SYSFLG1.4       ;0=英文 1=拼音输入

        SBUF0_RX EQU    22H

        ;触摸屏接收数据
        RXAA    EQU     30H
        RX73    EQU     31H
        RXXH    EQU     32H
        RXXL    EQU     33H
        RXYH    EQU     34H
        RXYL    EQU     35H
        KEYCODE EQU     36H
        COLORH  EQU     37H
        COLORL  EQU     38H
        BCOLORH EQU     39H
        BCOLORL EQU     3AH

        TEXTX_H EQU     3BH     ;文本显示位置
        TEXTX_L EQU     3CH
        TEXTY_H EQU     3DH
        TEXTY_L EQU     3EH
        HZPOS   EQU     3FH

        ;RTC 接口定义
        CSTA1   EQU     40H     ;CONTROL REGISTER1
        CSTA2   EQU     41H     ;CONTROL REGISTER2
        TIMES   EQU     42H     ;SECOND 00-59H BCD
        TIMEM   EQU     43H     ;MINUTE
        TIMEH   EQU     44H     ;HOUR
        TIMED   EQU     45H     ;DATE DAY
        TIMEW   EQU     46H     ;WEEK
        TIMEMM  EQU     47H     ;MONTH
        TIMEY   EQU     48H     ;YEAR
        RTC200  EQU     49H
        RTC500  EQU     4AH        
        RTC1S   EQU     4BH   
        DL200MS EQU     4CH                  

        ;用户接口函数
        PICPOS  EQU     50H     ;图片剪切的位置0-9
        VAL_T   EQU     51H
        VAL_H   EQU     52H
        VAL_T0  EQU     53H
        VAL_T1  EQU     54H   
        VAL_H0  EQU     55H
        VAL_H1  EQU     56H
        VALX0_H EQU     57H
        VALX0_L EQU     58H
        VALX1_H EQU     59H
        VALX1_L EQU     5AH

        PYCODE0 EQU     5BH     ;拼音
        PYCODE1 EQU     5CH
        PYCODE2 EQU     5DH
        PYCODE3 EQU     5EH
        PYCODE4 EQU     5FH
        PYCODE5 EQU     60H
             
                ORG     0000H
                LJMP    MAIN

                ORG     0023H
                LJMP    UARTPRO         ;串口中断

                ORG     002BH
                LJMP    SYSCLK          ;10mS系统定时器中断
                                                                       
                ORG     0100H
        MAIN:   CLR     EA
                MOV     SP,#090H   
                LCALL   INITCPU 
                LCALL   INITSYS
                SETB    EA
                LCALL   ACKLCD          ;检查M600是否已经上电OK
                MOV     A,#00H
                LCALL   PICDSP          ;显示主界面图片          
                NOP
        START:  NOP
                JNB     RTCOK,START1
                LCALL   RDRTC
                LCALL   RTCDSP          ;每500mS定时刷新时钟显示
                CLR     RTCOK
        START1: JNB     PICOK,START2                
                LCALL   PICCUT          ;每秒剪切一个200*140分辨率的小图片显示
                CLR     PICOK
        START2: JNB     ADOK,START3
                LCALL   ADPRO           ;每200s显示一次动态数据,包括温度和湿度两个数据
                CLR     ADOK
        START3: JNB     TCHOK,START4    ;触摸按键处理
                LCALL   TCHPRO
        START4: NOP
                LJMP    START
                NOP
                NOP
                NOP

        ;参数初始化
        INITSYS:PUSH    IE
                CLR     EA
                MOV     SYSFLG,#00H
                MOV     SYSFLG1,#00H
                MOV     RTC500,#10
                MOV     RTC1S,#100
                MOV     PICPOS,#00H
                MOV     RTC200,#20
                MOV     VALX0_H,#00H
                MOV     VALX0_L,#03H
                MOV     VALX1_H,#00H
                MOV     VALX1_L,#08H
                MOV     VAL_T0,#17
                MOV     VAL_H0,#74
                MOV     TEXTX_H,#0
                MOV     TEXTX_L,#6
                MOV     TEXTY_H,#0
                MOV     TEXTY_L,#164
                MOV     DPTR,#0FFH              ;00FF 位置保存了有效拼音字符串的个数
                CLR     A
                MOVX    @DPTR,A
                POP     IE                
                RET

;***************触摸键盘处理*********** 
        TCHPRO: LCALL   TCHKEY
                JB      KEYOK,TCHPR1
                RET
        TCHPR1: MOV     A,KEYCODE
                CJNE    A,#02H,TCHPR2           ;CAPSLOCK
                JB      HZSTA,TCHPROE
                CPL     CAPSLK
                MOV     COLORH,#07H
                MOV     COLORL,#0E0H
                MOV     BCOLORH,#00H
                MOV     BCOLORL,#1FH
                LCALL   COLORSET
        TCHPR10:MOV     DPTR,#CMD54T1
                JB      CAPSLK,TCHPR11
                MOV     DPTR,#CMD54T2
        TCHPR11:LCALL   TXROMS
                LCALL   TXFEND
        TCHPROE:NOP
                RET
        TCHPR2: CJNE    A,#05H,TCHPR3           ;EN/PY
                MOV     COLORH,#07H
                MOV     COLORL,#0E0H
                MOV     BCOLORH,#00H
                MOV     BCOLORL,#1FH
                LCALL   COLORSET
                CPL     HZSTA
                MOV     C,HZSTA
                MOV     CAPSLK,C
                MOV     PYCODE0,#" "
                MOV     PYCODE1,#" "
                MOV     PYCODE2,#" "
                MOV     PYCODE3,#" "
                MOV     PYCODE4,#" "
                MOV     PYCODE5,#" "
                JNC     TCHPR21
                MOV     PYCODE0,#"-"
                MOV     PYCODE1,#"-"
                MOV     PYCODE2,#"-"
                MOV     PYCODE3,#"-"
                MOV     PYCODE4,#"-"
                MOV     PYCODE5,#"-"
        TCHPR21:MOV     DPTR,#CMD54T3
                LCALL   TXROMS
                MOV     R0,#PYCODE0
                MOV     R7,#6
                LCALL   TXRAMS
                LCALL   TXFEND
                LJMP    TCHPR10                 ;中文方式就打开CAPSLOCK
        TCHPR3: CJNE    A,#0AH,TCHPR31
                LCALL   HZSEL                   ;选择一个汉字
                RET                                
        TCHPR31:CJNE    A,#0BH,TCHPR32
                MOV     DL200MS,#50
                LCALL   DELAY
                LCALL   INITSYS
                MOV     A,#00H
                LCALL   PICDSP
                RET                
        TCHPR32:CJNE    A,#00H,TCHPR33
                LCALL   BKPRO                   ;退格
                RET
        TCHPR33:CJNE    A,#0CH,TCHPR34
                LCALL   RTCADJ                  ;时钟调节
                RET
        TCHPR34:CLR     C
                SUBB    A,#06H
                JC      TCHPR4
                MOV     A,KEYCODE
                CLR     C
                SUBB    A,#10
                JNC     TCHPR4                  ;6-9 介绍图片
                MOV     A,KEYCODE
                LCALL   PICDSP
                MOV     DL200MS,#100
                LCALL   DELAY
                CLR     TCHOK
                JNB     TCHOK,$
                CLR     TCHOK
                LCALL   INITSYS
                MOV     A,#00H
                LCALL   PICDSP
                RET                
        TCHPR4: CLR     C
                MOV     A,KEYCODE
                SUBB    A,#20H
                JNC     TCHPR41
                RET
        TCHPR41:JNB     HZSTA,TCHPR5
                MOV     PYCODE0,PYCODE1
                MOV     PYCODE1,PYCODE2
                MOV     PYCODE2,PYCODE3
                MOV     PYCODE3,PYCODE4
                MOV     PYCODE4,PYCODE5
                MOV     PYCODE5,KEYCODE
                MOV     COLORH,#07H
                MOV     COLORL,#0E0H
                MOV     BCOLORH,#00H
                MOV     BCOLORL,#1FH
                LCALL   COLORSET
                MOV     DPTR,#CMD54T3
                LCALL   TXROMS
                MOV     R0,#PYCODE0
                MOV     R7,#6
                LCALL   TXRAMS
                LCALL   TXFEND
                LCALL   PYPRO                   ;拼音输入法处理
                RET
        TCHPR5: MOV     COLORH,#0FFH            
                MOV     COLORL,#0FFH
                MOV     BCOLORH,#00H
                MOV     BCOLORL,#1FH
                LCALL   COLORSET
                MOV     DPTR,#CMD54
                LCALL   TXROMS
                MOV     R0,#TEXTX_H
                MOV     R7,#4
                LCALL   TXRAMS             
                MOV     A,KEYCODE
                LCALL   TXBYTE
                LCALL   TXFEND
                MOV     A,TEXTX_L               ;调整坐标位置
                ADD     A,#8
                MOV     TEXTX_L,A
                CLR     A
                ADDC    A,TEXTX_H
                MOV     TEXTX_H,A
                CLR     C
                MOV     A,TEXTX_L
                SUBB    A,#70H
                MOV     A,TEXTX_H
                SUBB    A,#02H
                JC      TCHPR5E
                MOV     TEXTX_H,#0
                MOV     TEXTX_L,#6
                MOV     A,TEXTY_L
                ADD     A,#18
                MOV     TEXTY_L,A
                CLR     A
                ADDC    A,TEXTY_H
                MOV     TEXTY_H,A
                CLR     C
                MOV     A,TEXTY_L
                SUBB    A,#199
                MOV     A,TEXTY_H
                SUBB    A,#00H
                JC      TCHPR5E
                MOV     TEXTY_H,#0
                MOV     TEXTY_L,#164
        TCHPR5E:NOP                                
                RET   
                
        CMD54:  DB 0AAH,54H,0FFH
        CMD54T1:DB 0AAH,54H
                DW 22,240
                DB "Caps Lock",0FFH

        CMD54T2:DB 0AAH,54H
                DW 22,240
                DB "         ",0FFH

        CMD54T3:DB 0AAH,54H
                DW 122,240
                DB 0FFH

        ;时钟调整
        RTCADJ: MOV     C,CAPSLK
                PUSH    PSW
                CLR     CAPSLK
                MOV     R0,#TIMEY
                LCALL   SCANBCD
                MOV     R0,#TIMEMM
                LCALL   SCANBCD
                MOV     R0,#TIMED
                LCALL   SCANBCD
                MOV     R0,#TIMEH
                LCALL   SCANBCD
                MOV     R0,#TIMEM
                LCALL   SCANBCD
                MOV     R0,#TIMES
                LCALL   SCANBCD
                LCALL   WTNUMK
                MOV     TIMEW,A
                LCALL   RTCDSP
                LCALL   WRRTC
                POP     PSW
                MOV     CAPSLK,C
                RET

        ;等待一个0-9的数字键
        WTNUMK: JNB     TCHOK,$
                LCALL   TCHKEY
                JNB     KEYOK,WTNUMK
                MOV     A,KEYCODE
                CLR     KEYOK
                CLR     C
                SUBB    A,#30H
                JC      WTNUMK
                MOV     B,A
                CLR     C
                SUBB    A,#10
                JNC     WTNUMK
                MOV     A,B
                RET

        ;输入一个BCD码
        SCANBCD:LCALL   WTNUMK
                MOV     @R0,A
                LCALL   RTCDSP
                MOV     DL200MS,#20
                LCALL   DELAY
                CLR     TCHOK
                LCALL   WTNUMK
                MOV     B,A
                MOV     A,@R0
                SWAP    A
                ADD     A,B
                MOV     @R0,A
                LCALL   RTCDSP
                MOV     DL200MS,#20
                LCALL   DELAY
                CLR     TCHOK
                RET                 

        ;退格处理
        BKPRO:  CLR     C
                MOV     A,TEXTX_L               ;调整坐标位置
                SUBB    A,#8
                MOV     TEXTX_L,A
                MOV     A,TEXTX_H
                SUBB    A,#00H
                MOV     TEXTX_H,A
                JNC     BKPRO1               
                MOV     TEXTX_H,#02
                MOV     TEXTX_L,#6EH
                CLR     C
                MOV     A,TEXTY_L
                SUBB    A,#18
                MOV     TEXTY_L,A
                MOV     A,TEXTY_H
                SUBB    A,#00H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -