单片机实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理与应用课程设计
题目:计数器数码管综合设计
专业班级:电自化1201班
学号:********
姓名:***
2016年11月12日
目录
1.摘要及关键词 (1)
1.1主要问题 (1)
1.2 解决思路 (1)
2.简介 (2)
2.1 系统特性及其功能 (2)
2.2 设计的具体方案 (2)
3.系统设计 (2)
3.1 硬件电路 (3)
3.1.1使用的主要器件 (4)
3.1.2主要部分器件说明 (5)
3.2 软件设计 (7)
3.2.1 程序流程图 (7)
3.2.2 程序设计内容 (9)
3.2.3 实验程序及部分注释 (9)
4.实验结果 (14)
5.实习总结 (15)
参考文献 (15)
附录 (15)
1.摘要及关键词
1.1主要解决问题
随着当今社会的快速发展,大部分的自动化生产过程中的流水线的自动装箱或自动装配都需要用的自动计数,而怎样对流水线上的产品需要进行实时的、有效率的、精确地自动技术成为广泛关注的问题。传统的机械式或电子式计数器比较复杂,元器件数量较多,故障率较高,维修比较困难,而且设置不方便,功能不易更改,适用范围较窄。
1.2解决思路
基于单片机的自动计数器已经成为比较成熟的产品,应用于各种需要计数的场合,具有计数准确,操作方便,显示准确计数功能形式多样化的特点,被广泛的应用,能够实现数据统计的搜集,有效的节省劳动力高质量地完成任务。基于单片机构成的产品自动计数器研究的主要内容包括:如果构成检测电路、STC89C51单片机用何种方式对外部计数脉冲进行计数显示控制、LED显示驱动模块的选择、STC89C51单片机的扩展。在这个设计中主要需要解决的问题便是如何提高单片机的抗干扰能力以及稳定性。
本文以单片机为核心的技术设计,阐述了系统的原理、硬件电路和软件设计相关内容。
关键词:单片机,数码管,计数显示,流水线
2.简介
2.1系统特性及其功能
本次实习设计以STC89C51系列单片机开发板为基础开发环境,编制程序实现饮料包装流水线从0~36的饮料瓶数字实时显示。设计具体思路是:综合单片机开发板按键模块和led数码管模块,使用按键的闭合模拟流水线上检测装置检测到的计数脉冲,送入STC89C51单片机控制单元,通过对单片机编程实现计数然后由led数码管显示,实现实时计数功能。可以实现的功能有:
(1)按下启动键,可以记录显示流水线启动开始后的物件数量,计数值到36自动清零,再次按下启动重新计数;
(2)在计数过程中按下清零键可以清零并停止计数,再次按下开始重新计数;
(3)计数过程中按下暂停键暂停计数并显示当前数值,按下启动键继续计数;若按下请零键可以清零并停止计数;
2.2设计方案选择
基于STC89C51单片机的流水线计数器设计可以采用以下方案:
2.2.1单片机计数器的方式控制寄存器TMOD中的GATE位=1时,可以很方便的进行INT0引脚的外部输入信号的时间间隔测量。通过p1.7口模拟外部计数脉冲,通过外部连线将P1.7与P
3.4相连接进行计数功能,这种方法使用单片机内部的计数器,具有使用方便,计数准确等特点。但是由于我粗心大意没有读请题目要求,没有使用计数器,所以本次设计使用下面一种方案:
2.2.2使用C语言编写软件程序,嵌套循环实现计数功能,实验结果也可以符合设计的要求。
3.系统设计
3.1硬件电路
3.1.1使用的主要器件有以下部分:
(1)单片机电路;(2)复位电路;(3)usb供电电路;(4)单片机复位电路;(5)led显示、机器驱动电路;(6)矩阵按键电路;
图1、STC89C51
图2、电源电路和复位电路
图3、跳线帽
图4、译码器和数码管电路3.1.2 主要部分器件说明
(1)LED数码管
图
5、数码管示意图
我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。
共阳极的数码管0~f的段编码是这样的:unsigned char code table[]={ //共阳极0~f数码管编码
0xc0,0xf9,0xa4,0xb0,//0~3
0x99,0x92,0x82,0xf8,//4~7
0x80,0x90,0x88,0x83,//8~b
0xc6,0xa1,0x86,0x8e //c~f
};
图6、数码管(共阴、共阳极)
(2)4x4矩阵键盘模块
确定矩阵式键盘上任何一个键被按下通常采用行扫描法。行扫描法又称为逐行查询法它是一种最常用的多按键识别方法。因此,我们就以行扫描法为例介绍矩阵式键盘的工作原理。
首先,不断循环地给低四位独立的低电平,然后判断键盘中有无键按下。将低位中其中一列线(P1.0~P1.3中其中一列)置低电平然后检测行线的状态(高4位,即P1.4~P1.7,由于线与关系,只要与低电平列线接通,即跳变成低电平),只要有一行的电平为低就延时一段时间以消除抖动,然后再次判断,假如依然为低电平,则表示键盘中真的有键被按下而且闭合的键位于低电平的4个按键之中任其一,若所有行线均为高电平则表示键盘中无键按下。再其次,判断闭合键所在的具体位置。在确认有键按下后 ,即可进入确定具体闭合键的过程。其方法是: 依次将列线置为低电平,即在置某一根列线为低电平时,其它列线为高电平。同时再逐行检测各行线的电平状态;若某行为低,则该行线与置为低电平的列线交叉处的按键就是闭合的按键。下面图7是4*4矩阵式按键硬件接法。