返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

<>51单片机学习网热心版主单片东东,收集整理的单片机教程课程(例子程序, 特别推荐!)转载请保留连接!
单片机简介与单片机的发展历史I/O 口功能实例流水灯和方波试验
定时器实例 (1秒报警,200hz输出 200-250变化输出)

数码管0—9999 的循环显示

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

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

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

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

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

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

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

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

7.42 在显示频率输出的同时显示AD值(数码显示)

程序实例(ad25dis.asm):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP DIN1

MAIN:

64

;定义频率200和300//////////////////////////////////

F2H EQU 30H

F2L EQU 31H

F3H EQU 32H

F3L EQU 33H

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

DISFLAG EQU 34H ;显示标志

DISL EQU 35H ;显示低位

DISH EQU 36H ;显示高位

ADNUMBER EQU 37H ;AD值

DISADL EQU 38H ;显示AD低位

DISADH EQU 39H ;显示AD高位

;定义频率保持初值//////////////////////////////////

MOV R1,#100

MOV R2,#02H

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

MOV ADNUMBER,#00H ;AD转换数初值

;显示高低位初值///////////////////////////////

MOV DISADL,#00H

MOV DISADH,#00H

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

;显示赋初值////////////////////////////////////////

MOV DISFLAG,#00H

MOV DISL,#00H

MOV DISH,#00H

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

;频率赋初值////////////////////////////////////////

MOV F2H,#0F6H

65

MOV F2L,#3BH

MOV F3H,#0F8H

MOV F3L,#2FH

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

CLR P1.0 ;在P1.0口产生一

个低电平,一个脉冲是由一个高电平和一个低电平组成的

MOV TMOD,#00010000B;定时器工作于方

1

MOV TH1,F2H

MOV TL1,F2L ;200HZ输出

SETB EA ;开总中断

SETB TR1 ;开定时器1运行

SETB ET1 ;开定时器1允许

ADDIS:

ACALL AD ;呼叫AD子程序

;将转换的数字量屏蔽高位低位送DISADL保存////////////

MOV A,ADNUMBER

ANL A,#0FH

MOV DISADL,A

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

;将转换的数字量屏蔽低位,将高位送DISADH保存////////

MOV A,ADNUMBER

ANL A,#0F0H

SWAP A

MOV DISADH,A

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

DISPLAY:

MOV A,DISADL

66

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D1: JNB TI,D1

CLR TI

MOV A,DISADH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D2: JNB TI,D2

CLR TI

MOV A,DISL

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D3: JNB TI,D3

CLR TI

MOV A,DISH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D4: JNB TI,D4

CLR TI

ACALL DELAY

AJMP ADDIS

LOOP: AJMP LOOP

DIN1:

PUSH ACC

67

CPL P1.0 ;取反P1.0口,实际是为了

不断的将p1.0的电平关系转换,即产生了频率

;频率保持时间//////////////////////////////////////

DJNZ R1,RE

MOV R1,#100

DJNZ R2,RE

MOV R2,#02H

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

INC DISFLAG

MOV ` A,DISFLAG

CJNE A,#0AH,FF

MOV DISFLAG,#00H

INC DISL

MOV A,DISL

CJNE A,#0AH,FF

MOV DISL,#00H

INC DISH

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

FF: MOV A,F2H

CJNE A,F3H,XIA ;频率高位到300HZ的高位

了吗?

AJMP JIA

;频率高位没到300HZ的高位值,直接将低位值加1///////

XIA: INC F2L

MOV A,F2L

CJNE A,#00H,RE

INC F2H

MOV A,F2H

68

CJNE A,F3H,RE

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

;频率高位加到300HZ的高位值了,低位加一,到300HZ的低

位值了吗,没到出去,到了关定时器///////////////////

JIA:

INC F2L ;到了将200HZ频率的低位

1

MOV A,F2L

CJNE A,#F3L,RE

CLR TR1

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

RE:

MOV TH1,F2H

MOV TL1,F2L

POP ACC

RETI

AD: MOV DPTR,#7F00H ;指向转换地址

MOV A,#03H ;指向转换口

MOVX @DPTR,A ;转换

MOV 40H,#64H

D6: DJNZ 40H,D6 ;等100微秒转换完

MOVX A,@DPTR ;转换后的值给A

MOV ADNUMBER,A ;转换的值给30H

RET

DELAY:

MOV R3,#0FFH

D5: DJNZ R3,D5

RET

69

SETTAB:

DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,

0FEH,0F6H

DB 0EEH,3EH,9CH,7AH,9EH,8EH ;数显代码

END