如何成为过硬的硬件工程师-之数码管

时间:2014-05-03 13:46:55 发布者:sreen_114 本站编辑:越南语翻译


这节课我们来介绍缬方焱蜱一下,数码管的原理和使用方法,因为至今位置数码管在一些简单的应用场合或者辔亿呶邂说在低成本的电路开发中依然再使用,数码管有8段和16段显示的,我们今天再这里就介绍一下8段的数码管,大家知道8段的原理,自然16段也就明白了。

首先我们来看一下数码管的外形: 看上去就是一个8字,工作的时候你控制的小条就会点亮,这个小白条内部其实就是一个发光二极管,当二极管导通的时候就会发光,所以从外观看上去它变成了一个长条型的LED。我们再来看一下这个数码管内部的构造原理:

数码管的每个管脚被赋予了对应的英文字母,a,b,c,d,e,f,g,DP是小数点,在用到显示小数时它才有用,比如说我们要显示一个数字1,那我们就将b,c,点亮就OK了,我们来建立一个字形表吧!

序号 数字 需要点亮的LED

1 1 b,c

2 2 a,b,g,e,d

3 3 a,b,c,d,g

4 4 b,c,g,f

5 5 a,f,g,c,d

6 6 a,f,e,d,c,g

7 7 a,b,c

8 8 a,b,c,d,e,f,g

9 9 a,b,c,d,f,g

0 0 a,b,c,d,e,f

根据数字字形,我们列出了一个字形表。

好的准备工作已基本就位了,我们开始做实验吧!

1、首先我们打来Proteus电路仿真软件,按下图添加如下原件:

2、绘制如下电路图:

3、电路已经绘制好了,下面我们要显示数字从0-9,让数字自动循环起来:我们打开Keil uv4软件,输入如下代码:

#include <reg51.h>

#define uint8_t unsigned char

#define uint16_t unsigned int

sbit a = P2^0;// 定义数码端口

sbit b = P2^1;

sbit c = P2^2;

sbit d = P2^3;

sbit e = P2^4;

sbit f = P2^5;

sbit g = P2^6;

sbit dp = P2^7;

// 建立直接用IO口组建的字形码值表(大家不明白可以看下面的表格)

uint8_t idata SEGTable[10]={0x3f,0x06,0x5b,0x54f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void SEGDisplay(void); // 函数声明

void SEGDelayTime(uint16_t Time);

void SEGDelayTime(uint16_t Time) // LED闪烁间隔时间

{

uint16_t i = 0;

uint16_t j = 0;

for(i=0;i<Time;i++)

{

for(j=0;j<255;j++)

{

;;

}

}

}

void SEGDisplay(void) // 循环显示0-9数字

{

uint8_t i = 0;

for(i=0;i<10;i++)

{

P2=SEGTable[i];

SEGDelayTime(300);

P2 = 0x00;

}

}

void main(void) // 数码管显示主函数

{

while(1)

{

SEGDisplay();

}

}

4、我们回到Proteus软件,双击CPU将刚刚生成的HEX文件装入CPU中,如何生成HEX文件在第一节如何成为过硬的硬件工程师-之初识单片机中有详细介绍,这里我们不再重复说明了,大家可以参考第一节来做。装好HEX文件后,我们运行来看一下效果:

大家看看 数码管的显示是不是按照我们的预想在从0-9循环显示呢!怎么想感觉挺累的吧,呵呵 其实干什么都不容易,学习亦是如此,要认真学才能有真材实料的功夫,跟住我把,下节课我们再见~~~~~~~~~~~~~~~~~~~~



Copyright ©2016 zgdxyuan.com越南语翻译 本站所有内容源自互联网,有事请联系站长邮箱:abc998666@126.com百度sitemap 好搜sitemap 搜狗sitemap 神马sitemap googlesitemap