七段数码管的使用.docx
上传人:王子****青蛙 上传时间:2024-09-13 格式:DOCX 页数:9 大小:1.3MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

七段数码管的使用.docx

七段数码管的使用.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

5.1数码管简介同学们!相信你的流水灯也做的不错了吧,现在能玩出几种花样了?但是工程师们设计这么一个单片机,并不是只为了让它做流水灯的,那样也太浪费点了吧...^_^。数码管的一种是半导体发光器件,7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛,数码管可以分为一位和多位它的外观如图5-1所示。图5-15.2数码管的显示原理数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,使用时com接正5伏电源,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,使用时com要将其接地。而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),8个LED的分布方式如图5-2所示。图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。那么,实际的数码管的引脚是怎样排列的呢?对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为1~10脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。注意,3脚和8脚是连通的,这两个都是公共脚。它对应的引脚分布为图5-3所示。图5-2图5-3数码管的8段,对应一个字节的8位,a对应最低位,dp(小数点)对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。如图5-4所示。图5-4那么,一位数码管要显示字符0~F,则对应的编码如表2所示。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。5.3一位数码管的显示请实现:让一位数码管依次显示字符0~F,每个字符显示1秒,如此反复。一般情况下,为了计算或取码的方便,我们把a-dp依次接到单片机某个口上的Px.0--Px.7上。x表示0,1,2,3其中的一个。这样我们只要给某个口,赋一个值,则相应的LED段就被点亮,但是在硬件连接上要注意了:单片机可能不能直接驱动LED,所以我们可以通过控制三级管的导通或截止,或者使用共阳极数码管(以灌电流的方式)、或者使用锁存器来驱动。来控制LED的亮与灭!硬件的选择与仿真电路的设计1.打开Proteus,选择“File/NewDesign”菜单选项,新建一个“设计项目”。并将项目保存为“SEG7_1”。2.选择“P”按钮或菜单“Library/PickDivice/Symbol…P”菜单,从“元件库”中选取元件。依次添加其他元件。其名称和位置见下表。元件名称CategorySub-CategoryResultsAT89C52MicroprocessorICs8051FamilyAT89C527SEG-MPX1-CA(注1)Optoelectronics7-SegmentDisplays7SEG-MPX1-CARX8(注2)ResistorsResistorPacksRX8RESPACK-8(注3)ResistorsResistorPacksRESPACK-8注1:7SEG表示7段数码管(Proteus还提供了14段和16段数码管)MPX1表示1位(Proteus还提供了2位、4位、6位和8位数码管)CA表示共阳极(CC表示共阴极)注2:RX8表示电阻排,它实际相当于8个电阻并排摆放在一个容器内。在这里是作为限流电阻来使用的。注3:RESPACK-8表示电阻排,它实际相当于8个电阻并排摆放在一个容器内,但是这8个电阻的一段是连接在一起作为公共端的。在这里是作为P0口的上拉电阻来使用的。依次从备选元件库中摆放器件,连线,画出仿真电路图,如图5-5所示。图5-5注意:在Proteus中,实际上,51单片机是不需要晶振、复位电路和电源就可以仿真的,因此,为了方便我们教学,以后,我们将不再画上述51的外围电路。程序的设计1.新建一个keil项目,并命名为“SEG7_1”并添加一个名为“”的源代码文件,然后键入如下代码。如所示。#include<reg52.h>#defineSegPortP0//定义数码管连接的端口#defineucharunsignedchar//宏定义将unsignedchar替换为较为简单的uchar写法#defineuintunsignedint//宏