📄 触摸键盘、拼音输入法、动态曲线和区域图片切换.txt
字号:
DW 519,403,631,438
DB 09H,09H ;迪文科技简介
DW 0,202,640,234
DB 0AH,0AH ;输入法选择一个字符
DW 4,455,37,476
DB 0BH,0BH ;重新初始化
DW 415,454,639,479
DB 0CH,0CH ;时钟设置
DB 0FFH ;键盘定义结束
;***************示波器方式显示AD结果曲线***************
ADPRO: MOV COLORH,#0F8H ;RED
MOV COLORL,#00H
MOV BCOLORH,#00H ;BLACK
MOV BCOLORL,#00H
LCALL COLORSET
MOV DPTR,#CMD5A ;清除将显示的区域
LCALL TXROMS
MOV B,VALX0_L
MOV A,VALX0_H
JB ADJFLG,ADPRO1 ;第一个小窗口必须清除左边的线
MOV A,VALX0_L
ADD A,#01H
MOV B,A
CLR A
ADDC A,VALX0_H
ADPRO1: CLR ADJFLG
LCALL TXBYTE
MOV A,B
LCALL TXBYTE
MOV A,#00H
LCALL TXBYTE
MOV A,#03H
LCALL TXBYTE
MOV A,VALX1_H ;右下角
LCALL TXBYTE
MOV A,VALX1_L
LCALL TXBYTE
MOV A,#00H
LCALL TXBYTE
MOV A,#139
LCALL TXBYTE
LCALL TXFEND
MOV DPTR,#CMD56 ;划T线
LCALL TXROMS
MOV A,VAL_T
ADD A,#10
MOV VAL_T1,A
MOV A,VALX0_H
LCALL TXBYTE
MOV A,VALX0_L
LCALL TXBYTE
MOV A,#00H
LCALL TXBYTE
MOV A,VAL_T0
LCALL TXBYTE
MOV A,VALX1_H
LCALL TXBYTE
MOV A,VALX1_L
LCALL TXBYTE
MOV A,#00H
LCALL TXBYTE
MOV A,VAL_T1
LCALL TXBYTE
LCALL TXFEND
MOV DPTR,#CMD54AD1
LCALL TXROMS
MOV A,VAL_T1
LCALL NUMDSP
LCALL TXFEND
MOV VAL_T0,VAL_T1
MOV COLORH,#07H ;GREEN
MOV COLORL,#0E0H
MOV BCOLORH,#00H ;BLACK
MOV BCOLORL,#00H
LCALL COLORSET
MOV DPTR,#CMD56 ;划H线
LCALL TXROMS
MOV A,VAL_H
ADD A,#74
MOV VAL_H1,A
MOV A,VALX0_H
LCALL TXBYTE
MOV A,VALX0_L
LCALL TXBYTE
MOV A,#00H
LCALL TXBYTE
MOV A,VAL_H0
LCALL TXBYTE
MOV A,VALX1_H
LCALL TXBYTE
MOV A,VALX1_L
LCALL TXBYTE
MOV A,#00H
LCALL TXBYTE
MOV A,VAL_H1
LCALL TXBYTE
LCALL TXFEND
MOV DPTR,#CMD54AD2
LCALL TXROMS
MOV A,VAL_T1
LCALL NUMDSP
LCALL TXFEND
MOV VAL_H0,VAL_H1
NOP
MOV VALX0_H,VALX1_H ;重新计算坐标
MOV VALX0_L,VALX1_L
MOV A,VALX1_L
ADD A,#5
MOV VALX1_L,A
CLR A
ADDC A,VALX1_H
MOV VALX1_H,A
CLR C
MOV A,VALX1_L
SUBB A,#0A7H ;423
MOV A,VALX1_H
SUBB A,#01H
JC ADPROE
MOV VALX0_H,#00H
MOV VALX0_L,#03H
MOV VALX1_H,#00H
MOV VALX1_L,#08H
SETB ADJFLG
ADPROE: NOP
RET
CMD5A: DB 0AAH,5AH,0FFH
CMD56: DB 0AAH,56H,0FFH
CMD54AD1:DB 0AAH,54H
DW 20,140
DB "温度--",0FFH
CMD54AD2:DB 0AAH,54H
DW 120,140
DB "湿度--",0FFH
;***************从其它图片剪切小图片来显示***************
PICCUT: INC PICPOS
MOV A,PICPOS
MOV B,#19
DIV AB
MOV PICPOS,B ;0-9
MOV DPTR,#PCUT_T1
LCALL TXROMS
MOV A,PICPOS
MOV B,#10
MUL AB
MOV DPTR,#PCUT_T2
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
LCALL TXROMS
MOV DPTR,#PCUT_T3
LCALL TXROMS
LCALL TXFEND
RET
PCUT_T1:DB 0AAH,71H,0FFH
PCUT_T2:DB 0 ;0
DW 430,6,635,151
DB 0FFH
DB 1 ;1
DW 3,6,208,151
DB 0FFH
DB 1 ;2
DW 217,6,422,151
DB 0FFH
DB 1 ;3
DW 430,6,635,151
DB 0FFH
DB 1 ;4
DW 3,167,208,312
DB 0FFH
DB 1 ;5
DW 217,167,422,312
DB 0FFH
DB 1 ;6
DW 430,167,635,312
DB 0FFH
DB 1 ;7
DW 3,329,208,474
DB 0FFH
DB 1 ;8
DW 217,329,422,474
DB 0FFH
DB 1 ;9
DW 430,329,635,474
DB 0FFH
DB 2 ;10
DW 3,6,208,151
DB 0FFH
DB 2 ;11
DW 217,6,422,151
DB 0FFH
DB 2 ;12
DW 430,6,635,151
DB 0FFH
DB 2 ;13
DW 3,167,208,312
DB 0FFH
DB 2 ;14
DW 217,167,422,312
DB 0FFH
DB 2 ;15
DW 430,167,635,312
DB 0FFH
DB 2 ;16
DW 3,329,208,474
DB 0FFH
DB 2 ;17
DW 217,329,422,474
DB 0FFH
DB 2 ;18
DW 430,329,635,474
DB 0FFH
PCUT_T3:DW 430,6,635,151,0FFH ;图片大小为205*145
;***************CPU 初始化***********
INITCPU:MOV VDM0CN,#0C0H
MOV RSTSRC,#02H
MOV PCA0CN,#00H
MOV PCA0MD,#00H
mov P0MDIN,#0FCH
MOV P0MDOUT,#50H ;0001 0000B P0.4 IS TXD
MOV P0SKIP,#03H ;0000 0011B P0.0 P0.1 IS DAC
MOV P1MDIN,#0FBH ;1111 1011
MOV P1MDOUT,#13H ;1010 0000
MOV P1SKIP,#04H ;0000 0100B SKIP VERF-M
mov P2MDIN,#0FFh
MOV P2SKIP,#00H
MOV P2MDOUT,#00H
CLR BUZZ
CLR JDQ0
CLR JDQ1
MOV XBR0,#01H
MOV XBR1,#40H
MOV OSCXCN,#00H
MOV OSCICN,#0C7H
CLR A
DJNZ ACC,$
NOP
MOV CLKMUL,#00H
NOP
ORL CLKMUL,#03H
NOP
ORL CLKMUL,#10H
NOP
ORL CLKMUL,#80H
NOP
CLR A
DJNZ ACC,$
NOP
ORL CLKMUL,#0C0H
NOP
OSCWT2: MOV A,CLKMUL
JNB ACC.5,OSCWT2
NOP
MOV CLKSEL,#02H ;49MHz SYSTEM CLOCK
NOP
NOP
MOV TMOD,#21H
;T0
MOV TH0,#70
MOV TL0,#70
CLR TR0
;T1
MOV A,#07H ;串口波特率设置,7=115200
MOV B,#2
MUL AB
MOV DPTR,#BODE_TAB
MOV B,A
MOVC A,@A+DPTR
MOV CKCON,A
MOV A,B
INC DPTR
MOVC A,@A+DPTR
MOV TH1,A
MOV TL1,A
MOV SCON0,#50H
SETB TR1
;T2
MOV TMR2RLH,#60H ;10mS
MOV TMR2H,#60H
MOV TMR2RLL,#7FH
MOV TMR2L,#7FH
MOV TMR2CN,#04H
;T3
MOV TMR3RLL,#0DH
MOV TMR3RLH,#0F0H ;1mS
MOV TMR3L,#0
MOV TMR3H,#0
MOV TMR3CN,#00H ;.2=TR3
MOV IE,#00H
MOV EIE1,#00H ;ET3=1
SETB ES0
SETB ET2
;DA DEFINE
MOV IDA0CN,#0F7H
MOV IDA1CN,#0F7H
MOV REF0CN,#33H
;AD DEFINE
MOV ADC0MX,#1FH ;A/D=GND
MOV ADC0CF,#28H ;AD转换时钟为 系统时钟10分频
MOV ADC0CN,#90H ;AD0BUSY控制AD转换
MOV ADC0TK,#0CH ;AD仅仅转换一次
RET
;***************串口中断服务程序*************
UARTPRO:PUSH ACC
PUSH PSW
JB RI0,UARTRCV
CLR TI0
SETB TI0FLG
SJMP UARTEND
UARTRCV:MOV SBUF0_RX,SBUF0
SETB RI0FLG
CLR RI0
JB TCHOK,UARTEND ;如果有数据没有处理,就禁止接收新的数据
MOV RXAA,RX73
MOV RX73,RXXH
MOV RXXH,RXXL
MOV RXXL,RXYH
MOV RXYH,RXYL
MOV RXYL,SBUF0_RX
MOV A,RXAA
CJNE A,#0AAH,UARTEND
MOV A,RX73
CJNE A,#73H,UARTEND
SETB TCHOK
UARTEND:POP PSW
POP ACC
RETI
;波特率寄存器表1.2 2.4 4.8 9.6 19.2 38.4 57.6 115.2
;0=2041667 1=6125000 2=510417
BODE_TAB:DB 2,43 ;2400 00
DB 2,43 ;2400 01
DB 2,150 ;4800 02
DB 0,43 ;9600 03
DB 0,150 ;19200 04
DB 1,96 ;38400 05
DB 1,150 ;57600 06
DB 1,203 ;115200 07
;10mS系统定时器中断服务程序
SYSCLK: PUSH PSW
PUSH ACC
PUSH B
MOV TMR2CN,#04H
DJNZ RTC500,SYSCLK1
MOV RTC500,#50
SETB RTCOK
SYSCLK1:DJNZ RTC1S,SYSCLK2
MOV RTC1S,#100
SETB PICOK
SYSCLK2:MOV A,VAL_T
ADD A,TIMES
ADD A,R0
ADD A,DPL
ADD A,DPH
MOV B,#7
MUL AB
MOV B,#11
DIV AB
MOV A,B
ADD A,#17
MOV VAL_T,A
SYSCK22:DEC VAL_H
MOV A,VAL_H
MOV B,DPL
MUL AB
MOV B,TIMES
MUL AB
MOV B,VAL_T
MUL AB
ANL A,#3FH
MOV VAL_H,A
DJNZ RTC200,SYSCLK3
SETB ADOK
MOV RTC200,#20
SYSCLK3:MOV A,DL200MS
JZ SYSCLK4
DEC DL200MS
SYSCLK4:NOP
POP B
POP ACC
POP PSW
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -