解决了同原先写入的进制一样,只是仿真器显示内容的是十六进制,后来我把读出的内容存到另一个变量,并用段式液晶显示出来显示出来,才知道是原来进制.
谈到这里,顺便说一下段式液晶显示的驱动方法(这个月刚学会):
;****************主程序区*************
;*************************************
main:
mov a,t_125us
sub a,40
snz c ;到了5mS吗
jmp main ;没到,则跳到main
main1:
clr t_125us ;到了,则清t_125us变量
snz halt_b ;halt_b 等于1则进入睡眠状态
jmp $+2 ;为0则正常执行指令
jmp sleep_man ;睡眠管理
clr wdt ;喂狗
call key_scan_man ;按键扫描管理
call led_out_man ;按键led灯输出管理
call up_inspection_man ;上门行程开关检测管理
call down_inspection_man ;下门行程开关检测管理
call voltage_chk ;电池电压检测管理
call time_man ;时间管理
call magnet_up_man ;上门开门驱动管理
call magnet_down_man ;下门开门驱动管理
call buz_work ;蜂鸣器管理
call baojing_man ;报警输出管理
call HM_inspect_man ;换码开关管理
call shuiyin_man ;水银开关检测管理
call key_deal_man ;按键处理管理
call disp_man ;LCD内容显示管理
call led_zhaoming_man ;照明灯显示管理
call dis_translate ;LCD段码转换管理
call TM1721_man ;LCD驱动芯片管理
call orange_key_led_man ;橙色键灯管理
call blue_key_led_man ;蓝色键灯管理
jmp main
1.首先按标准的7段顺序,并建一个表.
那么标准的段顺序如下:
bit7------x(标示是其它内容)
bit6------g段
bit5------f段
bit4------e段
bit3------d段
bit2------c段
bit1------b段
bit0------a段
如,要显示的内容是数字0,则变为3FH.
2.建个转换子程序.
因为有时开模的段式液晶显示顺序不一定按标准顺序来排列.
;*********************************
;**********转换LCD的段码管理******
dis_translate:
mov a,14
mov disp_ram,a
mov a,80h ;MCU内存地址(即变量disp_ram1~disp_ram14,是有LCD驱动IC直接来驱动的)
mov mp0,a
clr_1721_ram_loop:
clr ar0
inc mp0
sdz disp_ram
jmp clr_1721_ram_loop ;先清HT1721内容
;ram1_buf~ram14_buf变量是我们按标准段式液晶显示顺序来付给的,如下例要显示字母"OPENED"
;mov a,3FH
;mov ram1_buf,a ;显示字母O
;mov a,01110011b
;mov ram2_buf,a ;显示字母P
;mov a,01111001b
;mov ram3_buf,a ;显示字母E
;mov a,00110111b
;mov ram4_buf,a ;显示字母N
; mov a,01111001b
;mov ram5_buf,a ;显示字母E
;mov a,01011110b
;mov ram6_buf,a ;显示字母D
sz ram1_buf.0 ;转换第1位内容
set disp_ram1.4 ;ramn_buf为标准7段码,从高位到低位分别是
sz ram1_buf.1
set disp_ram1.5 ;xgfedcba(即bit7=x,bit0=a)
sz ram1_buf.2 ;disp_ramn为LCD厂提供的玻璃图码,从高位到低位分别是--这是针对前面8位而说.
set disp_ram1.6 ;/cbadegf(即bit7=/,bit0=f)
sz ram1_buf.3
set disp_ram1.3
sz ram1_buf.4
set disp_ram1.2
sz ram1_buf.5
set disp_ram1.0
sz ram1_buf.6
set disp_ram1.1
sz ram1_buf.7
set disp_ram1.7
sz ram2_buf.0 ;转换第2位内容
set disp_ram2.4
sz ram2_buf.1
set disp_ram2.5
sz ram2_buf.2
set disp_ram2.6
sz ram2_buf.3
set disp_ram2.3
sz ram2_buf.4
set disp_ram2.2
sz ram2_buf.5
set disp_ram2.0
sz ram2_buf.6
set disp_ram2.1
sz ram2_buf.7
set disp_ram2.7
sz ram3_buf.0 ;转换第3位内容
set disp_ram3.4
sz ram3_buf.1
set disp_ram3.5
sz ram3_buf.2
set disp_ram3.6
sz ram3_buf.3
set disp_ram3.3
sz ram3_buf.4
set disp_ram3.2
sz ram3_buf.5
set disp_ram3.0
sz ram3_buf.6
set disp_ram3.1
sz ram3_buf.7
set disp_ram3.7
sz ram4_buf.0 ;转换第4位内容
set disp_ram4.4
sz ram4_buf.1
set disp_ram4.5
sz ram4_buf.2
set disp_ram4.6
sz ram4_buf.3
set disp_ram4.3
sz ram4_buf.4
set disp_ram4.2
sz ram4_buf.5
set disp_ram4.0
sz ram4_buf.6
set disp_ram4.1
sz ram4_buf.7
set disp_ram4.7
sz ram5_buf.0 ;转换第5位内容
set disp_ram5.4
sz ram5_buf.1
set disp_ram5.5
sz ram5_buf.2
set disp_ram5.6
sz ram5_buf.3
set disp_ram5.3
sz ram5_buf.4
set disp_ram5.2
sz ram5_buf.5
set disp_ram5.0
sz ram5_buf.6
set disp_ram5.1
sz ram5_buf.7
set disp_ram5.7
sz ram6_buf.0 ;转换第6位内容
set disp_ram6.4
sz ram6_buf.1
set disp_ram6.5
sz ram6_buf.2
set disp_ram6.6
sz ram6_buf.3
set disp_ram6.3
sz ram6_buf.4
set disp_ram6.2
sz ram6_buf.5
set disp_ram6.0
sz ram6_buf.6
set disp_ram6.1
sz ram6_buf.7
set disp_ram6.7
sz ram7_buf.0 ;转换第7位内容
set disp_ram7.4
sz ram7_buf.1
set disp_ram7.5
sz ram7_buf.2
set disp_ram7.6
sz ram7_buf.3
set disp_ram7.3
sz ram7_buf.4
set disp_ram7.2
sz ram7_buf.5
set disp_ram7.0
sz ram7_buf.6
set disp_ram7.1
sz ram7_buf.7
set disp_ram7.7
sz ram8_buf.0 ;转换第8位内容
set disp_ram8.4
sz ram8_buf.1
set disp_ram8.5
sz ram8_buf.2
set disp_ram8.6
sz ram8_buf.3
set disp_ram8.3
sz ram8_buf.4
set disp_ram8.2
sz ram8_buf.5
set disp_ram8.0
sz ram8_buf.6
set disp_ram8.1
sz ram8_buf.7
set disp_ram8.7
sz ram9_buf.0 ;转换第9位内容---星期
set disp_ram9.0
sz ram9_buf.1
set disp_ram9.1
sz ram9_buf.2
set disp_ram9.2
sz ram9_buf.3
set disp_ram9.7
sz ram9_buf.4
set disp_ram9.6
sz ram9_buf.5
set disp_ram9.4
sz ram9_buf.6
set disp_ram9.5
sz ram9_buf.7
set disp_ram9.3
sz ram10_buf.0 ;转换第10位内容---分钟个位
set disp_ram10.0
sz ram10_buf.1
set disp_ram10.1
sz ram10_buf.2
set disp_ram10.2
sz ram10_buf.3
set disp_ram10.7
sz ram10_buf.4
set disp_ram10.6
sz ram10_buf.5
set disp_ram10.4
sz ram10_buf.6
set disp_ram10.5
sz ram10_buf.7
set disp_ram10.3
sz ram11_buf.0 ;转换第11位内容---分钟十位
set disp_ram11.0
sz ram11_buf.1
set disp_ram11.1
sz ram11_buf.2
set disp_ram11.2
sz ram11_buf.3
set disp_ram11.7
sz ram11_buf.4
set disp_ram11.6
sz ram11_buf.5
set disp_ram11.4
sz ram11_buf.6
set disp_ram11.5
sz ram11_buf.7
set disp_ram11.3
sz ram12_buf.0 ;转换第12位内容---小时个位
set disp_ram12.0
sz ram12_buf.1
set disp_ram12.1
sz ram12_buf.2
set disp_ram12.2
sz ram12_buf.3
set disp_ram12.7
sz ram12_buf.4
set disp_ram12.6
sz ram12_buf.5
set disp_ram12.4
sz ram12_buf.6
set disp_ram12.5
sz ram12_buf.7
set disp_ram12.3
sz ram13_buf.0 ;转换第13位内容---小时十位
set disp_ram13.0
sz ram13_buf.1
set disp_ram13.1
sz ram13_buf.2
set disp_ram13.2
sz ram13_buf.3
set disp_ram13.7
sz ram13_buf.4
set disp_ram13.6
sz ram13_buf.5
set disp_ram13.4
sz ram13_buf.6
set disp_ram13.5
sz ram13_buf.7
set disp_ram13.3
sz ram14_buf.0 ;转换第14位内容---蜂鸣器和电池电量
set disp_ram14.4 ;ram14_buf.0---A(标准)
sz ram14_buf.1
set disp_ram14.5 ;ram14_buf.1---B(标准)
sz ram14_buf.2
set disp_ram14.6 ;ram14_buf.2---C(标准)
sz ram14_buf.3
set disp_ram14.7 ;ram14_buf.3---D(标准)
sz ram14_buf.4
set disp_ram14.1 ;ram14_buf.4---S2
sz ram14_buf.5
set disp_ram14.0 ;ram14_buf.5---S3
sz ram14_buf.6
set disp_ram14.2 ;ram14_buf.6---/
sz ram14_buf.7
set disp_ram14.3 ;ram14_buf.7---/
ret
3.这样以后要显示的内容,主要按标准的段顺序就可以了,不用理会实际的开模的段式液晶显示顺序. |