基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx

上传人:b****5 文档编号:7504266 上传时间:2023-01-24 格式:DOCX 页数:34 大小:291.87KB
下载 相关 举报
基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx_第1页
第1页 / 共34页
基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx_第2页
第2页 / 共34页
基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx_第3页
第3页 / 共34页
基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx_第4页
第4页 / 共34页
基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx

《基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx》由会员分享,可在线阅读,更多相关《基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx(34页珍藏版)》请在冰豆网上搜索。

基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序.docx

基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序

 

JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY

 

单片机原理与应用课程设计

 

学院名称:

班级:

姓名:

学号:

指导老师:

 

基于单片机(AT89C51)的频率计设计

1.3技术指标

设计要求的技术指标有:

①输入脉冲幅度:

0-5v

②周期量测量范围:

0.1ms—50ms

③测量精度±1%

④显示方式:

四位数字显示

 

ORG0000H;程序复位入口地址

AJMPMAIN

ORG001BH;计时器T1的中断入口

AJMPPTF0;跳转到中断程序中

ORG0033H;主程序入口地址

MAIN:

MOVSP,#60H

MOVTH1,#0FAH

MOVTL1,#60H;定时4mS

SETBEA;开放CPU中断

SETBET1;开放定时器中断

MOVTH0,#00H

MOVTL0,#00H;给计数器T0赋初值0

MOVTMOD,#15H;计时器T1工作在方式1定时模式,计数器T0工作在方式1计数模式

MOV30H,#0FAH;循环250次,共定时1S

MOV40H,#0;用于判断显示数码管哪一位

SETBTR0;启动计数器0

SETBTR1;启动定时器1

LOOP1:

ACALLZHUANH;将二进制数转换为压缩BCD码

ACALLCHAIF;将压缩BCD码转换为非压缩BCD码

AJMPLOOP1;循环处理计数器T0采集得到的数据

PTF0:

MOVTH1,#0F0H

MOVTL1,#60H;给定时器T1重新赋值

INC40H;数码管判断位加1

MOVA,50H

CJNEA,#00H,DAY;判断50H单元是否为零,若为0继续往下执行,若不为0,则跳转到子程序DAY中

MOVA,40H;每4ms显示一位,从最高位开始,到最低位时,返回高位

CJNEA,#1,LOP1

ACALLQIANW

AJMPTIAO

LOP1:

CJNEA,#2,LOP2

ACALLBAIW

AJMPTIAO

LOP2:

CJNEA,#3,LOP3

ACALLSHIW

AJMPTIAO

LOP3:

ACALLGEW

MOV40H,#0

AJMPTIAO

DAY:

MOVA,40H

CJNEA,#1,LP1

ACALLQIANW1

AJMPTIAO

LP1:

CJNEA,#2,LP2

ACALLBAIW1

AJMPTIAO

LP2:

CJNEA,#3,LP3

ACALLSHIW1

AJMPTIAO

LP3:

ACALLGEW1

MOV40H,#0

TIAO:

DJNZ30H,PTFR;判断是否到1S

MOV20H,TH0

MOV21H,TL0;将计数器T0中的数转移到20H,21H中

MOVTH0,#0

MOVTL0,#0;将计数器T0重新赋0

MOV30H,#0FAH

PTFR:

RETI

ZHUANH:

MOVR2,20H;将计数得到的值存入R2和R3中

MOVR3,21H

CLRA

MOVR4,A;将R4、R5、R6清零

MOVR5,A

MOVR6,A

MOVR7,#16

LOOP:

CLRC;将16位二进制数逐位左移一位,移得的数据放入进位C中

MOVA,R3

RLCA

MOVR3,A

MOVA,R2

RLCA

MOVR2,A

MOVA,R6;(R4R5R6)+(R4R5R6)+C=(R4R5R6)*2+C

ADDCA,R6

DAA

MOVR6,A

MOVA,R5

ADDCA,R5

DAA

MOVR5,A

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

DJNZR7,LOOP

RET

CHAIF:

MOVA,R5;将压缩BCD码R4R5R6转换为非压缩BCD码,从高到低依次放于50H、51H、52H、53H、54H

ANLA,#0F0H

SWAPA

MOV52H,A

MOVA,R5

ANLA,#0FH

MOV51H,A

MOVA,R6

ANLA,#0F0H

SWAPA

MOV53H,A

MOVA,R6

ANLA,#0FH

MOV54H,A

MOV50H,R4

RET

QIANW:

MOVA,52H;频率不超过10KHZ时,以HZ为单位,四位显示,最高位为千位,以此类推

MOVDPTR,#TAB;千位上显示51H单元中的内容

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F7H

RET

BAIW:

MOVA,51H;百位上显示52H单元中的内容

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FBH

RET

SHIW:

MOVA,53H;十位上显示53H单元中的内容

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FDH

RET

GEW:

MOVA,54H;个位上显示54H单元中的内容

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FEH

RET

QIANW1:

MOVA,50H;频率大于10KHZ时,小数点放千位,以KHZ为单位,省去个位,以四位显示

MOVDPTR,#TAB;千位上显示50H单元中的内容

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0F7H

RET

BAIW1:

MOVA,52H;百位上显示51H单元中的内容和显示小数点

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FBH

RET

SHIW1:

MOVA,51H;十位上显示52H单元中的内容

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FDH

RET

GEW1:

MOVA,53H;个位上显示53H单元中的内容

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FEH

RET

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

TAB1:

DB0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH

NOP

END

 

基于单片机的数字钟设计

1.3技术指标

设计要求的技术指标有:

①输入脉冲幅度:

0-5v

②周期量测量范围:

0.1ms—50ms

③测量精度±1%

④显示方式:

四位数字显示

 

ORG0000H

AJMPMAIN

ORG000BH

AJMPPTF0

ORG0033H

TAB:

DB7EH,48H,3DH,6DH,4BH,67H,77H,4CH,7FH,6FH;不带小数点

TAB1:

DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;带小数点

TAB2:

DB01H,02H,04H,08H,10H,20H,40H,80H,00H;自检a--h

PTF0:

PUSHPSW;保护现场PSW,ACC进栈

PUSHACC;选工作寄存器1区

MOVTH0,#0ECH;T0初始化

MOVTL0,#78H

DJNZ36H,PTFOR

MOV36H,#92;判断中断次数计数单元减1是否为0

XRL33H,#0FFH

DJNZ37H,PTFOR;中断次数计数单元36H,37H

MOV37H,#2

MOVA,32H;秒单元32H加1

ADDA,#1

DAA;十进制调整

MOV32H,A

CJNEA,#60H,PTFOR;判断单元是否计数到60

MOV32H,#0

MOVA,31H;分单元31H加1

ADDA,#1

DAA

MOV31H,A

CJNEA,#60H,PTFOR

MOV31H,#0

MOV32H,#0

MOVA,30H;时单元30H加1

ADDA,#1

DAA

MOV30H,A

CJNEA,#24H,PTFOR;判断计数单元是否到24

MOV30H,#0

MOV31H,#0

MOV32H,#0

PTFOR:

POPACC;恢复现场,ACC,PSW退栈

POPPSW

RETI

MAIN:

MOVP2,#0FH;数码管自检

MOVDPTR,#TAB2

SS:

MOVR2,#00H

SST:

MOVA,R2

MOVCA,@A+DPTR

JZSS

MOVP0,A

INCR2

ACALLDEL3

MOVA,P0

CJNEA,#80H,SST

 

MOV30H,#00H;状态数初始化

MOV31H,#00H

MOV32H,#00H

MOV33H,#00H

MOV36H,#92

MOV37H,#2

MOVSP,#0EFH;栈指针初始化

MOVTH0,#0ECH

MOVTL0,#78H

MOVTMOD,#1

MOVIP,#2

MOVIE,#82H;中断初始化

SETBTR0;允许T0计数

LOOP:

ACALLLOP0

JBP1.0,XX;校时按键按下但未松开(低电平)转移到校时模块

ACALLJS1

XX:

JBP1.1,YY;校分按键按下但未松开(低电平)转移到校分模块

ACALLJF1

ACALLLOP0

YY:

AJMPLOOP

JS1:

LCALLDEL

JS2:

JBP1.0,JS3;校时按键松开(高电平)校时

ACALLLOP0

AJMPJS2

JS3:

MOVA,30H

ADDA,#1

DAA

MOV30H,A

CJNEA,#24H,RT;校时到24时,采用24进制计时

MOV30H,#0

JF1:

LCALLDEL

JF2:

JBP1.1,JF3;校分按键松开(高电平)校分

ACALLLOP0

AJMPJF2

JF3:

MOVA,31H

ADDA,#1

DAA

MOV31H,A

CJNEA,#60H,RT;分为60进制计时

MOV31H,#0

MOVA,30H

INCA,

MOV30H,A;分校时到60时,时自加一

RT:

RET

LOP0:

MOVR6,33H

CJNER6,#00H,ZZ;保证秒的闪烁,采用小数点的闪烁

MOVDPTR,#TAB1

LJMPLOP1

ZZ:

MOVDPTR,#TAB

LOP1:

MOVA,31H

ANLA,#0FH;利用与0F从中取出分个位,显示分个位

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FFH

MOVP2,#0EFH;保证数码管的显示不变,原理来源于任务5

ACALLDEL

MOVA,31H

ANLA,#0F0H;利用与F0相与取出分十位,显示分十位

SWAPA;交换高低半字节

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FFH

MOVP2,#0DFH

ACALLDEL

MOVA,30H;时个位的显示(原理与分同)

ANLA,#00FH

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FFH

MOVP2,#0BFH

ACALLDEL

MOVA,30H;时十位的显示

ANLA,#0F0H

SWAPA

MOVCA,@A+DPTR

MOVP0,A

MOVP2,#0FFH

MOVP2,#7FH

ACALLDEL

RET

DEL:

MOVR4,#20;延时程序1

DEL1:

MOVR5,#40

DEL2:

DJNZR5,DEL2

DJNZR4,DEL1

RET

DEL3:

MOVR7,#0FFH;延时程序2

DEL4:

MOVR6,#0FFH

DEL5:

DJNZR6,DEL5

DJNZR7,DEL4

RET

END

 

 

 

 

基于单片机的窄带脉冲宽度检测

 

第1节引言

一般单片机能够检测较宽的脉冲,但很难检测窄带脉冲,该系统只要是用于检测窄带脉冲,并显示其宽度的功能。

1.1系统概述

本系统使用AT89C2051单片机,利用定时器T1门控GATE的功能,测量引脚上出现的正脉冲宽度,并用LED数码管显示出来。

1.2设计任务

设计要完成的任务有硬件设计和软件设计。

硬件方面,AT89C2051单片机的P3.3口测试外部脉冲。

P1口可以接LED数码管。

软件方面,利用单片机的定时完成正脉冲宽度的读取,然后用到P1口使LED数码管显示。

第2节系统硬件设计

硬件电路关系到软件的编程,也要有利用系统的实际应用。

2.1系统的硬件构成及功能

本系统有以下几个部件组成:

单片机AT89C2051,CD4511芯片电源,LED数码管等。

单片机即单片微型计算机,是集CPU,ROM,RAM,I/O口,内部总线及中断系统于一体的微控制器,它体积小,重量轻,功能强,广泛应用于智能产品及工业自动控制上,而51单片机是各单片机最为典型和最有代表性的一种。

电源提供单片机正常工作,单片机只需+5V的电压,可以通过220V的市电通过变压、整流稳压来得到,维持系统的正常工作。

LED数码管用于显示所检测外部输入脉冲的宽度,直观

2.2AT89C2051单片机及其引脚说明

AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。

内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与IntelMCS-51系列单片机的指令和输出管脚相兼容。

由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。

AT89C2051单片机是一个有20个引脚的芯片,引脚配置如图1所示。

与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。

图1AT89C2051引脚配置

AT89C2051芯片的20个引脚功能为:

VCC电源电压。

GND接地。

RST复位输入。

当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。

XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2来自反向振荡放大器的输出。

P1口8位双向I/O口。

引脚P1.2~P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。

P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1”后,可用作输入。

在闪速编程与编程校验期间,P1口也可接收编码数据。

P3口引脚P3.0~P3.5与P3.7为7个带内部上拉的双向I/0引脚。

P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。

P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,内部上拉,可用输入。

P3口也可用作特殊功能口,其功能见表1。

P3口同时也可为闪速存储器编程和编程校验接收控制信号。

2.3CD4511芯片说明

CD4511是BCD锁存—段码译码—共阴LED驱动集成电路,其引脚如图2所示,各引脚功能如下:

 

图2CD4511各引脚配置

VCC:

接正电源;

VSS:

接地;

A,B,C,D:

BCD码输入脚(A为最低位,D为最高位);

Qa~Qg:

段码输出脚,高电平有效,最大可输出25mA电流;

BI:

熄灭,接低电平则Qa~Qg全部输出低电平;

LT:

点亮测试,接低电平则Qa~Qg全部输出高电平;

LE:

锁存允许,接高电平锁存,则输出不会随BCD码输入改变

 

2.4LED数码管显示说明

由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。

LED有共阴极和共阳极两种。

如图所示。

二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。

一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。

当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。

为了保护各段LED不被损坏,需外加限流电阻。

LED数码管结构原理图:

gfcomab

符号和引脚

 

共阴极高电平驱动共阳极低电平驱动

LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。

本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。

所谓软件译码,即由单片机软件完成从数字到显示码的轮换。

从LED数码管结构原理图可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。

各段码位与显示段的对应关系如表:

各段码位的对应关系

段码位

D7

D6

D5

D4

D3

D2

D1

D0

显示段

dp

g

f

e

d

c

b

a

当用数据口连接LED数码管a~dp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。

通常数据口的D0位与a段连接,D1位与b段连接,……D7位与dp段连接,如上表所示,LED数码管显示的十六制数和空白字符与P的显示段码。

LED显示段码

字型

共阳极段

共阴极段

字型

共阳极段

共阴极段

0

C0H

3FH

9

90H

6FH

1

F9H

06H

A

88H

77H

2

A4H

5BH

B

83H

7CH

3

B0H

4FH

C

C6H

39H

4

99H

66H

D

A1H

5EH

5

92H

6DH

E

86H

79H

6

82H

7DH

F

84H

71H

7

F8H

07H

空白

FFH

00H

8

80H

7FH

P

8CH

73H

在该系统中,根据由于硬件连线的不同,各段码的关系如下:

段码位

D7

D6

D5

D4

D3

D2

D1

D0

显示段

dp

b

a

f

g

c

d

e

因此在该系统中所出现的LED数码管显示的十六进制数和空白字符与P的显示段码也要根据此修改。

根据AT89C2051单片机灌电流能力强,拉电流能力弱的特点,选用共阳数码管。

将AT89C2051的P1.0~P1.7分别与共阳数码管的a~g及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符。

例如:

当P0口输出的段码为11000000,数码管显示的字符为0。

数码管显示器有两种工作方式,即静态显示方式和动态扫描显示方式。

为节省端口及降低功耗,本系统采用动态扫描显示方式。

动态扫描显示方式需要解决多位LED数码管的“段控”和“位控”问题,本电路的通过P1口实现:

而每一位的公共端,即LED数码管的“位控”,则由P3口控制。

这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。

在这一瞬时,只有这一位在显示,其他几位则暗。

在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开头”状态。

2.5硬件电路

单片机的P3.3引脚接外部的脉冲源,通过内部的定时器控制计算脉冲个数,这与单片机的晶振频率有关。

通过2片CD4511芯片输出2个4位BCD码,再输出到LED数码管显示。

其具体的系统电路图参见图3所示。

 

图3系统电路图

 

第3节系统的软件设计

本系统的软件设计主要是通过定时器计脉冲个数,然后显示在LED数码管上。

3.1系统主程序设计

通过外部脉冲输入到P3.3口。

当引脚上出现高电平时,定时器T1即开始对12分频时钟周期计数,直到引脚变低电平为止,然后读出T1计数器的值并显示。

 

图4脉冲源

假设我们使用的脉冲源如图4所示。

3.2系统源程序设计

ORG0000H

AJMPSTART

ORG1000H

START:

MOVTMOD,#90H;对定时器初始化

MOVTL1,#00H

MOVTH1,#00H

WAIT1:

JBP3.3,WAIT1;等待变低

SETBTR1;启动T1计数

WAIT2:

JNBP3.3,WAIT2;等待升高

WAIT3:

JBP3.3,WAIT3;等待变低

CLRTR1;停止T1计数

MOVA,TL1;读出TL1的计数值

CLRC

SUBBA,#30H

SWAPA

MOV40H,A;暂存A的内容

MOVA,TH1

CLR

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1