当前位置:文档之家› 基于单片机的计数器设计

基于单片机的计数器设计

湖南科技大学单片机课程设计题目基于单片机的计数器设计姓名李建雄学院机电工程学院专业测控技术与仪器学号09030303指导教师戴巨川成绩- - 总结资料二〇一二年六月二日摘要本设计是根据我们所学习的单片机课程,按照课程要求进行的课程检验。

单片机技术是一个不可或缺的技术,尤其是对于我们测控技术与仪器专业来说它是我们必须要掌握的技能之一,使我们未来工作和生活的根本。

现在的社会是一个信息科技高速发展的社会,也是一个电子技术和微机计算机迅速发展的时代,单片机的档次和水平在不断的提高,其应用的领域和X围也越来越广,成为现代电子系统中最重要的智能化核心部分。

随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的X围越来越广,随之而来的竞争也越来越激烈。

过硬的技术也成为众多生产厂商竞争的焦点之一。

厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。

现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。

计数器的应用X围也遍布印刷、纺织、印染、针织、电缆、电讯、军工、轻工、机械、开关、断路器、矿山、实行多班制的纺织行业的织布机、织带机、制线、- - 总结资料制带、造纸、制革、薄膜、高压开关电器产品、试验设备,印刷设备、短路器、医疗、纺织、机械、仓库和码头的货运、行人及车辆过往的数量计数、冶金、食品、国防、包装、配料、石油、化工、发电、机床、仪表、自动化控制等行业。

目录第一章系统的功能要求 (4)1.1系统设计的要求及主要内容应解决的问题 (4)第二章方案论证 (4)2.1设计方案选择 (4)2.2设计原理 (5)第三章系统硬件电路设计 (6)3.1最小系统设计 (6)3.2原理图 (9)- - 总结资料3.3电路仿真 (10)第四章系统程序设计 (12)4.1系统软件设计流程图 (12)4.2程序 (13)第五章调试及性能分析 (14)5.1系统性能测试与功能说明 (14)5.2软件调试问题及解决 (14)参考文献 (14)附件计数器程序 (15)实物电路图 (16)第一章系统的功能要求要求:1.整个系统有较强的抗干扰能力.2.计数X围:00~99.3.将计数值准确显示出来.应解决问题:- - 总结资料基于单片机构成的产品自动计数器研究的主要内容包括:如果构成检测电路、MCS-51单片机用何种方式对外部计数脉冲进行计数显示控制、LED显示驱动模块的选择、MCS-51单片机的扩展。

在这个设计中主要需要解决的问题便是如何提高MCS-51单片机的抗干扰能力以及稳定性。

第二章方案论证2.1设计方案选择方案一:采用多种数字逻辑电路来实现逻辑控制、主门、门控、计数单元的设计要求,这样设计的电路整体比较复杂,而且不宜完成发挥部分的功能要求。

所以方案一不采用。

方案二:可以采用FPGA来实现逻辑控制、主门、门控、计数单元的设计要求,并且设计方便,但由于对FPGA的技术原理掌握不够熟练,所以放弃方案二。

方案三:系统采用8051为核心的单片机控制系统,实现原理图中的逻辑控制、主门、门控、计数的设计要求单片机计数器的方式控制寄存器TMOD中的GATE位=1时,可以很方便的进行INT0- - 总结资料引脚的外部输入信号的时间间隔测量。

且单片机的控制电路很容易实现扩展,比如语音模块、测温I2C模块、时钟模块、A/D模块等。

故采用方案三。

2.2 设计原理利用AT89S52单片机来制作一个手动计数器,在AT89S52单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示;硬件电路图如图2-1所示:图2-1 硬件电路图系统板上硬件连线- - 总结资料1)把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

2)把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;3)把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上.第三章系统硬件电路的设计3.1 最小系统设计- - 总结资料图3-1 单片机最小系统的结构图单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍一下每一个组成部分。

1.电源引脚Vcc 40 电源端;GND 20 接地端;工作电压为5V- - 总结资料2.外接晶体引脚3.复位RST 9在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。

复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。

当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。

复位是由外部的复位电路来实现的。

片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的接上拉电阻。

在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据- - 总结资料总线,访问期间内部的上拉电阻起作用。

(2) P1端口[P1.0-P1.7] P1是一个带有内部上拉电阻的8位双向I/0端口。

输出时可驱动4个TTL。

端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

对内部Flash程序存储器编程时,接收低8位地址信息。

(3) P2端口[P2.0-P2.7] P2是一个带有内部上拉电阻的8位双向I/0端口。

输出时可驱动4个TTL。

端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

对内部Flash程序存储器编程时,接收高8位地址和控制信息。

在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。

而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。

(4)P3端口[P3.0-P3.7]P2是一个带有内部上拉电阻的8位双向端口。

输出时可驱动4个TTL。

端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

3.2 原理图图3-4 电路总图数码管的介绍在本任务中用两位数码管显示当前数值的十,个,采用动态显示方式。

两位数码管的相同段并联在一起,由一个6位I/O(P1口)输出字形码控制显示某一字形,每个数码管的公共端由另外一个I/O口(P0口)输出的字位码控制,即数码管显示的字形是由单片机I/O口输出的字形码确定,而哪个数码管点亮是由单片机I/O 口输出的字位码确定的。

数码管有共阴极和共阳极两种,对于共阳数码管,字形驱动输出0有效,字位驱动输出1有效;而对于共阴数码管则相反,即:字形驱动输出1有效,字位驱动输出0有效数码管使用条件:a、使用电压段:根据发光颜色决定;b、小数点:根据发光颜色决定c、使用电流:静态:总电流80mA(每段10mA);动态:平均电流4-5mA 峰值电流100mA数码管使用注意事项说明:(1)数码管表面不要用手触摸,不要用手去弄引角;(2)焊接温度:260度;焊接时间:1s(3)表面有保护膜的产品,可以在使用前撕下来。

3.3 电路仿真在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

用PROTUES软件,画出M=99的计数器仿真图,得到的图如下所示图3-11 仿真图第四章软件设计程序设计内容(1.单片机对按键的识别的过程处理(2.单片机对正确识别的按键进行计数,计数满时,又从零开始计数;(3.单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。

如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。

(4.通过查表方式,分别显示出个位和十位数字。

4.1 系统软件设计流程图主程序先是开始,然后赋初值,本设计采用的是动态显示,所以在赋玩初值后显示程序不断被调用。

开始初始化计数----(按键)显示图4-1主程序流程图4.2 程序#include <AT89S52.H>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char Count;void delay10ms(void){unsigned char i,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}void main(void){Count=0;P0=table[Count/10];P2=table[Count%10];while(1){if(P3_7==0){delay10ms();if(P3_7==0){Count++;if(Count==100){Count=0;}P0=table[Count/10];P2=table[Count%10];while(P3_7==0);}}}}第五章调试及性能分析5.1 系统性能测试与功能说明走时:默认为计数状态,显示两位数,时间会按实际时间以秒为最小单位变化,从00—99的计数,按复位键,重00开始,重新计数。

5.2 软件调试问题及解决软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。

软件调试可以采取离线调试和在线调试两种方式。

前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。

本次课题,keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。

仿真部分采用protus 6 professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。

首先打开protus 6 professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wave6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。

参考文献[1] 《单片机系统设计及工程应用》雷思孝等XX电子科技大学[2] 《电路基础》吴大正XX电子科技大学[3] 《c++程序与设计语言》揣锦华等XX电子科技大学[4] 《MCS—51/96系列单片机原理及应用》孙涵芳航空航天大学计数器程序#include <AT89S52.H>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char Count;void delay10ms(void){unsigned char i,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}void main(void){Count=0;P0=table[Count/10];P2=table[Count%10];while(1){if(P3_7==0){delay10ms();if(P3_7==0){Count++;if(Count==100){Count=0;}P0=table[Count/10];P2=table[Count%10];while(P3_7==0);- - -.. - - 总结资料} } } }实物电路图- - -..- - 总结资料。

相关主题