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

📄 lcd_f2.asm

📁 单片机直接驱动液晶显示的汇编程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
		clr sq1_f
		clr es
		mov frist,#0
		call led_blk
menu22:
		call clock
		call f1_count
		call led_blk
		call led_s4
		call led
		call key_bord1
		call key_del
		call key_s3
		mov a,led_power
		jnz menu22
		call clr_kd
		clr set_f
		;mov set_data,#0
		mov ch_no_temp,#0               
		mov frist,#0
		setb es
		ret
f1_count:
		jbc test_ok,f1_co10
		ret
	;***********************		
	f1_co10:
		call count_hz	
		mov a,led_power
		cjne a,#3,f1_co2
	f1_co3:
		mov r1,#fd1_temp
		mov r0,#y3
		call fmov          ;f1 to y3
		sjmp f1_co4	
	f1_co2:
		cjne a,#5,f1_co4
		mov r1,#fd1_temp
		mov r0,#y4
		call fmov          ;f2 to y4
	f1_co4:
		call f_khz
		ret
;**********************************
		proc key_s3
key_s3:
		mov a,key_data
		jnz ky_s1
		ret	
	ky_s1:
		cjne a,#01,kys2  ;ka
		call clr_kd
		clr sq1_f
		mov sec_bak,sec
		inc led_power
		mov a,led_power
		cjne a,#6,ky1_1
		;***************
		;mov led_power,#01
		call count_k_b
		mov led_power,#01
	ky1_1:
		ret
	kys2:
		cjne a,#02,kys3 ;kb
		jmp kbs_jmp
	kys3:
		cjne a,#03,kys4 ;kc
		mov a,led_power
		cjne a,#01,kys30
		inc ch_no_temp
		mov a,ch_no_temp
		mov b,ch_no
		inc b
		cjne a,b ,kys32
		mov ch_no_temp,#0	
	kys32:			
		ret
	kys30:
		jmp kcs_jmp
	kys4:
		cjne a,#04,kys5 ;kd
		mov led_power,#0
		call clr_kd
	kys5:
		ret
		end
;**********************************************
		proc led_s4
led_s4:
		mov a,led_power
		cjne a,#1,le_s01
;************** 2002.1.20************	
		mov a,ch_no
		jnz le012_1				
		inc led_power
		ret
;*************************************
	le012_1:
		mov led1,#0ch
		mov led2,#r_led
		mov led3,#black
		mov led4,#black	
		jb fl_250ms,le012
		mov led4,ch_no_temp
		inc led4
	le012:
		ret	
	le_s01:	
		cjne a,#2,le_s1
		mov led1,ch_no_temp
		inc led1
		mov led2,#yo_led
		mov led3,#1
		mov a,#black
		mov led4,a
		mov r1,#y1
		mov led_ch,#0
		call flash_y1
		sjmp le_s5

	le_s1:
		cjne a,#03,le_s2
		mov led1,ch_no_temp
		inc led1
		mov led2,#0fh
		mov led3,#1
		mov a,#black
		mov led4,a
		mov r1,#fd1_temp
		mov led_ch,#0
		call flash_y1
		sjmp le_s5
	
	le_s2:
		cjne a,#04,le_s3
		mov led1,ch_no_temp
		inc led1
		mov led2,#yo_led
		mov led3,#2
		mov a,#black
		mov led4,a
		mov r1,#y2
		mov led_ch,#0
		call flash_y1
		sjmp le_s5
	le_s3:
		cjne a,#05,le_s5
		mov led1,ch_no_temp
		inc led1
		mov led2,#0fh
		mov led3,#2
		mov a,#black
		mov led4,a
		mov  r1,#fd1_temp
		;*******************
		mov led_ch,#0
		call flash_y1
	le_s5:
		mov led_ch,ch_no_temp
		ret
		end
;*************************************
	count_k_b:
	;******************** couny k b
		mov r1,#y4
		mov r0,#fd1_temp ;fd1_temp=y4
		call fmov
		mov r1,#y3
		call fsub       ;f2-f1=fd1_temp
		mov r0,#y2
		mov r1,#y1
		call fsub       ;y2-y1=y2
		mov r1,#fd1_temp
		call fdiv       ;y2=k
		;***********
		;***********
	;********************* k to k1
		mov r0,#k1
		call jj_ar	
		mov r1,#y2
		call fmov
	;********* wr ee ***********
		mov r0,#k1_ee
		call jj_ar
		mov dpl,a
		mov dph,#0
		mov r2,#3
		mov r0,#k1
		call jj_ar	
		call clr_wk
	;***********************
		mov r0,#y2
		mov r1,#y3   ;y3=f1
		call fmul     ;k*f1
		mov r1,#y2
		mov r0,#y1
		call fsub     ;y-k*f=b
		;***********
		mov r0,#b1
		call jj_ar
		mov r1,#y1
		call fmov
		mov r0,#b1_ee
		call jj_ar
		mov dpl,a
		mov dph,#0
		mov r2,#3
		mov r0,#b1
		call jj_ar	
		call clr_wk
		call clr_y1
		ret
jj_ar:
		mov a,ch_no_temp		
		mov b,#03
		mul ab
		add a,r0
		mov r0,a  ;r0 to k1
		ret
;********************************
	f_khz:		
		mov r0,#fd1_temp
		call fmov         ;f1,f2 to fd1_temp
		;***********
		;***********
		mov fd2_temp,#04h
		mov fd2_temp+1,#10h
		mov fd2_temp+2,#00h
		mov r0,#fd2_temp
		call btof
		mov r0,#fd1_temp
		mov r1,#fd2_temp
		call fdiv
		mov r1,#fd1_temp   ;f1/1000 to led
		ret
;****************** 0 asc 48 ,9 asc 57 ******
send_pc:
		jb rs_485_f ,se_end
		jb set1_f ,se_end
		clr es
		clr f0
		mov r0,#led1
		mov r1,#pc1
		mov r6,#21
	se_c1:
		mov @r1,#32
		inc r1
		djnz r6 ,se_c1
;*********************************
		mov r1,#pc21
		mov a,ch_no
		inc a
		mov r6,a
		add a,#48  ;ch_no 1-4
		mov @r1,a
	;&&&&&&&&&&&&&&&&&&&&&&&&&	
		mov r1,#pc1
	se000:
		mov r7,#4
	se00:				
		mov a,@r0
		cjne a,#black,se1
		mov @r1,#32	
		sjmp se3_2 	
	se1:
		cjne a,#ff_led,se2
		mov @r1,#45	
		sjmp se3_2 	
	se2:
        	cjne a,#20h,se3
	se31:
		clr c
		subb a,#20h
		add a ,#48
		mov @r1,a
		inc r1
		mov @r1,#46;dot to led
		setb f0
		sjmp se3_2	
	se3:
		jnc se31		
		add a ,#48
		mov @r1,a
	se3_2:
		inc r1
		inc r0
		djnz r7,se00
		jbc f0,se09
		mov @r1,#46
		inc r1
	se09:
		djnz r6,se000
		setb es
	se_end:
		ret
;************************************
clock:
                mov a,t_250ms
		cjne a,#0ffh,clk1
		sjmp clk2
	clk1:	
                jnz clock_end           
	clk2:
                mov t_250ms ,#04d
                inc sec
                mov a,sec
                cjne a,#60d,clock_end;!!!!!!!!!!!!!!!!!!!!!!
                mov sec,#00h
clock_end:
		ret
;************************************
led_ch_clock: 
		call led_blk
;**********************************************
led_year:       
		ret

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
da_out:
		mov r1,#y1
		mov a,da_no
		mov b,#03
		mul ab
		add a,r1
		mov r1,a
	;************************			
		mov r0,#fd2_temp
		call fmov
		mov r1,#fs1
		mov a,da_no
		mov b,#03
		mul ab
		add a,r1
		mov r1,a
	;***************************	
		call fdiv         ;fd2_temp= da%
		mov fd1_temp,#04h
		mov fd1_temp+1,#40h
		mov fd1_temp+2,#da_l ;*******2001.10.16
		mov r0,#fd1_temp
		call btof
		mov r1,#fd2_temp
		call fmul  ;fd1_temp= data
		call fint
		call ftod								
		clr cs_da
		mov r7,#08
		clr a
		jnb f0,da_12
		mov a,fd1_temp;(h)<=
	da_12:	
		call da_bit1
		mov r7,#08
		mov a,fd1_temp;(l)<=
		jnb f0,da_13
		mov a,fd1_temp+1;(l)<=
	da_13:
		call da_bit1
		setb cs_da
		setb ck_da
		ret
	da_bit1:
		setb ck_da
		rlc a
		mov si_da,c
		clr ck_da
		djnz r7,da_bit1
		ret	

led_asc:
		db 11111100B;0
		db 01100000B;1
		db 11011010B;2
		db 11110010B;3
		db 01100110B;4
		db 10110110B;5
		db 10111110B;6
		db 11100000B;7
		db 11111110B;8
		db 11110110B;9
		DB   11101110B;a=>A
		DB   00111110B;B=>B      
		DB   10011100B;C=>C      
		DB   01111010B;D=>D      
		DB   10011110B;E=>E      
		DB   10001110B;F=>F      
		DB   01101110B;H=>10H      
		DB   00011100B;L=>11H      
		DB   11101100B;N=>12H      
		db   00101010b;n=>13h
		db   11111100b;O=>14h
		dB   00111010B;o=>15H
		DB   11001110B;P=>16H
		DB   11100110B;Q=>17H
		DB   00001010B;r=>18H
		DB   10110110B;S=>19H      
		DB   01111100B;U=>1AH      
		DB   00111000B;u=>1BH      
		DB   00000000B;BLACK=>1CH
		DB   11111111B;8.=>1DH
		db   00000010b;-=>1Eh
		db   00011110b;t=>1Fh
		db 11111101B;0.=>20h
		db 01100001B;1.
		db 11011011B;2.
		db 11110011B;3.
		db 01100111B;4.
		db 10110111B;5.
		db 10111111B;6.
		db 11100001B;7.
		db 11111111B;8.
		db 11110111B;9.=>29h
		db 00011010b;cc=>2ah
		db 00000001b;cc=>2bh
		db 01110110b;y0=>2ch
		db 'li jie 2001 9 20'  
asc_1:
		;abcd efgh=>abch fged
		;mov b,#0
		mov c,acc.7;a
		mov b.7,c
		mov c,acc.6;b
		mov b.6,c
		mov c,acc.5;c
		mov b.5,c
		mov c,acc.4;d
		mov b.0,c
		
		mov c,acc.3;e
		mov b.1,c
		mov c,acc.2;f
		mov b.3,c
		mov c,acc.1;g
		mov b.2,c
		mov c,acc.0;h
		mov b.4,c
		mov a,b
		ret		
		

;*******************************************
		;led=>  /   abcdefgh
		;abcdefgh=>
		;degfhcba;****fu hao out

		proc led
LED:            
		call fh_to_led9
		;mov led9,#00001100b
		;mov led10,#00100000b
;********************************2002.1.19
		mov r0,#lcd_buf
		mov r1,#led1
		mov R7,#12
		mov dptr,#led_asc
	led_next:
		mov a,@r1
		cjne r1,#led9,lku12
	lku13:
		sjmp lku14	
	lku12:
		jnc lku13	
		movc a,@a+dptr
;******************************** p4,p8 to led
		mov b,a
		cjne r1,#led4,lku45
		             ;trxd to p4
		mov c,rs_led
		cpl c
		mov acc.0,c
		sjmp lku14
	lku451:
		mov a,b
		clr acc.0
		sjmp lku14
	lku45:
		cjne r1,#led8,lku14
		mov c,ee_f
		;cpl c
		mov acc.0,c
		sjmp lku14
	lku453:
		mov a,b
		clr acc.0
	lku14:
		call asc_1
	lki12:
		mov @r0,a
		inc r0
		inc r1
		djnz R7 ,led_next               

led_np:
		call seg_bin
		call bin_lcd
led_end1:
		
		ret
		end
seg_bin:
		setb llc_f
		mov r0,#lcd_buf
		mov r1,#p0_buf
		mov r6,#12
	stodpg1:
		mov b,r1
		mov r7,#8
		mov a,@r0
		mov r2,a
	stodpg2:
		mov a,r2
		rrc a
		mov r2,a
		push psw
		mov a,@r1
		rrc a
		mov @r1,a
		inc r1
		pop psw
		cpl c
		mov a,@r1
		rrc a 
		mov @r1,a
		inc r1
		cjne r7,#5,stodpg3
		mov r1,b
	stodpg3:
		djnz r7,stodpg2
		inc r0
		mov r1,b
		cjne r6,#9,stodpg4
		mov r1,#p2_buf  ;!!!!!!!!!
	stodpg4:
		cjne r6,#5,stodpg5
		mov r1,#p3_buf  ;!!!!!!!!!
	stodpg5:
		djnz r6,stodpg1
		clr llc_f
		ret
lcd_ee24:
;*************** change led9,led10 (low)
;		mov a,led10     ;led10=abcdefgh=>0,0,0,ppm,kn,%rh,t,0
		mov a,led9      ;led9=C,m,MPa,^,v,v,^,%
		anl a,#0fh
		rl a
		mov led10,a    ;fh2 to led10 
		;******************************
		mov b,led9	
		mov a,h_l_out;*1_ch to led
		mov c,acc.0;1l
		mov b.2,c
		mov c,acc.1;1h
		mov b.1,c
		;**************************2ch to led9
		mov a,h_l_out;*********
		mov c,acc.2;2l
		mov b.3,c
		mov c,acc.3;2h
		mov b.4,c
		;************ % to led9.0
		mov a,led9
		mov c,acc.4
		mov b.0,c
;**************************** b= led9 +2^,2v,1^,1v
		mov a,fh1_bak  ;jb fh=1,0
		dec a
		jnz jk_12 
		clr b.2    ;1l
		clr b.1	   ;1h
		mov led1,#black
		mov led2,#black
		mov led3,#black
		mov led4,#black
	jk_12:
		mov a,fh2_bak
		dec a
		jnz jk_13 
		clr b.3    ;2l
		clr b.4	   ;2h
		mov led5,#black
		mov led6,#black
		mov led7,#black
		mov led8,#black
	jk_13:		
		mov led9,b
		ret
;***********************************
p0_lcd_out:
		push dph
		push dpl
		push 00h
		push 07h
		push 06h
		push 05h
		push 04h
		push 03h
		push 02h
		push 01h

	       mov p0,#0aah
		;mov p0,#01010101b

		mov a,m_count
		add a,#p0_buf_bak ;m_wei
		mov r0,a
		mov a,@r0
		mov r6,a

		mov a,m_count
		add a,#p2_buf_bak;r_wei
		mov r0,a
		mov a,@r0
		mov r5,a
;**************************************
		mov a,m_count    ;f_wei
		add a,#p3_buf_bak
		mov r0,a
		mov a,@r0
;**************************************
		mov c,beep_out
		mov acc.5,c     ;beep out at 595.5
		mov c, lamp_out	
		cpl c
		mov acc.6,c    ;lamp out at 595.6 
		mov c,ee_f
		cpl c
		mov acc.4,c    ;ee out at 595.4 
		mov r4,a
		call lcd_595
;************************************
		clr rck_m
		clr rck_r
		clr rck_f
		setb rck_m
		setb rck_r
		setb rck_f
		;**************** com_out

		mov a,m_count
		mov dptr,#lcd_tab
		movc a,@a+dptr
		mov p0,a
;*******************************
xc2:
		mov w_adj_1,#xu-10
		inc m_count
		mov a,m_count
		cjne a,#8,t0_int
		mov m_count,#0
		;call bin_lcd
		;call led
	t0_int:
		;call bin_lcd
		pop 01h
		pop 02h
		pop 03h
		pop 04h
		pop 05h
		pop 06h
		pop 07h
		pop 00h
		pop dpl
		pop dph
		ret
lcd_tab:
	db 10101000b
	db 10101011b
	db 10100010b
	db 10101110b
	db 10001010b
	db 10111010b
	db 00010101b
	db 11101010b
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
lcd_595:
		mov r0,#04h
		mov r3,#03
	lcd_n1:			
		mov r7,#8d
		mov a,@r0
	lcd01:
		rlc a
		mov si_lcd,c
		clr sck_lcd
		nop
		setb sck_lcd
		djnz r7,lcd01
		inc r0
		djnz r3,lcd_n1
		ret
bin_lcd:
		jb llc_f,bin_lcd_end
		mov r0,#p0_buf
		mov r1,#p0_buf_bak
		mov r7,#24d
	bin_lcd1:
		mov a,@r0
		mov @r1,a
		inc r0
		inc r1
		djnz r7,bin_lcd1
		;mov w_adj_1,#xu+138
		ret
bin_lcd_end:
		;mov w_adj_1,#xu
		ret
;*******************************
		proc set_fh12	
set_fh12:
;***********************************
		clr menu1_over
		mov set_data,#0
		call led_blk
		call led_fh12		
	pass1:
		call led_fh12		
		call key_bord1
		call key_del
		call key_jmp12
		call clock
		call y1_count
		jnb menu1_over,pass1
		mov set_data,#0
		call clr_kd
		mov fh1_bak,fh1
		mov fh2_bak,fh2
		ret
		end
;*************************************
key_jmp12:
		mov a,key_data
		jnz kp12	
		ret	
	kp12:
		cjne a,#02,kp22;kb
		mov kc_data,#0
		inc set_data
		mov a,set_data
		cjne a,#02,kp22_1
		mov set_data,#0	
	kp22_1:
		ret						
	kp22:
		cjne a,#01,kp32;ka
		ret			
	kp32:
		cjne a,#03,kp422;kc
		mov r0,#fh1
		mov a,set_data
		add a,r0
		mov r0,a
		inc @r0
		mov a,@r0
		cjne a,#6,kp32_1  ;midf 2002.3.17
		mov @r0,#0	
	kp32_1:
		ret
	kp422:
		cjne a,#04,kp5221;kd
		mov dptr,#fh1_ee
		mov r2,#2
		mov r0,#fh1		
		call clr_wk
		setb menu1_over
	kp5221:
		ret		


led_fh12:
		;call led_blk
		mov led1,#05h
		mov led2,#n_led
		mov led3,fh1
		mov led4,fh2
		jb fl_250ms,led_fh12_end
		mov r0,#led3
		mov a,set_data
		add a,r0
		mov r0,a
		mov @r0,#black
led_fh12_end:
		call led
		ret
		
fh_to_led9:
		;0,p4,1,2,3 led9_h
		;0=no ,p4=led4+20h
		;0,p8,1,2,3 led9_l
		;0=no ,p8=led8+20h
		;abcdef_6     led10
;***************************************
		mov a,fh1
		jnz fhto1
	fhto1_1:
		mov a,led9
		anl a,#0fh
		mov led9,a
		sjmp fhto2
	fhto1:
		cjne a,#01,fhto13

		sjmp fhto1_1
	fhto13:
		mov dptr,#fh_asc
		dec a
		dec a
		movc a,@a+dptr
		mov b,a		
		mov a,led9
		anl a,#0fh
		orl a,b
		mov led9,a
;***********************************
	fhto2:	
		mov a,fh2
		jnz fhto122
	fhto2_1:
		mov a,led9
		anl a,#0f0h
		mov led9,a
		sjmp fhto222
	fhto122:
		cjne a,#01,fhto132
		sjmp fhto2_1
	fhto132:
		mov dptr,#fh_asc
		dec a
		dec a
		movc a,@a+dptr
		swap a ;;;;;;h=>l
		mov b,a		
		mov a,led9
		anl a,#0f0h
		orl a,b
		mov led9,a
	fhto222:
;****************** auto led ee_f trs h,l********
		jmp lcd_ee24		
fh_asc:
	db 10000000b
	db 01000000b
	db 00100000b
	db 00010000b

⌨️ 快捷键说明

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