| 网站首页 | 技术文章 | 专业论文 | PLC可编程 | 单片机 | 变频器 | 传感器 | 嵌入式系统 | 电源技术 | 运动与伺服 | 
 | 校园招聘 | 留言板 | 
您现在的位置: 自动化学习网 >> 技术文章 >> 单片机 >> 文章正文 用户登录 新用户注册
软件模拟一个振 动传感器软件搜频的全过程         ★★★ 【字体:
软件模拟一个振 动传感器软件搜频的全过程
作者:佚名    文章来源:本站原创    点击数:    更新时间:2007-3-23    

7.4过程检定

程序介绍(7.41—7.43):本程序用软件模拟了一个振 动传感器软件搜频的全过程。振动传感器是通过在激励端

给传感器一定频率的电压,在感应端感应一定频率的电压 值。所以它能测很多东西,比如不同的压力所感应不同电

压值,不同油品粘度也可以感应不同电压值,等等。但是 这存在一个问题?就是传感器何时才能达到谐振状态呢,

于是这就要给激励端变化的频率来测感应端的电压,感应 端的电压在这个变化频率内何时最大,这时所给的频率就

是所搜到的谐振频率。以前没有单片机软件控制时,我们 只能通过硬件不断的给激励端变化频率电压,然后测感应

端电压,来搜到谐振频率。7.41是在p1.0口输出并显示变 化的频率200-250hz(省略了2的显示),7.42在7.41的基础

上增加了AD输入量的显示。

7.43将会在您输入变化AD值后,将搜到的AD值与 频率值显示出来。实际应用如压力检测,粘度检测。

程序操作:因为7.41和7.42只是7.43的铺垫。所以在 7.43程序写入并上电后,您将会在数码管左两位看到

200-250HZ变化频率的显示(省略2),右边看到输入AD 值的显示。您可以用钟表起微调AD输入的电位器,使AD

值上升,下降。在变化频率显示完后,程序将会把您所输 入的最大的AD值与其所对应的频率一起显示出来,这就是

软件模拟的全过程。

7.41 P1.0口产生200——250HZ变化频率输出(数

码显示)

程序实例(f25dis.asm):

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP DIN1

MAIN:

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

F2H EQU 30H

60

F2L EQU 31H

F3H EQU 32H

F3L EQU 33H

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

DISFLAG EQU 34H ;显示标志

DISL EQU 35H ;显示低位

DISH EQU 36H ;显示高位

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

MOV R1,#50

MOV R2,#02H

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

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

MOV DISFLAG,#00H

MOV DISL,#00H

MOV DISH,#00H

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

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

MOV F2H,#0F6H

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 ;开总中断

61

SETB TR1 ;开定时器1运行

SETB ET1 ;开定时器1允许

DISPLAY:

MOV SBUF,#00H

D1: JNB TI,D1

CLR TI

MOV SBUF,#00H

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 DISPLAY

LOOP: AJMP LOOP

DIN1:

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

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

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

62

DJNZ R1,RE

MOV R1,#50

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

CJNE A,F3H,RE

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

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

63

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

JIA:

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

MOV A,F2L

CJNE A,#F3L,RE

CLR TR1

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

RE:

MOV TH1,F2H

MOV TL1,F2L

RETI

DELAY:

MOV R3,#0FFH

D5: DJNZ R3,D5

RET

SETTAB:

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

0FEH,0F6H

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

END

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

 

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      最新热点   最新推荐   相关文章
    基于普通单片机的LIN协议实现…
    提高单片机系统可靠性的设计…
    利用单芯片MCU提高照明系统能…
    基于MCU的风光互补独立电源系…
    单片机控制GSM手机的技术及应…
    用51内核网络单片机构成的远…
    在Bank Switch基础上 实现大…
    用单片机实现DSP在线调试的一…
    利用Flash实现单片机系统的在…
    基于AT89C52单片机的自动存取…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)