**嵌入式静态显示与动态显示**
首先LED显示器工作方式有两种:静态显示方式和动态显示方式。下面细说两种不同的显示。
1.静态显示:
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
以七段码为例:
你需要8根线去控制它,你若想让它对应的地方亮,就给它对应的8位2进制代码为1,然后输入,就可以命它发亮而且是一直发亮,但是这是仅仅一个七段码就需要8根线来控制,而一个板子可以使用的接口是有限的,故就用到了动态显示。
小显示
2.动态显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
这上面就是说其实每次仅仅只有一个亮,但是每个灯亮的时间很短,变化很快,你就看到了都在亮。
如下图,这是我做的小时钟。
这是运行的的时候,看起来是都亮的。
但是一静止,就只有一个亮了。
而且可以一说的是我就同样一个版子,加上两个锁存器,控制了8个七段码合成的屏幕。
代码如下
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit du =P2^6;
sbit we =P2^7;
void delay(uint z) //时间函数dealy(1000)=1秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
unsigned char leddata[]={ //用一数组存更好变化
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
void main()
{
int i=0,j=0,h=0,l=0,t=0;
while(1)
{
we = 1; //每次前面都要段选与位选为0
P1 = 0xff;
we = 0;
du = 1;
P1 = 0x00;
du = 0;
du = 1;
P1 = leddata[i]; //个位秒
du = 0;
we = 1;
P1 = 0x7f;
we = 0;
delay(5);
we = 1;
P1 = 0xff;
we = 0;
du = 1;
P1 = 0x00;
du = 0;
du = 1;
P1 = leddata[j]; //十位秒
du = 0;
we = 1;
P1 = 0xbf;
we = 0;
delay(5);
we = 1;
P1 = 0xff;
we = 0;
du = 1;
P1 = 0x00;
du = 0;
du = 1;
P1 = leddata[h]; //各位分
du = 0;
we = 1;
P1 = 0xef;
we = 0;
delay(5);
we = 1;
P1 = 0xff;
we = 0;
du = 1;
P1 = 0x00;
du = 0;
du = 1;
P1 = leddata[l]; //十位分,下面小时没有变化,没有写出来,可以同上。
du = 0;
we = 1;
P1 = 0xf7;
we = 0;
delay(5);
we = 1;
P1 = 0xff;
we = 0;
du = 1;
P1 = 0x00;
du = 0;
du = 1;
P1 = leddata[1];
du = 0;
we = 1;
P1 = 0xfe;
we = 0;
delay(5);
we = 1;
P1 = 0xff;
we = 0;
du = 1;
P1 = 0x00;
du = 0;
du = 1;
P1 = leddata[2];
du = 0;
we = 1;
P1 = 0xfd;
we = 0;
delay(5);
t++;
if(t%34==0) //控制每秒变化
{
i++;
if(i==9)
{
i=0;
j++;
if(j==6)
{
j=0;
h++;
if(h==10)
{
h=0;
l++;
}
}
}
}
}
}
DELETEFROMTablesWHEREIDNOTIN(SELECTMin(ID)FROMTablesGROUPBYName) Min的话保...
4月11日20:30~22:00通过腾讯会议进行了第二次在线学习讨论我把学习笔记整理一下...
Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特...
工具:Eclipse,Oracle,smartupload.jar;语言:jsp,Java;数据存储:Oracle。...
错误描述: 在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报...
上篇文章给大家介绍了 Java正则表达式匹配,替换,查找,切割的方法 ,接下来,...
复制代码 代码如下: % URL="http://news.163.com/special/00011K6L/rss_newstop....
项目中用到的一些特殊字符和图标 html代码 XML/HTML Code 复制内容到剪贴板 div ...
正则忽略大小写 – RegexOptions.IgnoreCase 例如: 复制代码 代码如下: Str = R...
本文实例讲述了Laravel框架源码解析之反射的使用。分享给大家供大家参考,具体如...