51单片机的初了解(12)
Posted zzz2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机的初了解(12)相关的知识,希望对你有一定的参考价值。
动态数码管:段码一侧仍接一个单片机端口,COM(共级)接单片机一个IO口,多个联排数码管的COM共同接一个IO端口。
静态和动态数码管的本质区别:静态数码管只给段码数码管就一定工作(只取决于段码端),动态数码管需段码值及COM端配合。
动态数码管工作:
(1)某一特定时间段,只有一个数码管工作,其他不工作。
(2)COM端选定哪一数码管工作,段码端输出显示的数字段码;延时;COM端选下一个,段码端改输这要显示的数字段码;延时;......
(3)快速切换工作的数码管,人看到的是所有数码管都亮(亮度比静态驱动低)。
(4)动态数码管利用人眼的视觉暂留。
动态数码管的段码表显示:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
#include <reg51.h>
void delay(void)
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++);
}
unsigned char duanma[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char weima[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main (void)
{
while(1)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
P2=weima[i]; //依次选择数码管1-8
P0=duanma[i+1]; //依次显示1-8
delay ();
P0=0x00; //消隐
}
}
}
38译码器:由3个二进制进行编码的硬件设备。
作用:用3个IO口来控制8路输出
驱动数码管意义:用3路输入来控制数码管的8路位码,省5个IO口。
连接方式:J15和J16连接;ABC分别接P1.0、P1.1、P1.2三个。
#include <reg51.h>
void delay(void)
{
unsigned char i;
for(i=0;i<200;i++);
}
unsigned char duanma[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char weima[8]={0,1,2,3,4,5,6,7};
void main (void)
{
while(1)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
P1=weima[i]; //依次选择数码管1-8
P0=duanma[i+3]; //依次显示1-8
delay ();
P0=0x00; //消隐
}
}
}
以上是关于51单片机的初了解(12)的主要内容,如果未能解决你的问题,请参考以下文章