《基于单片机的窄带脉冲宽度检测_单片机课程设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的窄带脉冲宽度检测_单片机课程设计.docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于单片机的窄带脉冲宽度检测_单片机课程设计 目录 第1节引言 (1) 1.1 系统概述 (1) 1.2 设计任务 (1) 第2节系统硬件设计 (2) 2.1系统的硬件构成及功能 (2) 2.2AT89C2051单片机及其引脚说明 (2) 2.3CD4511芯片说明 (3) 2.4LED数码管显示说明 (4) 2.5硬件电路 (6) 第3节系统软件设计 (7) 3.1系统的主程序设计 (7) 3.2系统的源程序设计 (7) 第4节系统调试与测试结果分析 (9) 第5节结束语 (10) 参考文献 (11) 基于单片机的窄带脉冲宽度检测 第1节 引 言 一般单片机能够检测较宽的脉冲,但很难检测窄带
2、脉冲,该系统只要是用于检测窄带脉冲,并显示其宽度的功能。 11 系统概述 本系统使用AT89C2051单片机,利用定时器T1门控GATE 的功能,测量引脚 上 出现的正脉冲宽度,并用LED 数码管显示出来。 12 设计任务 设计要完成的任务有硬件设计和软件设计。硬件方面,AT89C2051单片机的P3.3口测试外部脉冲。P1口可以接LED 数码管。软件方面,利用单片机的定时完成正脉冲宽度的读取,然后用到P1口使LED 数码管显示。 1IN T 第2节系统硬件设计 硬件电路关系到软件的编程,也要有利用系统的实际应用。 21 系统的硬件构成及功能 本系统有以下几个部件组成:单片机AT89C2051
3、,CD4511芯片电源,LED数码管等。 单片机即单片微型计算机,是集CPU,ROM,RAM,I/O口,内部总线及中断系统于一体的微控制器,它体积小,重量轻,功能强,广泛应用于智能产品及工业自动控制上,而51单片机是各单片机最为典型和最有代表性的一种。 电源提供单片机正常工作,单片机只需+5V的电压,可以通过220V的市电通过变压、整流稳压来得到,维持系统的正常工作。 LED数码管用于显示所检测外部输入脉冲的宽度,直观 22 AT89C2051单片机及其引脚说明 AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能
4、COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。 AT89C2051单片机是一个有20个引脚的芯片,引脚配置如图1所示。与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。 图1 AT89C2051引脚配置 AT89C2051芯片的20个引脚功能为: VCC 电
5、源电压。 GND 接地。 RST 复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。 XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2 来自反向振荡放大器的输出。 P1口 8位双向I/O口。引脚P1.2P1.7提供内部上拉,当作为输入并被外部 下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0和P1.1需要外部 上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输 出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1”后,可 用作输入。在闪速编程与编程校验期间,P1口也可接收编码数
6、据。 P3口引脚P3.0P3.5与P3.7为7个带内部上拉的双向I/0引脚。P3.6在内部已 与片内比较器输出相连,不能作为通用I/O引脚访问。P3口的输出缓冲器能接收20mA 的灌电流;P3口写入“1”后,内部上拉,可用输入。P3口也可用作特殊功能口,其 功能见表1。P3口同时也可为闪速存储器编程和编程校验接收控制信号。 23 CD4511芯片说明 CD4511是BCD锁存段码译码共阴LED驱动集成电路,其引脚如图2所示,各引脚功能如下: 图2 CD4511各引脚配置 :接正电源; V CC :接地; V SS A, B, C, D:BCD码输入脚(A为最低位,D为最高位); QaQg:段码
7、输出脚,高电平有效,最大可输出25mA电流; BI:熄灭,接低电平则QaQg全部输出低电平; LT:点亮测试,接低电平则QaQg全部输出高电平; LE:锁存允许,接高电平锁存,则输出不会随BCD码输入改变 24 LED数码管显示说明 由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。 LED有共阴极和共阳极两种。如图所示。 二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压
8、时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻。 LED数码管结构原理图: 符号和引脚 共阴极高电平驱动共阳极低电平驱动 LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在 f e d dp c b a g e d com c dp g f com a b 于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的轮换。从LED数码管结构原理图可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,
9、因此提供给LED数码管的显示段码为1个字节。各段码位与显示段的对应关系如表: 各段码位的对应关系 段码位D7 D6 D5 D4 D3 D2 D1 D0 显示段dp g f e d c b a 当用数据口连接LED数码管adp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。通常数据口的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 B
10、0H 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.0P1.7分别与共
11、阳数码管的ag及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符。例如:当P0口输出的段码为11000000,数码管显示的字符为0。 数码管显示器有两种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需要解决多位LED 数码管的“段控”和“位控”问题,本电路的通过P1口实现:而每一位的公共端,即LED数码管的“位控”,则由P3口控制。这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其
12、中 的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过PNP 三极管的导通与截止来控制,即三极管处于“开头”状态。 25 硬件电路 单片机的P3.3引脚接外部的脉冲源,通过内部的定时器控制计算脉冲个数,这与单片机的晶振频率有关。通过2片CD4511芯片输出2个4位BCD 码,再输出到LED 数码管显示。其具体的系统电路图参见图3所示。 图3 系统电路图 第3节 系统的软件设计 AT89C2051 RST VCC P1.7 P1.6 P1.5 P1.4 P3.3
13、P1.3 P1.2 P1.1 P1.0 GND +5V D V cc LT Q a C CD4511 . B . A . V ss L E Q g +5V D V cc LT Q a C CD4511 . B . A . V ss L E Q g +5V 本系统的软件设计主要是通过定时器计脉冲个数,然后显示在LED 数码管上。 31 系统主程序设计 通过外部脉冲输入到P3.3口。当 引脚上出现高电平时,定时器T1即开始对12分频时钟周期计数,直到 引脚变低电平为止,然后读出T1计数器的值并显示。 图4 脉冲源 假设我们使用的脉冲源如图4所示。 32 系统源程序设计 ORG 0000H AJMP
14、 START ORG 1000H START:MOV TMOD,#90H ;对定时器初始化 MOV TL1,#00H MOV TH1,#00H WAIT1:JB P3.3,WAIT1 ;等待 变低 SETB TR1 ;启动T1计数 WAIT2:JNB P3.3,WAIT2 ;等待 升高 WAIT3:JB P3.3,WAIT3 ;等待 变低 CLR TR1 ;停止T1计数 MOV A ,TL1 ;读出TL1的计数值 CLR C SUBB A ,#30H SWAP A MOV 40H ,A ;暂存A 的内容 MOV A ,TH1 1IN T 1IN T 1IN T 1IN T 1IN T CLR
15、C SUBB A,#30H ANL A,40H MOV DPTR,#TAB MOV A,A+DPTR MOV P1,A ;输出数字 MOV R7, #200 DLY1: MOV R6, #123 ;延时程序 DLY2: DJNZ R6, DLY2 DLY2: NOP DJNZ R7,DLY1 TAB:DB C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H END 第4节系统调试与测试结果分析略 第4节结束语 初学单片机,对所学知识掌握不够全面,这次的系统设计有点粗糙,正所谓困难重重,刚好有个电子钟的课程设计,就按照它的设计过程的思想作为参考,本想把所
16、学知识全应用起来,做一个带创新的思路的系统设计,但是还是没有头绪。结合老师上课所讲的,就决定做这个窄带脉冲宽度检测,因为这个对我来说比较容易理解,设计思路比较清晰。 虽然这个设计没有经过实物器件的调试,但是我体会到了,单片机设计的整个过程。它需要系统整体设计,硬件设计,软件设计,和调试测试等等步骤。软件设计要和硬件设计相结合,他们是有相互联系的。在本系统中,难免有些错误,希望老师批评指正。 单片机是一门实用型课程,学好这单片机对今后的工作是很有帮助的,虽然课程已经学完,但不能把所学知识给忘了,而应该继续学习,更深层次的学习,在此感谢在学习中给予帮助的老师和同学,把单片机学的更好,把创新应用在实践中。