您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序
-1-单片机原理与应用课程设计学院名称:班级:姓名:学号:指导老师:JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY-2-基于单片机(AT89C51)的频率计设计1.3技术指标设计要求的技术指标有:①输入脉冲幅度:0-5v②周期量测量范围:0.1ms—50ms③测量精度±1%④显示方式:四位数字显示ORG0000H;程序复位入口地址AJMPMAINORG001BH;计时器T1的中断入口AJMPPTF0;跳转到中断程序中ORG0033H;主程序入口地址MAIN:MOVSP,#60HMOVTH1,#0FAHMOVTL1,#60H;定时4mSSETBEA;开放CPU中断SETBET1;开放定时器中断MOVTH0,#00HMOVTL0,#00H;给计数器T0赋初值0MOVTMOD,#15H;计时器T1工作在方式1定时模式,计数器T0工作在方式1计数模式MOV30H,#0FAH;循环250次,共定时1SMOV40H,#0;用于判断显示数码管哪一位SETBTR0;启动计数器0SETBTR1;启动定时器1LOOP1:ACALLZHUANH;将二进制数转换为压缩BCD码ACALLCHAIF;将压缩BCD码转换为非压缩BCD码AJMPLOOP1;循环处理计数器T0采集得到的数据PTF0:MOVTH1,#0F0HMOVTL1,#60H;给定时器T1重新赋值INC40H;数码管判断位加1MOVA,50HCJNEA,#00H,DAY;判断50H单元是否为零,若为0继续往下执行,若不为0,则跳转到子程序DAY中MOVA,40H;每4ms显示一位,从最高位开始,到最低位时,返回高位CJNEA,#1,LOP1ACALLQIANWAJMPTIAOLOP1:CJNEA,#2,LOP2ACALLBAIWAJMPTIAOLOP2:CJNEA,#3,LOP3ACALLSHIWAJMPTIAOLOP3:ACALLGEWMOV40H,#0-3-AJMPTIAODAY:MOVA,40HCJNEA,#1,LP1ACALLQIANW1AJMPTIAOLP1:CJNEA,#2,LP2ACALLBAIW1AJMPTIAOLP2:CJNEA,#3,LP3ACALLSHIW1AJMPTIAOLP3:ACALLGEW1MOV40H,#0TIAO:DJNZ30H,PTFR;判断是否到1SMOV20H,TH0MOV21H,TL0;将计数器T0中的数转移到20H,21H中MOVTH0,#0MOVTL0,#0;将计数器T0重新赋0MOV30H,#0FAHPTFR:RETIZHUANH:MOVR2,20H;将计数得到的值存入R2和R3中MOVR3,21HCLRAMOVR4,A;将R4、R5、R6清零MOVR5,AMOVR6,AMOVR7,#16LOOP:CLRC;将16位二进制数逐位左移一位,移得的数据放入进位C中MOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVA,R6;(R4R5R6)+(R4R5R6)+C=(R4R5R6)*2+CADDCA,R6DAAMOVR6,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,ADJNZR7,LOOPRETCHAIF:MOVA,R5;将压缩BCD码R4R5R6转换为非压缩BCD码,从高到低依次放于50H、51H、-4-52H、53H、54HANLA,#0F0HSWAPAMOV52H,AMOVA,R5ANLA,#0FHMOV51H,AMOVA,R6ANLA,#0F0HSWAPAMOV53H,AMOVA,R6ANLA,#0FHMOV54H,AMOV50H,R4RETQIANW:MOVA,52H;频率不超过10KHZ时,以HZ为单位,四位显示,最高位为千位,以此类推MOVDPTR,#TAB;千位上显示51H单元中的内容MOVCA,@A+DPTRMOVP0,AMOVP2,#0F7HRETBAIW:MOVA,51H;百位上显示52H单元中的内容MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,AMOVP2,#0FBHRETSHIW:MOVA,53H;十位上显示53H单元中的内容MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,AMOVP2,#0FDHRETGEW:MOVA,54H;个位上显示54H单元中的内容MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,AMOVP2,#0FEHRETQIANW1:MOVA,50H;频率大于10KHZ时,小数点放千位,以KHZ为单位,省去个位,以四位显示MOVDPTR,#TAB;千位上显示50H单元中的内容MOVCA,@A+DPTRMOVP0,AMOVP2,#0F7HRET-5-BAIW1:MOVA,52H;百位上显示51H单元中的内容和显示小数点MOVDPTR,#TAB1MOVCA,@A+DPTRMOVP0,AMOVP2,#0FBHRETSHIW1:MOVA,51H;十位上显示52H单元中的内容MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,AMOVP2,#0FDHRETGEW1:MOVA,53H;个位上显示53H单元中的内容MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,AMOVP2,#0FEHRETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHTAB1:DB0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFHNOPEND基于单片机的数字钟设计1.3技术指标设计要求的技术指标有:①输入脉冲幅度:0-5v②周期量测量范围:0.1ms—50ms③测量精度±1%④显示方式:四位数字显示ORG0000HAJMPMAINORG000BHAJMPPTF0ORG0033HTAB:DB7EH,48H,3DH,6DH,4BH,67H,77H,4CH,7FH,6FH;不带小数点TAB1:DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;带小数点-6-TAB2:DB01H,02H,04H,08H,10H,20H,40H,80H,00H;自检a--hPTF0:PUSHPSW;保护现场PSW,ACC进栈PUSHACC;选工作寄存器1区MOVTH0,#0ECH;T0初始化MOVTL0,#78HDJNZ36H,PTFORMOV36H,#92;判断中断次数计数单元减1是否为0XRL33H,#0FFHDJNZ37H,PTFOR;中断次数计数单元36H,37HMOV37H,#2MOVA,32H;秒单元32H加1ADDA,#1DAA;十进制调整MOV32H,ACJNEA,#60H,PTFOR;判断单元是否计数到60MOV32H,#0MOVA,31H;分单元31H加1ADDA,#1DAAMOV31H,ACJNEA,#60H,PTFORMOV31H,#0MOV32H,#0MOVA,30H;时单元30H加1ADDA,#1DAAMOV30H,ACJNEA,#24H,PTFOR;判断计数单元是否到24MOV30H,#0MOV31H,#0MOV32H,#0PTFOR:POPACC;恢复现场,ACC,PSW退栈POPPSWRETIMAIN:MOVP2,#0FH;数码管自检MOVDPTR,#TAB2SS:MOVR2,#00HSST:MOVA,R2MOVCA,@A+DPTRJZSS-7-MOVP0,AINCR2ACALLDEL3MOVA,P0CJNEA,#80H,SSTMOV30H,#00H;状态数初始化MOV31H,#00HMOV32H,#00HMOV33H,#00HMOV36H,#92MOV37H,#2MOVSP,#0EFH;栈指针初始化MOVTH0,#0ECHMOVTL0,#78HMOVTMOD,#1MOVIP,#2MOVIE,#82H;中断初始化SETBTR0;允许T0计数LOOP:ACALLLOP0JBP1.0,XX;校时按键按下但未松开(低电平)转移到校时模块ACALLJS1XX:JBP1.1,YY;校分按键按下但未松开(低电平)转移到校分模块ACALLJF1ACALLLOP0YY:AJMPLOOPJS1:LCALLDELJS2:JBP1.0,JS3;校时按键松开(高电平)校时ACALLLOP0AJMPJS2JS3:MOVA,30HADDA,#1DAAMOV30H,ACJNEA,#24H,RT;校时到24时,采用24进制计时MOV30H,#0JF1:LCALLDELJF2:JBP1.1,JF3;校分按键松开(高电平)校分ACALLLOP0AJMPJF2JF3:MOVA,31HADDA,#1DAAMOV31H,ACJNEA,#60H,RT;分为60进制计时-8-MOV31H,#0MOVA,30HINCA,MOV30H,A;分校时到60时,时自加一RT:RETLOP0:MOVR6,33HCJNER6,#00H,ZZ;保证秒的闪烁,采用小数点的闪烁MOVDPTR,#TAB1LJMPLOP1ZZ:MOVDPTR,#TABLOP1:MOVA,31HANLA,#0FH;利用与0F从中取出分个位,显示分个位MOVCA,@A+DPTRMOVP0,AMOVP2,#0FFHMOVP2,#0EFH;保证数码管的显示不变,原理来源于任务5ACALLDELMOVA,31HANLA,#0F0H;利用与F0相与取出分十位,显示分十位SWAPA;交换高低半字节MOVCA,@A+DPTRMOVP0,AMOVP2,#0FFHMOVP2,#0DFHACALLDELMOVA,30H;时个位的显示(原理与分同)ANLA,#00FHMOVCA,@A+DPTRMOVP0,AMOVP2,#0FFHMOVP2,#0BFHACALLDELMOVA,30H;时十位的显示ANLA,#0F0HSWAPAMOVCA,@A+DPTRMOVP0,AMOVP2,#0FFHMOVP2,#7FHACALLDELRETDEL:MOVR4,#20;延时程序1DEL1:MOVR5,#40DEL2:DJNZR5,DEL2DJNZR4,DEL1RETDEL3:MOVR7,#0FFH;延时程序2-9-DEL4:MOVR6,#0FFHDEL5:DJNZR6,DEL5DJNZR7,DEL4RETEND1基于单片机的窄带脉冲宽度检测第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单片机的简化版。内部1INT2自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与IntelMCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器
本文标题:基于单片机的窄带脉冲宽度检测数字钟频率计电子琴程序
链接地址:https://www.777doc.com/doc-69469 .html