课 程 名 称: 课程设计 题 目: 微机化转速测量系统设计 年级/专业/班: 学 生 姓 名: 学 号:
小 组 成 员:
开 始 时 间: 年 月 日 完 成 时 间: 年 月 日 指 导 教 师:
年 月 日
目 录
单片机课程设计说明书
摘 要 .............................................................. - 2 - 1引 言 .............................................................. - 3 - 2方案设计(或分析) ................................................. - 4 - 2.1总体设计框图 .................................................... - 5 - 2.2单元电路设计 .................................................... - 5 -
2.2.1 数码管显示电路 ............................................. - 5 - 2.2.2主控电路 .................................................... - 6 - 2.2.3 硬件总电路图 ............................................... - 9 - 2.3软件流程图 ..................................................... - 10 -
2.3.1 主程序流程图 .............................................. - 10 - 2.3.2 程序清单 .................................................. - 10 - 3、调试 ............................................................. - 13 - 3.1 硬件调试 ....................................................... - 13 - 3.2 软件调试 ....................................................... - 13 - 3.3 PROTEUS仿真调试 ................................................. - 14 - 致 谢 .............................................................. - 15 - 参考文献 ................................................ 错误!未定义书签。
- 1 -
单片机课程设计说明书
摘 要
本文介绍了一种以单片机内部计数器T0为测频端口的频率计方案,以AT-C51单片机作为主控核心, LED数码显示等较少的辅助硬件电路相结合,利用软件对0-3000HZ频率的方波实现精确测频。本系统具有体积小、硬件少、电路结构简单。 本电路中通过霍尔传感器,把测速机构装上齿轮,然后把霍尔传感器靠近齿轮的边缘,当齿轮在不断转动的时候,齿轮的齿和槽会相续接近霍尔传感器,这样子霍尔传感器就会产生一系列的脉冲,当齿靠近传感器是会持续高电平,当凹槽靠近霍尔传感器是会持续低电平,这样当套在轴上的齿轮在不断转动时就会出现一系列的脉冲波形,把这波形整形后通过整形电路整形后通至单片机的测速口,再换算把脉冲信号转换成转速显示在数码管上面。
关键词:单片机 频率计 C52 数码显示
abstract
This paper introduces a single-chip T0 internal counter for measuring frequency of port frequency meter project, taking the mig-at – C51 microcontroller as the master core, LED digital display such as less auxiliary hardware circuit, combined with using the software of 0-3000HZ frequency square-wave achieve precise measuring frequency. This system has small, simple structure, circuit hardware less.
Keywords: Single-chip microcomputer frequency meter C52 digital display
- 2 -
单片机课程设计说明书
1引 言
近年来随着计算机技术的飞速发展,计算机也正式形成了通用计算机系统和嵌入式计算机系统二个分支。单片机作为最典型的嵌入式系统,由于其微小的体积和极低的成本,广泛应用于家用电器、仪器仪表、工业控制单元以及通信产品中,成为现代电子系统中最重要的智能化工具。同时数模电技术、微电子技术也快速发展使得大量集成芯片出现,从而实现很多简单功能代替了原来的模拟电路。这样利用单片机、集成芯片和电子电路就可以很方便的进行设计,其中最典型、现在应用也很多的就是电子产品的设计。
51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用。51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用是非常重要的。
本次课程设计的内容是使用C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量。
- 3 -
单片机课程设计说明书
2方案设计(或分析)
频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用两种办法,第一种方法是使用单片机自带的计数器对输入脉冲进行计数;第二种方法是单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。第一种方法的好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。这种方法的缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的C52单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一。第二种方法的好处是输入的时钟信号频率可以不受单片机晶振频率的,可以对相对较高频率进行测量,但缺点是成本比第一种方法高,设计出来的系统结构和程序也比较复杂。由于成本有限,本次设计中采用第一种方法,因此输入的时钟信号最高频率不得高于11.0592MHz/24=460.8KHz。对外部脉冲的占空比无特殊要求。
根据频率检测的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,两者均应该工作在中断方式,一个中断用于1s时间的中断处理,一个中断用于对频率脉冲的计数溢出处理,(对另一个计数单元加一),此方法可以弥补计数器最多只能计数65536的不足。
- 4 -
单片机课程设计说明书
2.1总体设计框图
一定频率方波输入 ATC51 控制电路 数码管 显示电路 定时器T0中断控制
图1 总体设计框图
硬件设计涉及的电路有:ATC52控制电路、 LED显示电路、数码管显示电路
2.2单元电路设计
2.2.1 数码管显示电路
- 5 -
单片机课程设计说明书
图2 四位一体数码原理图
如图2为四位一体数码管,每个数码管都有a、b、c、d、e、f、g七个笔划和一个小数点h,这八个联对应二极管阴极,阳极都联在一起(称共阳极)。以四位数码管矩阵为例,四个数码管的a、b、c、d、e、f、g七个笔划和一个小数点h电极分别并联在一起。当A,B,C,D,E,F段低电平,第一位数码管位选也为低电平,其他行列都为高阻态时,第一个数码管的A,B,C,D,E,F段会点亮,人眼看上去就是一个数字“0”。 加上动态扫描方式在1/20秒内四个数码管依次都点亮一次,由于视觉暂留,就会看到每一位的结果,通过这种方式实现人和机器的信息交换。由于本电路只需显示简单一位数字所以不需要动态显示,只需要一位数码管。
2.2.2主控电路
80C51是INTEL公司MCS-51系列单片机中最基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它继承和扩展了MCS-48单片机的体系结构和指令系统。
80C51内置处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,80C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。80C51有PDIP(40pin)和PLCC(44pin)两种封装形式。其引脚图如图3-1所示:
- 6 -
单片机课程设计说明书
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
RST/VPD RXD P3.0 TXD P3.1 INT0 P3.2 INT1 P3.3 T0 P3.4 T1 P3.5 WR P3.6 RD P3.7 XTAL2 XTAL1 VSS VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VPP ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
图3-1 80C51单片机引脚图
80C51系列单片机都是以8031为核心发展起来的,具有和51系列单片机及基本结构和软件特征,其内部结构如图3-2所示:
80C51CPU K总线扩展控制 可编程I/O
图3-2 80C51单片机框图
可编程 串行口 80C51 振荡器及 定时电路 4K字节 ROM 128字节 RAM 2个16位定时器/计数器 - 7 -
单片机课程设计说明书
80C51单片机的引脚功能: 1、主电源引脚Vss和Vcc。 ① Vss接地。
② Vcc正常操作时为+5伏电源。 2、外接晶振引脚XTAL1和XTAL2。
① XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。。
② XTAL2内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。
3、控制或与其它电源复用引脚RST/VPD,ALE/PROG,PSEN和EA/Vpp。 ① RST/VPD 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。
② ALE/PROG 正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE 引脚以不变的频率(振荡器频率的
1)周期性地发出正脉6冲信号。因此,它可用作对外输出的时钟,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE 端可以驱动(吸收或输出电流)八个LSTTL电路。 对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲(PROG功能)。
③ PSEN 外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,PSEN在每个机器周期内两次有效。PSEN同样可以驱动八LSTTL输入。
④ EA/Vpp EA/Vpp为内部程序存储器和外部程序存储器选择端。当EA/Vpp为高电平时,访问内部程序存储器,当EA/Vpp 为低电平时,则访问外部程序存储器。
对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编程电源(Vpp)。 4、输入/输出引脚P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。 ① P0口(P0.0 - P0.7)是一个8位漏极开路型双向I/O口,在访问外部存储器
- 8 -
单片机课程设计说明书
时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。
② P1口(P1.0 - P1.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动(吸收或输出电流)四个LSTTL负载。
③ P2口(P2.0 - P2.7)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。P2口可以驱动(吸收或输出电流)四个LSTTL负载。
④ P3口(P3.0 - P3.7)是一个带有内部提升电阻的8位准双向I/O口。能驱动四个LSTTL负载。且具有第二功能。
在课程设计里用到了T0,T1做定时计数器,显示电路采用分时复用P0口,在设计里面使用的引脚较少,占用的资源也比较少。而且该芯片是以8031为核心,性能价格比高,应用成熟,且对其内部结构较为熟悉,芯片功能够用而且适用,从而选用80C51单片机作为主控芯片。
2.2.3 硬件总电路图
图7 整体电路图
工作原理:当电源接通时,单片机开始运行,首先初始化子程序,然后定时计数器开始计数,一定时间采集一次脉冲的个数,每采集3次取平均值。然后送
- 9 -
单片机课程设计说明书
给数码管显示。
2.3软件流程图
2.3.1 主程序流程图
上电初始化 否 计数器开始测频 是否测量三次 取平均值 数码管显示
图9 主程序流程图
如图刚上电,初始化子程序,计数器开始计数测频,累计三次,把三次测频的值记录下来取平均值,数码管显示所测平均值。
2.3.2 程序清单
#include #define uint unsigned int #define uchar unsigned char unsigned long Tsum; long double Psum,Fresult,Fage; unsigned char testcnt; double temp[3]; sbit w1=P3^7; sbit w2=P3^6; sbit w3=P3^1; sbit w4=P3^0; //按键申明 uchar m,n,keynum,key1num; uint i; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, - 10 - 单片机课程设计说明书 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; // 数码管阿拉伯字母所对的编码 void delay(uint z) //延时子函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void leddisplay(uint n) //{ P1=0xff; P1=~table[n/1000]; w1=1; w2=0; w3=0; w4=0; delay(10); P1=0xff; P1=~(table[n/100%10]); // w1=0; w2=1; w3=0; w4=0; delay(10); P1=0xff; P1=~table[n/10%10]; // w1=0; w2=0; w3=1; w4=0; delay(10); P1=0xff; P1=~table[n%10]; // w1=0; w2=0; w3=0; w4=1; delay(10); } testinit() { TMOD=0X15; 数码管显示子函数 //显示数码管千位 显示数码管百位 显示数码管十位 显示数码管个位 //定时器计数器工作模式设置- 11 - 单片机课程设计说明书 EX1=1; IT1=1; ET1=1; TR0=0; TR1=0; EA=1; } void main() { testinit(); //初始化子程序 while(1) { leddisplay(Fage); //数码管显示程序 delay(10); } } void int1() interrupt 2 { if(testcnt) { TR0=0; TR1=0; Tsum=(TH1<<8)|TH0; //过了一个循环后余下的时间 Tsum=Tsum+65536*testcnt; //时间总长 Psum=(double)(TH0<<8)+(double)TL0; //脉冲数的总和 Fresult=Psum/Tsum*1000000.00; //频率计算结果 temp[i++]=Fresult; //把结果放进数组里 Fresult=0; if(i>2) //有3个采样数值就进行取平均值计算 { for(i=0;i<3;i++) {Fresult=Fresult+temp[i];} Fage=Fresult/3.0; i=0; } } testcnt=0; TH1=0; TL1=0; TH0=0; - 12 - 单片机课程设计说明书 TL0=0; TR1=1; TR0=1; EX1=0; } void t1() interrupt 3 相应一次 { testcnt++; EX1=1; } //定时中断1 每65536个机器周期 3、调试 3.1 硬件调试 硬件调试是一件重要而细微的工作,许多硬件错误往往是在软件调试时被发现的。通常,先排除明显的硬件故障,之后,再和测试软件结合起来调试。硬件调试可分为静态调试和动态调试两步。 静态调试是在用户系统未工作时的一种硬件检测。检测步骤如下: ①目测:检查外部的各种组件或者是电路是否有断点,及焊点是否牢固,是否存在虚焊等现象; ②用万用表测试:先用万用表复核目测中有疑问的焊接点及可能在焊接过程中烧坏的组件,再检测各种电源线与地线之间是否有短路现象; ③加电检测:给板加电,检测所有插座或器件的电源是否符合要求; ④联机检测:要完成对用户系统的调试,需在单片机开发系统环境下进行。 动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该组件无关的 器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关组件的方法,逐层调试下去,就会定位故障组件了。 3.2 软件调试 - 13 - 单片机课程设计说明书 程序调试结果如图3-1: Creating hex file from “蓄电池电压检测系统”表明 .hex文件创建成功。 “蓄电池电压检测系统”- 0 Error(s),0 Warning(s)表明文件编译结果没有错误也没有警告。 图3-1 程序调试结果 3.3 Proteus仿真调试 在Proteus中建立仿真图。结果如图5-2: 图5-2 Proteus仿真图 在Proteus中点击运行,转动波形发生器上面的按钮,使其输出方波,同时调节不同频率的波形,可以在数码管上面看到显示的数字,即为信号发生器的输出频率。其变化结果如图5-2所示。 - 14 - 单片机课程设计说明书 致 谢 本次课程设计有较强的综合性,不仅要求设计者能灵活使用单片机的各种指令,熟练使用单片计计数器余定时器,熟练编写顺序结构程序,循环结构程序以及分支结构程序,还要求对单片机的电路连接结构,对数码管管理芯片有明确清晰的了解与认识,否则在设计的第一步就会遇到障碍。 经过这么久的资料收集与查询,总体构思,对频率计的设计有了一个总体的框架,对程序的流程图也有一个基本的结构,经过两天对程序的编写以及程序的改进,最后终于完成了本次课程设计各项内容。看着自己亲自通过自己的知识和努力设计的频率计,心里是很欣慰的,因为我从这次课程设计不仅仅只是得到了一个自己的产品,还学到了很多,例如面对问题要保持冷静,特别是在程序的编写这一块,要找出程序的错误一定要有一个冷静的头脑,否则很难发现错误甚至是越改越错。另外我还认识到与他人合作的重要性,虚心向别人学习,吸取别人编写程序的一些好的风格与特点再融入到自己的程序中,都是一些不错的方法。 - 15 - 单片机课程设计说明书 参考文献 [1]张毅刚. 新编MCS-51单片机应用设计[M]. 哈尔滨:哈尔滨工业大学出版社.2004 [2]倪志莲,张怡典. 单片机应用技术[M].北京:北京理工大学出版社.2007 [3]张靖武.单片机系统的protues设计与仿真[M].北京:电子工业出版社.2007 [4]Anolog Device Corp,ADC0809 Databok,2005. [5] 李广弟.单片机基础[M].北京航空航天大学出版社,2001.7. [6] 鲍宏亚.MCS-51 系列单片机应用系统[M中].国宇航出版社,2005.9. [7] 吴金戌.8051 单片机实践与应用[M].清华大学出版社,2005.8. [8] 李正浩,姜宝钧.51单片机在LED数码管显示中的应用[J].实验科学与技术, 2006.12. - 16 - 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务