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

📄 lcd_f2.asm

📁 这个程序实现了液晶显示的驱动程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
			;***************
			;lcd_program   2002.4.13
			;***************
			send_no     equ  08h
			dot_bit     equ  send_no
			t_20ms      equ  dot_bit+1
			T_1S        EQU  t_20ms+1H
			LED_power   EQU  t_1s+1h
			key_data    equ  led_power+1h
			ch_no_temp  equ  key_data+1h
			tp_100ms    equ  ch_no_temp+1
			beep        equ  tp_100ms+1h
			test_no     equ  beep+1h
			t_30ms      equ  test_no+1h
			beep1       equ  t_30ms+1h
			N1          equ  beep1+1h
			n2          equ  N1+1h
			hl_out      equ  n2+1
			fd2_temp    equ  hl_out+1h
			fd1_temp    equ  fd2_temp+3h
			led_ch      equ  fd1_temp+3
			sec_bak     equ  led_ch+1
			h_l_out     equ  sec_bak+1
			fs_out      equ  h_l_out+1
;*********************************************************
			set_data    equ  24h
			t_250ms     equ  set_data+1
			addres_bak  equ  t_250ms+1
			sec         equ  addres_bak+1
			m_count     equ  sec+1
		;*************************************                                  
			LED1      EQU   m_count+1h
			LED2      EQU   led1+1h
			LED3      EQU   led2+1h
			LED4      EQU   led3+1h
			led5      equ   led4+1
			led6      equ   led5+1
			led7      equ   led6+1
			led8      equ   led7+1
			led9      equ   led8+1
			led10     equ   led9+1

			fh1_bak   equ  led10+1
			fh2_bak   equ  fh1_bak+1 
						
			kb_data   equ  fh2_bak+1;***********
			kc_data   equ  kb_data+1
			led0_bak  equ  kc_data+1
			led1_bak  equ  led0_bak+1
			led2_bak  equ  led1_bak+1
			led3_bak  equ  led2_bak+1
			led4_bak  equ  led3_bak+1
			fs1_no    equ  led4_bak+1
			fs2_no    equ  fs1_no+2h
	;***************  send to rs_485******************************
			rs_no     equ  21d 
			y1        equ  fs2_no+2
			y2        equ  y1+3h
			y3        equ  y2+3h
			y4        equ  y3+3h
	;*********************************************
			dt1_dat   equ  y4+3
			dt2_dat   equ  dt1_dat+1
			dt3_dat   equ  dt2_dat+1
			dt4_dat   equ  dt3_dat+1

			w_adj_1   equ  dt3_dat
			frist     equ  w_adj_1+1

			fd1_dat   equ  frist+1
			fd2_dat   equ  fd1_dat+1
			fd3_dat   equ  fd2_dat+1
			fd4_dat   equ  fd3_dat+1
;**************************************************2002.4.1
			fh1       equ  fd3_dat
			fh2       equ  fh1+1
;**************************************************2002.4.1
			ch_no     equ  fh2+1
			bps       equ  ch_no+1h
			addres    equ  bps+1h
			dp_dat    equ  addres+1h;dp=1 500ms,dp=0 250ms
			da_no     equ  dp_dat+1h;in menu2
			del_t     equ  da_no+1
	;*******************************************
			fo1       equ  del_t+1
			fo2       equ  fo1+3h
		;****************************************
			k1        equ  fo2+3h     
			k2        equ  k1+3h      
		;***************************************
			b1        equ  k2+3h
			b2        equ  b1+3h
		;***************************************
			c1        equ  b2+3h
			c2        equ  c1+3h
		;************************************
			l1        equ  c2+3h
			l2        equ  l1+3h
		;*************************************
			h1        equ  l2+3h
			h2        equ  h1+3h
		;*************************************                  
			fs1       equ  h2+3h
			fs2       equ  fs1+3h
			menu_no   equ  56d
		;**************************************
			pc1       equ  fs2+3
			pc21      equ  pc1+20;;10
			lcd_buf   equ  pc21+1
			p0_buf    equ  lcd_buf+12
			p2_buf    equ  p0_buf+8
			p3_buf    equ  p2_buf+8
			p0_buf_bak equ p3_buf+8
			p2_buf_bak equ p0_buf_bak+8
			p3_buf_bak equ p2_buf_bak+8
			sp_data    equ p3_buf_bak+8          
		;**************************************                                                         
		;eeprom_adress:         
			ch_ee_no     equ  14d
			dt1_dat_ee   equ  00h
			dt2_dat_ee   equ  dt1_dat_ee+1
			dt3_dat_ee   equ  dt2_dat_ee+1
			dt4_dat_ee   equ  dt3_dat_ee+1
;************************* 2002.4.1 ********************
			w_adj_1_ee  equ  dt3_dat_ee                       
			frist_ee    equ  w_adj_1_ee+1
;************************* 2002.4.1 ********************
			fd1_dat_ee   equ  frist_ee+1
			fd2_dat_ee   equ  fd1_dat_ee+1
			fd3_dat_ee   equ  fd2_dat_ee+1
			fd4_dat_ee   equ  fd3_dat_ee+1
;********************************************************
			fh1_ee      equ  fd3_dat_ee
			fh2_ee      equ  fh1_ee+1
;********************************************************
			ch_no_ee     equ  fh2_ee+1 
	;*********************************************
			bps_ee      equ  ch_no_ee+1h
			addres_ee   equ  bps_ee+1h
			dp_dat_ee   equ  addres_ee+1h
			en_dat_ee   equ  dp_dat_ee+1h
			del_t_ee    equ  en_dat_ee+1h
		;*****************************************
			fo1_ee     equ  del_t_ee+1
			fo2_ee     equ  fo1_ee+3h
		;****************************************
			k1_ee      equ  fo2_ee+3h       
			k2_ee      equ  k1_ee+3h        
		;***************************************
			b1_ee      equ  k2_ee+3h
			b2_ee      equ  b1_ee+3h
		;***************************************
			c1_ee      equ  b2_ee+3h
			c2_ee      equ  c1_ee+3h
		;************************************
			l1_ee      equ  c2_ee+3h
			l2_ee      equ  l1_ee+3h
		;*************************************
			h1_ee      equ  l2_ee+3h
			h2_ee      equ  h1_ee+3h
		;*************************************                  
			fs1_ee     equ  h2_ee+3h
			fs2_ee     equ  fs1_ee+3h
		;***************************************                
		;LED_ERR: 10 10 10 10 B 
		;         4  3  2  1 _WAY
		;         HL HL HL HL ;H=>OVER;L=>LOW
		;         11=>NO WORK   
		       fff_f     bit  00h
		       FL_500MS  BIT  Fff_f+1H
		       FL_250MS  BIT  Fff_f+2H
		       dot_f     BIT  Fff_f+3H
		       set_f     bit  dot_f+1h  
		       set1_f    bit  set_f+1   
			;*****************************
			ha_over     bit  set1_f+1h
			ha_over1    bit  ha_over+1h
			pc_f    bit  ha_over1+1h
			key_you_f   bit  pc_f+1h
			ha_f        bit  key_you_f+1h
			menu1_over  bit  ha_f+1h
			ha_fl       bit  menu1_over+1h                                           
			TEST_F      BIT  ha_fl+1H
			key_over    bit test_f+1h
			rs_485_f    bit key_over+1h
			set_clk_f   bit rs_485_f+1h
			sq1_f       bit set_clk_f+1h                                             
			sq_f        bit sq1_f+1h
			kd_over     bit sq_f+1
			ee_f        bit kd_over+1
			test_ok     bit ee_f+1
			card_f      bit test_ok+1
			turn_f	    bit card_f+1
			llc_f       bit turn_f+1
;*************************************************
			lamp_out   bit llc_f+1
			ee24_out   bit lamp_out+1
			beep_out   bit ee24_out+1
			ch_max         equ  01d 
			cmp_no         equ  01d 
			da_l           equ  00h
	;**************************************************		
			back_x         equ  30d
			lcd_t          equ  0ffh
			pass_1         equ  09h 
			pass_2         equ  08h 
			pass_3         equ  07h
			sn_pass1       equ  01h
			sn_pass2       equ  02h ;sn_password=123
			sn_pass3       equ  03h
;********************************************************
			bright_x       equ  0ffh
			del_t_x        equ  0b0h
			pass_no        equ  04d;
			frist_no       equ  69d
			xu             equ  50
	
			card_power    bit p2.1
			card_test_f   bit p2.0
			;key_f        bit p2.7
		;***********************************
			rs_led     bit p2.7
		;*********************************2001.6.4
			l1_out     bit p2.0
			h1_out     bit p2.1
			l2_out     bit p1.1
			h2_out     bit p1.2
	;*******************************************2002.3.20		
			rs_en      bit p3.2
		;***********************************
			ch_a       bit p1.3
			
			;ch_b       bit p1.7
			
			sda        bit p3.6 ;sda
			scl        bit p3.7 ;scl                       
			
			si_lcd     bit p2.2
			sck_lcd    bit p2.4                     
			
			si_da      bit p3.5
			ck_da      bit p3.4
			cs_da      bit p3.3
			rck_f      bit p2.6
			rck_m      bit p2.5
			rck_r      bit p2.3
			
;******************************************************************
			T_H_100ms      EQU  0f8H  ;f755H=>2.5MS
			T_L_100ms      EQU  1eH  ;11.0592mhz
			TIMER_no       EQU  100D    ;230400uS=250ms     
			key_da         equ  0f0h ;#11110000b
			max            equ  39d
			max1           equ  34d
;******************************************************************
		;************* eeprom  ********************         
			slar        equ 0a1h
			slaw        equ 0a0h
		;****************************************
			black     equ  1Ch
			l_led     equ  11h
			o_led     equ  15h
			u_led     equ  1Bh
			r_led     equ  18h
			QQ_led    equ  1dh
			p_led     equ  16h
			a_led     equ  0ah
			UU_led    equ  1ah
			s_led     equ  19h
			e_led     equ  0eh      
			tt_led    equ  1fh
			ff_led    equ  1eh
			c_led     equ  0ch
			h_led     equ  10h
			b_led     equ  0bh
			d_led     equ  0dh
			f_led     equ  0fh                                                                                                                      
			nn_led    equ  12h
			n_led     equ  13h
			yo_led    equ  2ch
;************************************************************************                       
			oRG  0000H;            ;
			     AJMP start            
			ORG  0003H;            ;
			     reti;ljmp int0
			ORG  000BH             ;
			     LJMP T0           ;
			ORG  0013H    
			     reti              ;
			ORG  001BH             ;
			     reti        ;
			ORG  0023H             ;
			     jmp rs_485;RETI
			ORG  002bH             ;
				clr tf2
              			setb test_f ;2001.5.24
				reti
;**************************************
start:   
		mov p0,#0aah
		mov a,#0e8h
str1:
		MOV b,#0ffh       ;
		MOV  R0,#01H       ;
cR:             INC R0            ;
		MOV @R0,#00d         ;
		djnz b,cr     
		dec a
		jnz str1
;******************************2002.5.5
		setb beep_out
;*****************************

		mov sp,#sp_data
		call read_ee
		call int_ctrl
		mov a,frist
		cjne a,#frist_no,int_go_1
		sjmp go_2
       int_go_1:      
		call read_int
		call wr_int
go_2:
		call bps_int            
		call jb_ch_max;2002.3.20
		call de_10s
		;sjmp go_2
		mov frist,#0
		;jmp set_clock
		;jmp set_al4
		;call pass_set
		;call set_menu2
		;call timer_20ms
		;call set_fh12
;***************************************************
;   MINI_Pragram
;***********************************************
STAR_BI:
		call clock
		call led_jmp
		call send_pc
		call led
		call key_bord1
		call key_del
		call set_menu
		mov set_data,#0
		call back
		call key_jmp
		call y1_count 
		call card_wr
		;call pass_set
		;call set_menu2
		;call timer_20ms
SJMP STAR_BI
;********************************
;bps=0:0.3k
;bps=1:0.6k
;bps=2:1.2k
;bps=3:2.4k
;bps=4:4.8k
;bps=5:9.6k
;bps=6:19.2k
bps_int:
;********************************************
		mov a,pcon
		anl a,#01111111b
		mov pcon,a
		mov dptr,#bps_asc
		mov a,bps
		cjne a,#06h,bb_1
		mov a,pcon
		orl a,#10000000b
		mov pcon,a
		mov a,#0fdh  ;***********************
		sjmp bb_2
	bb_1:   movc a,@a+dptr
	bb_2:   
		mov th1,a
		mov tl1,a       
		setb tr1
		ret
jb_ch_max:
;***************** jb ch_no >ch_max *********
		mov a,ch_no
		cjne a,#ch_max,cch1
		sjmp cch2	
	cch1:
		jc cch2	
		mov ch_no,#ch_max
		call wr_int
	cch2:
		ret
bps_asc:
	db 0a0h,0d0h,0e8h,0f4h,0fah,0fdh
	db 'li jie by 2001.10.27'
;************** INT_CTRL
int_ctrl:
		MOV T_1S,#TIMER_no
		mov t_250ms ,#4
		mov m_count ,#0
		mov w_adj_1,#xu 

		;******************
		clr rs_en
		setb ren

		;mov tp_100ms,#tp_ms
		mov addres_bak,addres
		setb et2
		setb et0
		MOV TMOD,#00100001B;**********2001.5.24
		mov t2con ,#00000011b;20001.5.24
		MOV TH2 ,#00h;T_H_10ms
		MOV TL2 ,#00h;T_L_10ms
		mov rcap2l,#0
		mov rcap2h,#0
		MOV SCON,#11110000b     ;mode 3  2001.6.7
		call add_w
		setb pt0
		setb pt2
		clr ps
		setb ea 
		setb tr2
		setb tr0
		  ret         
;*********************************************          
timer_20ms:
		mov r2,#del_t_x
	time0:
		mov b,#020h
		djnz b,$		
		call clock
		djnz r2,time0
		RET     
				
include"d:\lcd\lcd_ovl.asm"
;********************************* 2001.5.16
de_10s:
		mov beep,sec
		mov dptr,#del_asc
		mov a,del_t
		movc a,@a+dptr
		mov r7,a        ;read del_t 5s,10s,20s,30s
del_1:
		push 07h
		call clock
		call led_blk
		mov led1,#p_led
		jb fl_250ms,del_22

		mov led2,#r_led
		mov led3,#0eh
		mov led4,#p_led
		
		;mov led5,#5h;p_led
		;mov led6,#6h;r_led
		;mov led7,#7h;0eh
		;mov led8,#9h;p_led
		call led
	del_22:
		pop 07h
		mov a,beep
		add a,r7
		call sec_ct
		cjne a,b,d_ha5
		sjmp del_2
	d_ha5:
		jc del_1
del_2:          
		setb es                 
		ret
;******************************************    
	add_w:
		clr tr0
		mov a,#T_L_100ms
		add a, w_adj_1 ;*******have 5 order
		mov tl0 ,a
		mov a,#T_H_100ms
	;*************************      
	       addc a,#00h;
	;*************************      
		mov th0,a               
;***********************************************
;		MOV T_1S,#TIMER_no
		ret
;*************************************************
;
t0:
		clr tr0
		push a
		push psw
		push b          
		call p0_lcd_out
		call add_w
		;sjmp t0_end1
		djnz t_1s ,t0_end1
		dec t_250ms
		cpl fl_250ms
		mov a,t_250ms
		mov b,#02
		div ab
		mov a,b
		jnz t0_n1
		cpl fl_500ms    
	t0_n1:  
		mov b,dp_dat
		inc b            ;b=1 250ms b=2 500ms
		mov a,t_250ms
		div ab
		mov a,b
		jnz turn_ch1
		call turn_ch
		setb tr2
		sjmp t0_end2
	turn_ch1:
		;nop
		;nop
		call nop1
t0_end2:
		MOV T_1S,#TIMER_no

t0_end1:
		setb tr0                
		pop b
		pop psw
		pop a
		reti    
		
turn_ch:
		clr tr2
		;cpl turn_f
		;jb turn_f,tu11
		mov N1,th2
		mov n2,tl2
	;***********************2001.9.22       
		setb test_ok
	;***********************        
		mov test_no,ch_no_temp
	;****************************** 
		jnb set_f ,turn_1
		mul ab
		nop
		sjmp tu1
	turn_1:	
		mov a,ch_no_temp
		inc a
		mov b,ch_no
		inc b
		cjne a,b, tu1_2
	tu1_3:
		clr a
		sjmp tu1_4
	tu1_2:
		jnc tu1_3 
	tu1_4:
		mov ch_no_temp,a
	tu1:	
		mov a,ch_no_temp
		mov c,acc.0
		;setb c
		mov ch_a,c
		;mov c,acc.1
		;mov ch_b,c
 		clr p1.0
		mov b,#050
		djnz b,$
		setb p1.0
		
	tur12:
		clr a
		mov th2,a
		mov tl2,a
		ret

nop1:
		mov b,#043h
		djnz b,$
		ret

;*********************************black led
led_blk:
		mov r7,#10
		mov r0,#led1
		mov a,#black
	bl_1:
		mov @r0,a
		inc r0
		djnz r7,bl_1
		ret
;***********led_jmp
led_jmp:
		call led_blk
		call y1_led
		call flash_way
		mov a,led_power
		jnz led_jmp1
		ret
led_jmp1:
		;**************1,2,3,4,5,6
		;**************ch,bps,addres,dp,en,del_t                
		cjne a,#6,le11          
	le12:
		call led_menu1
		jnb set1_f,le121
		jb fl_250ms ,le121
		mov a,led_power
		cjne a,#02,le12_2
		mov led2,#black	
	le12_2:	
		mov a,#black
		mov led3,a
		mov led4,a
	le121:
		ret
	le11:
		jc le12                 
		cjne a ,#10d,le22
	le23:
		mov r1,#dt1_dat
		mov b,#10d
		call cout_dt
		jbc sq_f,conw31
		call conw3
		mov led2,#0dh
		mov led3,#tt_led
		jnb set1_f,le23_1
		jb fl_250ms,le23_1
		mov led4,#black
	le23_1:
		ret
	blk_14:
		mov a,#black
		mov led1,a
		mov led2,a
		mov led3,a
		mov led4,a
		ret
	conw31:	
		jmp blk_14
	le22:
		jc le23
		cjne a ,#14d,le33
	le34:
		mov led_power,#19
		ret
;*************************************		
		mov r1,#fd1_dat
		mov b,#14d
		call cout_dt
		jbc sq_f,conw3_1
		call conw3
		mov led2,#0fh ;led'fd'
		mov led3,#0dh
		jnb set1_f,le23_2
		jb fl_250ms,le23_2
		mov led4,#black
	le23_2:
		ret
	conw3_1:
		jmp blk_14
	le33:
		jc le34
		cjne a ,#18d,le43
	le44:
		mov led_power,#19
		sjmp le444
	le43:
		jc le44
	le444:
		cjne a ,#22d,le53
		nop
	le54:
		mov led2,#0fh
		mov led3,#o_led
		mov b,#22d
		mov r1,#fo1
		jmp led_flhc
	le53:
		jc le54
		cjne a ,#26d,le63
	le64:
		mov b,#26d
		mov led2,#0fh
		mov led3,#5h
		mov r1,#fs1
		jmp led_flhc
	le63:
		jc le64
		cjne a ,#30d,le73
	le74:
		mov b,#30d
		mov led3,#black
		mov led2,#l_led
		mov r1,#l1
		jmp led_flhc
	le73:
		jc le74
		cjne a ,#34d,le83
	le84:
		mov b,#34d
		mov r1,#h1
		mov led3,#black
		mov led2,#h_led
		jmp led_flhc
	le83:
		jc le84
		cjne a ,#38d,le93
	le94:
		mov b,#38d
		mov r1,#c1
		mov led3,#black
		mov led2,#c_led
		jmp led_flhc
	le93:
		jc le94
		ret
led_menu1:
		mov r0,#ch_no
		mov a,led_power
		dec a
		add a,r0
		mov r0,a    ;count ram_addres for ch,bps
		;************addres,dp,en,del_t
		mov a,led_power
		cjne a,#1,lee1
		mov led1,#c_led
		mov led2,#h_led
		mov led3,#black
		mov led4,@r0
		inc led4   ;ch_no(0-1)
		ret             
	lee1:
		cjne a,#2,lee2          
		mov led1,#0bh
		mov dptr,#bps1_asc
		mov a,bps
		cjne a,#06,lee1_11
		mov led2,#1h
		mov led3,#29h
		mov led4,#2h
		ret
	lee1_11:
		movc a,@a+dptr
		call bcd_8
		add a,#20h
		mov led3,a
		mov led4,b
		mov led2,#black
		ret
	bps1_asc:
		db 3d,6d,12d,24d,48d,96d
;********************************************************
	lee2:
		cjne a,#3,lee3          
		mov led1,#0dh
		mov led2,#r_led
		mov led3,#black
		mov a,@r0   ;addres(0-64)
		call bcd_8
		mov led4,b
		jz lee22
		mov led3,a
	lee22:  
		ret
	lee3:
		cjne a,#4,lee4          
		mov led1,#0dh
		mov led2,#p_led
		mov led3,#black
		mov led4,#h_led
		mov a,@r0   ;dp(0-1)l:slow h:high
		jz lee3_end
		mov led4,#l_led
	lee3_end:
		ret
	lee4:
		cjne a,#5,lee5          
		mov led1,#0dh;2001.10.16 change da out
		mov led2,#0ah;
		mov led3,#black
		mov led4,@r0   ;en(0-1)
		inc led4
		ret
	lee5:
		cjne a,#6,lee6          
		mov dptr,#del_asc
		mov led1,#tt_led
		mov led2,#black
		mov led3,#black
		mov a,@r0   ;del_t(0-3)
		movc a,@a+dptr
		call bcd_8
		mov led4,b
		jz lee52
		mov led3,a
	lee52:
		ret
	del_asc:
		db 1,10d,20d,30d
	lee6:
		ret             
		;************led "ch"                                                           
	cout_dt:        
		;clr c
		mov a,led_power
		add a,#03
		subb a,b
		mov led_ch,a      ;2001.10.18
		cjne a,ch_no,conw1
	conw21:
		;clr c	
		sjmp conw2
	conw1:
		jc conw21
		;************
		;mov a,b
		;add a,#04
		setb sq_f
		inc b
		mov led_power,b
		ret             
		;*************
	conw2:
		add a,r1
		mov r1,a    ;count dt
		ret
	conw3:  
		mov a,@r1
		mov led4,a
		mov led1,led_ch
		inc led1
		ret
;**********************************************                         
		;;keY_jmp mov sec_bak,sec
		proc led_flhc
	led_flhc:
		call cout_dt
		jbc sq_f,led_fl12
		call conw3
		mov a,#black
		mov led4,a
		jmp flash_y1
	led_fl12:
		jmp blk_14
		end

		proc flash_y1

⌨️ 快捷键说明

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