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

📄 xiaoqi.asm

📁 通过硬件电路实现
💻 ASM
字号:
;*************************************************************************************************
;*************************************************************************************************
;程序名称:	H.ASM
;程序功能:	采集湿度信号
;************************************************************************************************

;*************************************************************************************************
;		I/O分配
;*************************************************************************************************

;*******************************************************
;		MAX7219管脚定义
;*******************************************************
CLK		BIT	P2.7
LOAD		BIT	P2.6
DIN		BIT	P2.5

;*************************************************************
;		TLC0831 PIN DEFINE
;*************************************************************
CS		BIT	P2.2		;WHICH PIN THE CS(1) CONNECT TO
SCLK		BIT	P2.3		;WHICH PIN THE SCLK(7) CONNECT TO
DOUT		BIT	P2.4		;WHICH PIN THE DOUT(6) CONNECT TO



;*************************************************************************************************
;		RAM空间分配
;*************************************************************************************************

;*******************************************************
;		TLC0831的数据接口
;*******************************************************
RH8		DATA	31H		;THE EIGHT BITS OF THE TLC0831

;*******************************************************
;		MAX7219的数据接口
;*******************************************************
TEMP		EQU	32H
ADDRESS		EQU	33H
VALUE		EQU	34H

;*******************************************************
;		MAX7219用于显示的8位数据
;*******************************************************
GEWEI		EQU	35H
SHIWEI		EQU	36H


;**********************************
;		USED IN DELAY SUBROUTINE
;		本程序具有两个DELAY,公用此三个RAM空间
;**********************************
DL1		DATA	40H
DL2		DATA	41H
DL3		DATA	42H

;***********************************
;		HUMIDITY RESULT
;***********************************
HUMTEN		DATA	43H
HUMBIT		DATA	44H


;***********************************************************************************
;***********************************************************************************
;	主程序开始
;***********************************************************************************
;***********************************************************************************
	ORG	0000H
 	JMP	MAIN
	ORG	0030H
MAIN:
;*******************************************************
;	串口初始化
;*******************************************************
   	MOV	TMOD,#20H	;设置定时器1工作方式2
	MOV	TL1,#0F4H	;定时器1计数初值,#0E8=BAUD:1200bps;#0F4=BAUD:2400bps
	MOV	TH1,#0F4H	;计数器reload值
				;BAUD:1200=#0E8@11.0592MHz
				;BAUD:2400=#0F4@11.0592MHz
				;BAUD:4800=#0FA@11.0592MHz
				;BAUD:9600=#0FD@11.0592MHz
	CLR	ES		;禁止串行中断
	MOV	PCON,#00H	;波特率不倍增
	SETB	TR1		;启动定时器1
	MOV	SCON,#50H	;设置串行口方式1,REN=1
	SETB	EA		;使能中断

;****************************************************************
;	程序循环部分,发送湿度数据到串行口,通过MAX7219显示
;****************************************************************
LOOP:

;*******************************************************
;	MAX7219初始化
;*******************************************************

	LCALL	DELAY		;延时
        SETB	CS
	CLR	SCLK
	SETB	SCLK
	NOP
	CLR	SCLK
	CLR	CS
	NOP			;MAKE SURE THAT THERE IS 8.5US
	NOP			;FOR THE  TO CONVERT
	NOP
	NOP
	NOP		        ;ONE NOP STAND FOR A MACHINE CYCLE
	NOP		        ;IF THE CRYSTALL FREQ IS 12MHZ,
	NOP		        ;there should be about 10 NOPS.
	NOP
	NOP
	NOP
	NOP
	CLR	A
	CLR	C
	SETB	SCLK
        NOP
        CLR     SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D07
	RLC	A
	SETB	SCLK
        NOP
        CLR     SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D06
	RLC	A
	SETB	SCLK
        NOP
        CLR     SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D05
	RLC	A
	SETB	SCLK
        NOP
        CLR     SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D04
	RLC	A
	SETB	SCLK
        NOP
        CLR	SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D03
	RLC	A
	SETB	SCLK
        NOP
        CLR     SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D02
	RLC	A
	SETB	SCLK
        NOP
        CLR     SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D01
	RLC	A
	SETB	SCLK
        NOP
        CLR     SCLK
        NOP
        SETB    DOUT
        NOP
	MOV	C,DOUT		;D00
	RLC	A
	MOV	RH8,A
	CLR	SCLK
        SETB    CS
	CLR	C
        MOV     A,RH8
        MOV     DPTR,#TAB
        SUBB    A,#70H
        MOVC    A,@A+DPTR
        MOV     20H,A


        MOV     R1,#00H                 ;变换成十进制
        CLR     C
        MOV     A,20H
CHAN:   SUBB    A,#0AH
        JC      CHAN1
        INC     R1
        AJMP    CHAN
CHAN1:  ADD     A,#0AH
	MOV	SHIWEI,R1         ;送MAX7219显示
	MOV	GEWEI,A


        MOV	ADDRESS,#0CH            ;开始初始化7219
	MOV	VALUE,#01H		;使能7219

	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08

SEND1:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND1
	MOV	A,VALUE
        MOV	TEMP,#08
SEND2:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND2
	SETB	LOAD
	MOV	ADDRESS,#0BH		;显示位数控制
	MOV	VALUE,#03H		;显示4个数码管
	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08

SEND11:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND11
	MOV	A,VALUE
        MOV	TEMP,#08
SEND21:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND21
	SETB	LOAD

	MOV	ADDRESS,#0AH		;亮度控制
	MOV	VALUE,#03H              ;共16个等级,X0-XF
	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08
SEND13:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND13
	MOV	A,VALUE
        MOV	TEMP,#08
SEND23:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND23
	SETB	LOAD

	MOV	ADDRESS,#09H		;译码方式
	MOV	VALUE,#0FFH
	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08
SEND14:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND14
	MOV	A,VALUE
        MOV	TEMP,#08
SEND24:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND24
	SETB	LOAD

        MOV	ADDRESS,#01H		;数码管0:个位
	MOV	A,GEWEI
	MOV	VALUE,A
	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08

SEND15:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND15
	MOV	A,VALUE
        MOV	TEMP,#08
SEND25:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND25
	SETB	LOAD

	MOV	ADDRESS,#02H		;数码管6:十位
	MOV	A,SHIWEI
	MOV	VALUE,A
	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08

SEND16:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND16
	MOV	A,VALUE
        MOV	TEMP,#08
SEND26:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND26
	SETB	LOAD

	MOV	ADDRESS,#03H		;数码管7:百位
	MOV	A,#0AH
	MOV	VALUE,A
	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08

SEND17:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND18
	MOV	A,VALUE
        MOV	TEMP,#08
SEND27:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND28
	SETB	LOAD

	MOV	ADDRESS,#04H		;数码管8:千位
	MOV	A,#0CH
	MOV	VALUE,A
	CLR	LOAD
	NOP
	NOP
        MOV	A,ADDRESS
	MOV	TEMP,#08

SEND18:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB    CLK
	DJNZ	TEMP,SEND18
	MOV	A,VALUE
        MOV	TEMP,#08
SEND28:
	RLC	A
	MOV	DIN,C
	NOP
	CLR	CLK
        SETB	CLK
	DJNZ	TEMP,SEND28
	SETB	LOAD






;***************************************
;	DELAY FOR SOME TIME
;***************************************
DELAY:
	MOV	DL1,#25
D10:
	MOV	DL2,#255
D11:
	MOV	DL3,#20
D12:
	NOP
	DJNZ	DL3,D12
	DJNZ	DL2,D11
	DJNZ	DL1,D10
	RET


    TAB:DB      64H,60H,5CH,57H,53H
        DB      4EH,4AH,46H,41H,3DH
        DB      39H,35H,31H,2DH,29H
        DB      26H,22H,1EH,1AH,17H
        DB      13H,10H,0CH,09H,06H
        DB      02H,00H








END

⌨️ 快捷键说明

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