51单片机学习网开通新域名www.8951.com啦!速度更快更稳定!自学单片机跟我来!

返回主页 给我留言 单片机教学 单片机提高 音响技术 品质技术 技术资料  软件下载 学液晶 产品介绍 如何购买
超级好的51单片机编程例程!工程师必看! 51单片机学习网热心版主单片东东,收集整理的单片机教学课程(例子程序, 特别推荐!)转载请保留连接!
单片机简介与单片机的发展历史 I/O 口功能实例 流水灯和方波试验
定时器实例 (1秒报警,200hz输出 200-250变化输出)

数码管0— 9999 的循环显示

ADC0809模拟输入电压,在数码管上显示出来

ADC0809输入的两个不同电压数相加显示出来

软件滤波十六进制六位数加法(数码显示) 求六位和中的最大值和最小值(数码显示)
求减去最大和最小值后的值(数码显示) 除4所得软件滤波值(数码显示)
软件模拟一个振 动传感器软件搜频的全过程 在显示频率输出的同时显示AD值(数码显示)
过程检定(数码显示)

DA 转换 三角波 正旋波 梯形波(dac0832)

串口通信,看到画面——“我爱单片 机”。

按键数显,数码管显示加一
PWM码简介及解码原理 --红外遥控原理与解码程序
智能定时的4位电子钟(带定时控制) 智能红外工业控制器

        51单片机学习网热心版主单片东东,收集整理的单片机教学课程(例子程序, 特别推荐!)转载请保留连接!

如果您有任何不明白的地方请参加51单片机学习网论坛讨论:

2.2 智能红外工业控制器

程序介绍:这个产品是通过遥控器控制定时时间来决 P1.0口输出高电平和低电平的时间,在P1.0口接一个继

电器后,从而控制电磁阀开和关,以达到对石油含水量的 定时智能排放。现已应用在上海金山炼油厂,反映良好。

本实验仪完全模拟了这个产品,它的详细操作请参照附一 (以用于上海金山炼油厂的产品说明)。

程序实例(honwai.asm):

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP DIN0 ;TIME

ORG 00013H

AJMP INT

106

MAIN:

;DATA DEFINE////////////////////////////////////////

ON_MINUTE_LOW EQU 30H

ON_MINUTE_HIGH EQU 31H

ON_HOUR_LOW EQU 32H

ON_HOUR_HIGH EQU 33H

OFF_MINUTE_LOW EQU 34H

OFF_MINUTE_HIGH EQU 35H

OFF_HOUR_LOW EQU 36H

OFF_HOUR_HIGH EQU 37H

DIS_MINUTE_LOW EQU 38H

DIS_MINUTE_HIGH EQU 39H

DIS_HOUR_LOW EQU 40H

DIS_HOUR_HIGH EQU 41H

TIMES_ADD_NUMBER EQU 42H

TIMEM_ADD_NUMBER EQU 3FH

INTERRUPT_NUMBER EQU 43H

INTSET_FLAG EQU 44H

ETTYPE_FLAG EQU 4FH

BL EQU 3EH

BL1 EQU 4EH

SET_ON_MLOW EQU 3AH

SET_ON_MHIGH EQU 3BH

SET_ON_HLOW EQU 3CH

SET_ON_HHIGH EQU 3DH

SET_OFF_MLOW EQU 4AH

SET_OFF_MHIGH EQU 4BH

SET_OFF_HLOW EQU 4CH

107

SET_OFF_HHIGH EQU 4DH

;//////////////////////////////////////////////////

;DATA GIVE FIRST NUMBER//////////////////////////

MOV ON_MINUTE_LOW,#00H

MOV ON_MINUTE_HIGH,#02H

MOV ON_HOUR_LOW,#00H

MOV ON_HOUR_HIGH,#00H

MOV OFF_MINUTE_LOW,#00H

MOV OFF_MINUTE_HIGH,#06H

MOV OFF_HOUR_LOW,#03H

MOV OFF_HOUR_HIGH,#00H

MOV DIS_MINUTE_LOW,#00H

MOV DIS_MINUTE_HIGH,#00H

MOV DIS_HOUR_LOW,#00H

MOV DIS_HOUR_HIGH,#00H

MOV TIMES_ADD_NUMBER,#00H

MOV TIMEM_ADD_NUMBER,#00H

MOV INTERRUPT_NUMBER,#00H

MOV INTSET_FLAG,#00H

MOV SETTYPE_FLAG,#00H

MOV BL,#00H

MOV BL1,#00H

MOV SET_ON_MLOW,#00H

MOV SET_ON_MHIGH,#00H

MOV SET_ON_HLOW,#00H

MOV SET_ON_HHIGH,#00H

MOV SET_OFF_MLOW,#00H

MOV SET_OFF_MHIGH,#00H

108

MOV SET_OFF_HLOW,#00H

MOV SET_OFF_HHIGH,#00H

;//////////////////////////////////////////////////

MOV TMOD,#00010001B

MOV TL0,#0AFH

MOV TH0,#3CH

SETB IT1

SETB EX1

SETB TR0

SETB ET0

SETB PT0

SETB EA

CLR P1.0

;//////////////////////////////////////////////////

;DISPLAY///////////////////////////////////////////

DISPLAY:

MOV BL1,#00H

MOV A,DIS_MINUTE_LOW

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D1: JNB TI,D1

CLR TI

MOV A,DIS_MINUTE_HIGH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D2: JNB TI,D2

109

CLR TI

MOV A,DIS_HOUR_LOW

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D3: JNB TI,D3

CLR TI

MOV A,DIS_HOUR_HIGH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D4: JNB TI,D4

CLR TI

LCALL DELAY1

;INTSETFLAG//////////////////////////////////

MOV A,INTSET_FLAG

CJNE A,#00H,AONFE

AJMP DISP

AONFE: CJNE A,#01H,AONSH

AJMP ONFE

AONSH: CJNE A,#02H,AOFFE

AJMP ONSH

AOFFE: CJNE A,#03H,AOFSH

AJMP OFFFE

AOFSH: AJMP OFFSH

;/////////////////////////////////////////////

DISP: JNB P1.0,DISON

AJMP DISOFF

110

DISON: MOV A,#0ECH

MOV SBUF,A

D8: JNB TI,D8

CLR TI

MOV A,#0FCH

MOV SBUF,A

D7: JNB TI,D7

CLR TI

MOV A,#00H

MOV SBUF,A

D6: JNB TI,D6

CLR TI

MOV A,#00H

MOV SBUF,A

D5: JNB TI,D5

CLR TI

LCALL DELAY1

;INTSETFLAG////////////////////////////////////////

MOV A,INTSET_FLAG

CJNE A,#00H,BONFE

AJMP D1ISP

BONFE: CJNE A,#01H,BONSH

AJMP ONFE

BONSH: CJNE A,#02H,BOFFE

AJMP ONSH

BOFFE: CJNE A,#03H,BOFSH

AJMP OFFFE

BOFSH: AJMP OFFSH

111

;/////////////////////////////////////////////

D1ISP: AJMP DISPLAY

DISOFF:

MOV A,#8EH

MOV SBUF,A

D12: JNB TI,D12

CLR TI

MOV A,#8EH

MOV SBUF,A

D11: JNB TI,D11

CLR TI

MOV A,#0FCH

MOV SBUF,A

D10: JNB TI,D10

CLR TI

MOV A,#00H

MOV SBUF,A

D9: JNB TI,D9

CLR TI

LCALL DELAY1

LCALL DELAY1

;INTSETFLAG///////////////////////////////////

STATUS: MOV A,INTSET_FLAG

CJNE A,#00H,CONFE

AJMP D2ISP

CONFE: CJNE A,#01H,CONSH

AJMP ONFE

CONSH: CJNE A,#02H,COFFE

112

AJMP ONSH

COFFE: CJNE A,#03H,COFSH

AJMP OFFFE

COFSH: AJMP OFFSH

;/////////////////////////////////////////////

D2ISP: AJMP DISPLAY

;//////////////////////////////////////////////////

;STATUS ONFEN///////////////////////////////////////

ONFE:

MOV A,#9EH

MOV SBUF,A

DD1: JNB TI,DD1

CLR TI ;E

MOV A,#8EH

MOV SBUF,A

DD2: JNB TI,DD2

CLR TI ;F

MOV A,#0ECH

MOV SBUF,A

DD3: JNB TI,DD3

CLR TI ;N

MOV A,#0FCH

MOV SBUF,A

DD4: JNB TI,DD4

CLR TI ;O

LCALL DELAY2

MOV A,BL1

CJNE A,#01H,ONFE

113

MOV A,SETTYPE_FLAG

CJNE A,#01H,STA

AJMP SETONFEN

STA: AJMP STATUS

;//////////////////////////////////////////////////

;STATUS ON SH/////////////////////////////////////

ONSH:

;display onus//////////////////////////////////////

MOV A,#6EH

MOV SBUF,A

DD8: JNB TI,DD8

CLR TI ;H

MOV A,#0B6H

MOV SBUF,A

DD7: JNB TI,DD7

CLR TI ;S

MOV A,#0ECH

MOV SBUF,A

DD6: JNB TI,DD6

CLR TI ;N

MOV A,#0FCH

MOV SBUF,A

DD5: JNB TI,DD5

CLR TI ;O

LCALL DELAY2

MOV A,BL1

CJNE A,#01H,ONSH

MOV A,SETTYPE_FLAG

114

CJNE A,#01H,STA1

AJMP SETONSH

STA1:

AJMP STATUS

;//////////////////////////////////////////////////

;STATUS OFF FE///////////////////////////////////

OFFFE:

;display ofad///////////////////////////////////////

MOV A,#09EH

MOV SBUF,A

DD10 : JNB TI,DD10

CLR TI ;E

MOV A,#8EH

MOV SBUF,A

DD9: JNB TI,DD9

CLR TI ;F

MOV A,#8EH

MOV SBUF,A

DD12: JNB TI,DD12

CLR TI ;F

MOV A,#0FCH

MOV SBUF,A

DD11: JNB TI,DD11

CLR TI ;O

LCALL DELAY

MOV A,BL1

CJNE A,#01H,OFFFE

MOV A,SETTYPE_FLAG

115

CJNE A,#01H,STA2

AJMP SETOFFEN

STA2:

AJMP STATUS

;//////////////////////////////////////////////////

;STATUS OFF SH///////////////////////////////////

OFFSH:

MOV A,#6EH

MOV SBUF,A

DD14: JNB TI,DD14

CLR TI ;H

MOV A,#0B6H

MOV SBUF,A

DD13: JNB TI,DD13

CLR TI ;S

MOV A,#8EH

MOV SBUF,A

DD16: JNB TI,DD16

CLR TI ;F

MOV A,#0FCH

MOV SBUF,A

DD15: JNB TI,DD15

CLR TI ;O

LCALL DELAY2

MOV A,BL1

CJNE A,#01H,OFFSH

MOV A,SETTYPE_FLAG

CJNE A,#01H,STA3

116

AJMP SETOFFSH

STA3:

AJMP STATUS

;/////////////////////////////////////////////

SETONFEN:

CLR TR0

MOV C,P1.0

JNC FI

AJMP FI1

FI: MOV DIS_MINUTE_LOW,#00H

MOV DIS_MINUTE_HIGH,#00H

MOV DIS_HOUR_LOW,#00H

MOV DIS_HOUR_HIGH,#00H

FI1: MOV SET_ON_MLOW,#00H

MOV SET_ON_MHIGH,#00H

SETONFEN2:

INC SET_ON_MLO

MOV A,SET_ON_MLOW

CJNE A,#0AH,CJ

MOV SET_ON_MLOW,#00H

INC SET_ON_MHIGH

MOV A,SET_ON_MHIGH

CJNE A,#0AH,CJ

MOV SET_ON_MHIGH,#00H

CJ:

MOV A,SET_ON_MLOW

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

117

MOV SBUF,A

D13: JNB TI,D13

CLR TI

MOV A,SET_ON_MHIGH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D14: JNB TI,D14

CLR TI

MOV A,SET_ON_HLOW

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D15: JNB TI,D15

CLR TI

MOV A,SET_ON_HHIGH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D16: JNB TI,D16

CLR TI

LCALL DELAY1

LCALL DELAY1

MOV ON_MINUTE_LOW,SET_ON_MLOW

MOV ON_MINUTE_HIGH,SET_ON_MHIGH

MOV ON_HOUR_LOW,SET_ON_HLOW

MOV ON_HOUR_HIGH,SET_ON_HHIGH

MOV A,SETTYPE_FLAG

118

CJNE A,#00H,SETONFEN1

SETB TR0

AJMP DISPLAY

SETONFEN1:

AJMP SETONFEN2

SETONSH:

CLR TR0

MOV C,P1.0

JNC F2

AJMP FI2

F2: MOV DIS_MINUTE_LOW,#00H

MOV DIS_MINUTE_HIGH,#00H

MOV DIS_HOUR_LOW,#00H

MOV DIS_HOUR_HIGH,#00

FI2: MOV SET_ON_HLOW,#00H

MOV SET_ON_HHIGH,#00H

SETONSH2:

INC SET_ON_HLOW

MOV A,SET_ON_HLOW

CJNE A,#0AH,CJ1

MOV SET_ON_HLOW,#00H

INC SET_ON_HHIGH

MOV A,SET_ON_HHIGH

CJNE A,#0AH,CJ1

MOV SET_ON_HHIGH,#00H

CJ1:

MOV A,SET_ON_MLOW

MOV DPTR,#SETTAB

119

MOVC A,@A+DPTR

MOV SBUF,A

D17: JNB TI,D17

CLR TI

MOV A,SET_ON_MHIGH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D18: JNB TI,D18

CLR TI

MOV A,SET_ON_HLOW

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D19: JNB TI,D19

CLR TI

MOV A,SET_ON_HHIGH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D20: JNB TI,D2

CLR TI

LCALL DELAY1