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

📄 lcdspeedmeter.asm

📁 LCD转速表源代码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;*******************************************************************************
;*******************************************************************************
;**--------------File Message---------------------------------------------------
;*******************************************************************************
;---------------History Version-------------------------------------------------
;** Creator:
;** Version: V1.0
;** 2006/05/07/	----
;** Description: Original Version
;*******************************************************************************

SYSSTATUS				EQU				020H
FON						EQU				0
FCW						EQU				1


FSPEEDCON				EQU				009H									; 是否速度转换
FFindKey				EQU				010H
FHaveKey				EQU				011H
FHadKEY					EQU				012H

FZERO1					EQU				013H
FZERO2					EQU				014H
FZERO3					EQU				015H

BUZZNUM					EQU				029H									; 蜂鸣器计数器
T0STEPBUZZ				EQU				02AH									; 定时器0蜂鸣器用计数器
T0STEP					EQU				02BH									; 定时器计数器

LCDDATA1				EQU				02CH									; LCD数据缓存区
LCDDATA2				EQU				02DH
LCDDATA3				EQU				02EH
LCDDATA4				EQU				02FH
LCDBUF1					EQU				031H									; LCD显示缓存
LCDBUF2					EQU				032H
LCDBUF3					EQU				033H
LCDBUF4					EQU				034H

RPMSPEED0				EQU				035H									; RPM速度
RPMSPEED1				EQU				036H
RPMSPEED2				EQU				037H

KEYBUF0					EQU				03AH
KEYBUF1					EQU				03BH
SPEEDVAL				EQU				03CH
TMR1STEP				EQU				03DH
BRAKETIME				EQU				03EH
BUZZTIME				EQU				03FH									; 
SPEEDNUM				EQU				040H									; 速度计数寄存器
SPEEDHEX0				EQU				041H
SPEEDHEX1				EQU				042H
SPEEDHEX2				EQU				043H
SPEEDSTEP				EQU				044H


LCD1BC					EQU				060H
LCD2D					EQU				061H
LCDP1					EQU				062H
LCD3D					EQU				063H
LCDP2					EQU				064H
LCD4D					EQU				065H
LCDP3					EQU				066H
LCD5D					EQU				067H

LCD2E					EQU				068H
LCD2C					EQU				069H
LCD3E					EQU				06AH
LCD3C					EQU				06BH
LCD4E					EQU				06CH
LCD4C					EQU				06DH
LCD5E					EQU				06EH
LCD5C					EQU				06FH

LCD2G					EQU				070H
LCD2B					EQU				071H
LCD3G					EQU				072H
LCD3B					EQU				073H
LCD4G					EQU				074H
LCD4B					EQU				075H
LCD5G					EQU				076H
LCD5B					EQU				077H

LCD2F					EQU				078H
LCD2A					EQU				079H
LCD3F					EQU				07AH
LCD3A					EQU				07BH
LCD4F					EQU				07CH
LCD4A					EQU				07DH
LCD5F					EQU				07EH
LCD5A					EQU				07FH

FRPMSTOP				EQU				03AH

FRPMHOLD				EQU				03BH
;-------------------------------------------------------------------------------
LCDCOMPORT				EQU				P2										; LCDCOM口
LCDCOM0					EQU				10101010B
LCDCOM1A				EQU				10101000B
LCDCOM1B				EQU				10101011B
LCDCOM2A				EQU				10100010B
LCDCOM2B				EQU				10101110B
LCDCOM3A				EQU				10001010B
LCDCOM3B				EQU				10111010B
LCDCOM4A				EQU				00101010B
LCDCOM4B				EQU				11101010B
LCDSEGPORT				EQU				P0		 								; LCD SEG口
BUZZPIN					EQU				0E9H									; 蜂鸣器控制脚P4.1
LCDBGLIGHT				EQU				P1.6									; 背光控制灯
BRAKEPIN				EQU				P3.7									; 制动控制脚
SPEEDPWM				EQU				P3.4

;*******************************************************************************
;** 中断向量表
;*******************************************************************************
;>>>>>Begin
 						ORG				0000H
 						LJMP			START
 						ORG 			000BH
 						LJMP 			INT_TIMER0
 						ORG 			001BH
 						LJMP 			INT_TIMER1
;*******************************************************************************
;** TIMER0时间中断函数
;*******************************************************************************
INT_TIMER0:
						PUSH			PSW
						PUSH			ACC
						PUSH			DPL
						PUSH			DPH
  						MOV     		TH0,#0F8H 								;>>TIMER1中断定时=10ms/F=12MHz
  						MOV     		TL0,#080H
                		SETB			RS0
                		CLR				RS1
						INC				T0STEP
;-------------------------------------------------------------------------------速度计算时间=0.46875s
						INC				SPEEDSTEP								; (N/0.45875)*32=RPM
						MOV				A,SPEEDSTEP
						CJNE			A,#0F2H,$+3
						JC				T0SPEEDCON0
						MOV				SPEEDSTEP,#00H
						MOV				SPEEDHEX2,SPEEDNUM
						MOV				SPEEDHEX1,TH1
						MOV				SPEEDHEX0,TL1
						MOV				TL1,#00H
						MOV				TH1,#00H
						MOV				SPEEDNUM,#00H
						SETB			FSPEEDCON								; 速度转换标志位
T0SPEEDCON0:
;-------------------------------------------------------------------------------制动时间
						MOV				A,BRAKETIME
						JNZ				BRAKECON0
						CLR				BRAKEPIN
						JMP				BRAKECON1
BRAKECON0:
						DEC				BRAKETIME
						SETB			BRAKEPIN
BRAKECON1:
;-------------------------------------------------------------------------------蜂鸣器时间
						MOV				A,BUZZTIME
						JNZ				BUZZCON0
						CLR				BUZZPIN									; P4.1
						JMP				BUZZCON1
BUZZCON0:
						DEC				BUZZTIME
						SETB			BUZZPIN									; P4.1
BUZZCON1:
;-------------------------------------------------------------------------------
						MOV				TMR1STEP,T0STEP
						ANL				TMR1STEP,#0FH
						MOV				A,SpeedVal
						JNZ				TMR1CON1
						SETB			SPEEDPWM
						JMP				TMR1OUT
TMR1CON1:
						CJNE			A,TMR1STEP,$+3
						JC				TMR1CON2
						CLR				SPEEDPWM
						JMP				TMR1OUT
TMR1CON2:
						SETB			SPEEDPWM
TMR1OUT:
;-------------------------------------------------------------------------------
						MOV				LCDCOMPORT,#LCDCOM0						;>>全部COM端1/2电压
						MOV				A,T0STEP
						ANL				A,#03H
						MOV				B,A
						JNZ				TMR0CON2
						JNB				T0STEP.2,TMR0CON1
						MOV				LCDBUF1,LCDDATA1
						MOV				LCDBUF2,LCDDATA2
						MOV				LCDBUF3,LCDDATA3
						MOV				LCDBUF4,LCDDATA4
TMR0CON1:
						JB				T0STEP.2,TMR0CON2
						MOV				A,LCDDATA1
						CPL				A
						MOV				LCDBUF1,A
						MOV				A,LCDDATA2
						CPL				A
						MOV				LCDBUF2,A
						MOV				A,LCDDATA3
						CPL				A
						MOV				LCDBUF3,A
						MOV				A,LCDDATA4
						CPL				A
						MOV				LCDBUF4,A
TMR0CON2:						
						JNB				T0STEP.2,TMR0CON3
						MOV				A,B
						MOV				B,#8
						MUL				AB
						MOV				DPTR,#JMPTAB1
						JMP				@A+DPTR
JMPTAB1:
						MOV				LCDCOMPORT,#LCDCOM1A
						MOV				LCDSEGPORT,LCDBUF1
						AJMP			TMR0CON4
						MOV				LCDCOMPORT,#LCDCOM2A
						MOV				LCDSEGPORT,LCDBUF2
						AJMP			TMR0CON4
						MOV				LCDCOMPORT,#LCDCOM3A
						MOV				LCDSEGPORT,LCDBUF3
						AJMP			TMR0CON4
						MOV				LCDCOMPORT,#LCDCOM4A
						MOV				LCDSEGPORT,LCDBUF4
						AJMP			TMR0CON4
TMR0CON3:
						MOV				A,B
						MOV				B,#8
						MUL				AB
						MOV				DPTR,#JMPTAB2
						JMP				@A+DPTR
JMPTAB2:
						MOV				LCDCOMPORT,#LCDCOM1B
						MOV				LCDSEGPORT,LCDBUF1
						AJMP			TMR0CON4
						MOV				LCDCOMPORT,#LCDCOM2B
						MOV				LCDSEGPORT,LCDBUF2
						AJMP			TMR0CON4
						MOV				LCDCOMPORT,#LCDCOM3B
						MOV				LCDSEGPORT,LCDBUF3
						AJMP			TMR0CON4
						MOV				LCDCOMPORT,#LCDCOM4B
						MOV				LCDSEGPORT,LCDBUF4
						AJMP			TMR0CON4
;-------------------------------------------------------------------------------按键处理
TMR0CON4:
TMR0CON5:
						MOV				A,T0STEP
						ANL				A,#010H
						JNZ				TMR0CON6
						MOV				A,P1
						ORL				A,#07H
						ANL				A,#0C7H
						MOV				B,A
						MOV				P1,A
						NOP
						NOP
						NOP
						MOV				A,P1
						ANL				A,#03FH
						ANL				B,#03FH
						XRL				A,B
						JNZ				TMR0CON5A
						JMP				TMR0CON5Z
TMR0CON5A:
						MOV				A,P1
						MOV				R0,#00H
TMR0CON5B:
						RRC				A
						INC				R0
						JC				TMR0CON5B
						MOV				A,P1
						ORL				A,#038H
						ANL				A,#0F8H
						MOV				P1,A
						NOP
						NOP
						NOP
						MOV				A,P1
						RR				A
						RR				A
						RR				A
						MOV				R1,#00H
TMR0CON5C:
						RRC				A
						INC				R1
						JC				TMR0CON5C
						MOV				A,R0
						ANL				A,#03H
						MOV				B,#03H
						MUL				AB
						MOV				B,R1
						ANL				B,#03H
						ADD				A,B
						JB				FFindKey,TMR0CON5D
						MOV				KEYBUF0,A
						SETB			FFindKey
						JMP				TMR0CON6
TMR0CON5D:
						JB				FHaveKey,TMR0CON5E
						CJNE			A,KEYBUF0,TMR0CON5Z
						MOV				KEYBUF1,KEYBUF0
						SETB			FHaveKey
TMR0CON5E:
						JMP				TMR0CON6
TMR0CON5Z:
						CLR				FFindKey
						CLR				FHaveKey
						CLR				FHadKey						
;-------------------------------------------------------------------------------
TMR0CON6:
						POP				DPH
						POP				DPL
						POP				ACC
        				POP				PSW
        				RETI
;*******************************************************************************
;** TIMER1时间中断函数
;*******************************************************************************
INT_TIMER1:
						INC				SPEEDNUM
						RETI
;*******************************************************************************
;>>>The Pro inti.
;*******************************************************************************
START:
						CLR				EA
						MOV				SP,#0E0H
						MOV				8EH,#02H								;bit0:ALE,=1(disable),=0(enable)|bit1:EXTRAM,=1(out ram),=0(in ram)
						MOV				R0,#0FFH								;*******CLR RAM
						CLR				A
INITRAM:
						MOV				@R0,A
						DJNZ  			R0,INITRAM
;-------------------------------------------------------------------------------
						MOV     		TMOD,#01010001B							; TIMER1计数器,TIMER0为定时器
  						MOV     		TH0,#0CAH 								;>>TIMER1中断定时=10ms/F=16.384MHz
  						MOV     		TL0,#0ABH
  						MOV     		TH1,#00H 								;>>TIMER1中断定时=10ms/F=16.384MHz
  						MOV     		TL1,#00H
						MOV				IP,#00001000B
						MOV     		IE,#00001010B							;>>ET0/1/2=1
						SETB			TR0
        				SETB 			TR1
        				SETB 			EA
						MOV				LCDDATA1,#084H
						MOV				LCDDATA2,#0C0H
						MOV				LCDDATA3,#080H
						MOV				LCDDATA4,#0C0H
						CLR				LCDBGLIGHT
						CLR				BUZZPIN
						MOV				BUZZNUM,#08H
						MOV				RPMSPEED0,#00H
						MOV				RPMSPEED1,#00H
						MOV				RPMSPEED2,#00H
;*******************************************************************************
;;主循环程序。
;*******************************************************************************
MAINLOOP:	
						NOP
						NOP
						JNB				FHaveKey,MAINCON1
						NOP
						NOP
						JB				FHadKey,MAINCON1
						NOP
						NOP
						CALL			KEYHANDLE
						NOP
						NOP
						SETB			FHADKEY
						NOP
						NOP
MAINCON1:
						JNB				FSPEEDCON,MAINCON2
						NOP
						NOP
						CALL			SPEEDCONVERT
						NOP
						NOP
MAINCON2:
						NOP
						NOP
						JMP				MAINLOOP
						NOP
						NOP
;*******************************************************************************
;;按键处理程序。
;*******************************************************************************
KEYHANDLE:
						MOV				BUZZTIME,#080H
						MOV				A,KEYBUF1
						MOV				RPMSPEED0,A
						CJNE			A,#08H,KEYCON1					; S down
						MOV				A,SpeedVal
						JZ				KEYCON0A
						DEC				A
						ANL				A,#0FH
						MOV				SpeedVal,A
KEYCON0A:
						JMP				KEYOUT
KEYCON1:
						CJNE			A,#09H,KEYCON2					; ON/OFF
						JB				FON,KEYCON1A
						SETB			FON
						SETB			P3.6
						JMP				KEYOUT
KEYCON1A:
						CLR				FON
						CLR				P3.6
						JMP				KEYOUT
KEYCON2:
						CJNE			A,#0AH,KEYCON3					; CW/CCW
						MOV				A,SpeedVal
						JZ				KEYCON2A
						JB				FON,KEYCON2B
KEYCON2A:
						JB				FCW,KEYCON2A1
						SETB			FCW
						SETB			0E8H							; P4.0
						JMP				KEYCON2B
KEYCON2A1:
						CLR				FCW
						CLR				0E8H							; P4.0
KEYCON2B:
						JMP				KEYOUT
KEYCON3:
						CJNE			A,#0BH,KEYCON4					; Break
						SETB			P3.7
						MOV				BRAKETIME,#080H
						JMP				KEYOUT
KEYCON4:
						CJNE			A,#0CH,KEYCON5					; S up
						MOV				A,SpeedVal
						INC				A
						ANL				A,#0FH
						JZ				KEYCON4A
						MOV				SpeedVal,A
KEYCON4A:
						JMP				KEYOUT

⌨️ 快捷键说明

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