《单片机原理及应用》-第五章_第1页
《单片机原理及应用》-第五章_第2页
《单片机原理及应用》-第五章_第3页
《单片机原理及应用》-第五章_第4页
《单片机原理及应用》-第五章_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一节数码管显示原理在单片机系统中.通常用LED数码显示器来显示各种数字或符号.由于它具有显示清晰、亮度高、使用电压低、寿命长的特点.因此使用非常广泛.图5.1所示是让右起第一位数码管亮.并显示数字4.接下来要学习的就是实现图片上的效果.该怎么做呢?在这里.要思考两个问题.第一个问题.怎么实现哪一位数码管亮.哪一位不亮?第二个问题.显示数字是怎么来的?要解决这两个问题.我们首先要了解数码管的内部结构.如图5.2所示.下一页返回第一节数码管显示原理

数码管内部是由7个条形的发光二极管和右下方一个圆形的发光二极管组成.这样一共有8段线.根据显示需要.有选择性地让对应的发光二极管发光.就能实现不同的显示效果.例如让控制数码管的b段、c段、f段、g段的发光二极管亮.就能实现显示数字4的目的.那这些数码管底层的发光二极管又是怎么接线的呢?如图5.3和图5.4所示.数码管按内部连接方式分为共阴极数码管和共阳极数码管两种.上一页下一页返回第一节数码管显示原理

以上已经解决了显示的数字怎么来的这个问题.接下来看一下四位数码管内部的接线图.以共阴极的为例.如图5.5所示.从图中可以看出.4个数码管的段选端口是并联在一起的.而公共端COM口是独立的.也就是说.公共端口的电平信号起到决定性的作用.决定到底是哪位数码管亮.因此公共端也被称为位选端口.讲到这里.最开始提出的两个问题也就解释清楚了.数码管哪一位显示.是由公共端口.也叫作位选端口来决定的.数码管显示什么内容.是由段选端口决定的.四位共阳极数码管内部结构图如图5.6所示.上一页返回第二节数码管静态显示程序设计及实践本节主要学习通过程序编程.在开发板上实现如图5.1所示的效果.首先.先来了解一下开发板上数码管的原理图.以及和单片机的接线情况.如图5.7所示.开发板上一共有8个数码管.段选端口接在单片机的P0口.位选端口接在单片机的P2口.并且位选端口和单片机端口之间接了三极管.在这里.主要用到了三极管的开关特性.由于图上三极管的发射极接电源.基极接单片机的P2口.要想三极管导通.对应的数码管工作.P2口需要赋值低电平信号.关于三极管的相关知识.同学们可以通过章节后面的知识点回顾内容进行复习.下一页返回第二节数码管静态显示程序设计及实践下面通过编写程序实现图5.1的效果.例题1:实现在右起第一位数码管上显示数字4.程序代码如下:#include<reg52.h>//加载头文件/∗∗∗∗∗∗∗∗∗∗∗∗∗主函数∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/voidmain(){while(1){上一页下一页返回第二节数码管静态显示程序设计及实践P2=0xfe.//数码管位选.选中第一位数码管P0=0x99.//数码管段选.显示数字4}}将以上程序写入工程中.编译生成“.hex”文件.烧入单片机.就能够实现如图5.1所示的效果.通过以上讲解和练习.相信读者已经掌握该如何让不同位数码管显示.并显示不一样的数字或字符.上一页返回第三节数码管动态显示程序设计及实践在上一节中不管是例题还是练习题中.我们强调显示的效果都是在同一位或者多位数码管上.相同时间显示同样的数字或字符.但是日常生活中.更多见的是如图5.8所示的显示效果.这种显示.称为动态显示.动态显示是一种最常见的多位显示方法.应用非常广泛.根据前两节的内容我们知道.数码管显示主要分为两步.第一步确定哪一位亮.第二步确定显示的内容.同样.对于图5.8的显示效果也可以进行如上两个问题的分析.首先.应该位选选中右起第一位数码管.发送段选显示2的数.但是在这有一个问题.明明看到的12是一个静止的数字.为什么我们会把这种不同位显示不同数字或字符的形式称为动态显示呢?在这一节中.将给大家进行分析讲解.下一页返回

第三节数码管动态显示程序设计及实践

对于图5.8的显示效果可以进行如上两个问题的分析.首先.应该位选选中右起第一位数码管.发送段选显示2的数据.然后.再位选选中右起第二位数码管.发送段选显示1的数据.程序如下所示:#include<reg52.h>//加载头文件/∗∗∗∗∗∗∗∗∗∗∗∗∗∗1ms延时子函数∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/voidDelayMs(unsignedintn){unsignedchari.上一页下一页返回第三节数码管动态显示程序设计及实践while(n--){for(i=0.i<113.i++).}}/∗∗∗∗∗∗∗∗∗∗∗∗∗主函数∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/voidmain(){上一页下一页返回第三节数码管动态显示程序设计及实践while(1){P2=0xfe.//数码管位选.选中右起第一位P0=0xa4.//数码管段选.显示数字2DelayMs(1).P2=0xfd.//数码管位选.选中右起第二位P0=0xf9.//数码管段选.显示数字1DelayMs(1).}}上一页下一页返回第三节数码管动态显示程序设计及实践通过第四章LED灯的闪烁我们知道.赋值语句执行所花费的时间在10μs左右.为了能够让肉眼观察到灯亮灭的变化.需要加入一定的延时时间.以便肉眼能够观察到.而上面显示程序中每位数码管显示数字所花费的时间是1ms.观察到的实验现象是静止的12.如果我们将这个时间逐渐加长.分别500ms、1s来看一下数码管显示的变化.从实验现象能够发现.1和2的显示不再是一个静止的状态.而变成动态切换的状态.这也是我们把这种显示称为动态显示的根本原因.所谓动态扫描.是指采用分时的方法.轮流控制各个显示器的位选端口.使各个数码管轮流点亮.在轮流点亮扫描过程中.上一页下一页返回第三节数码管动态显示程序设计及实践每位数码管的点亮时间是极为短暂的(约1ms).但由于人的视觉暂留现象及发光二极管的余辉效应.尽管实际上各位显示器并非同时点亮.但只要扫描的速度足够快.给人的印象就是一组稳定的显示数据.不会有闪烁感.接下来.我们实现在八位数码管上从左至右显示数字1、2、3、4、5、6、7、8.同样.我们推荐大家使用数组调用的方式来实现.并给出部分程序代码.上一页下一页返回第三节数码管动态显示程序设计及实践#include<reg52.h>//加载头文件unsignedcharcodeSegCode[]={0xf9.0xa4.0xb0.0x99.0x92.0x82.0xf8.0x80}.//段选数据共阳极1~8unsignedcharcodeBitCode[]={}.//数码管8位位选数据上一页下一页返回第三节数码管动态显示程序设计及实践/∗∗∗∗∗∗∗∗∗∗∗∗∗1ms延时子函数∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/voidDelayMs(unsignedintn){unsignedchari.while(n--){for(i=0.i<113.i++).}上一页下一页返回第三节数码管动态显示程序设计及实践}/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗//∗∗∗∗∗∗∗∗∗∗∗∗∗主函数∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/voidmain(){unsignedcharsum.while(1){上一页下一页返回第三节数码管动态显示程序设计及实践P2=BitCode[].//数码管位选.选中右起第一位P0=SegCode[].//数码管段选.显示数字2DelayMs(1).}}/∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论