可能有人说,现在都进入LCD时代了,这个东西没有用了,其实这个东西还是很有用的,我们总不能总是使用别人写好的源代码吧。就算是自已写源代码,这个真值表最少你也要写一回,以方便以后调用。
七段码真值表:
数字 共阳 共阴 对应的数据位
0 0x0C 0X3F dp g f e d c b a
1 0XF9 0X06 7 6 5 4 3 2 1 0
2 0XA4 0X5B
3 0XB0 0X4F
4 0X99 0X66
5 0X92 0X6D
6 0X82 0X7D
7 0XD8 0X27
8 0X80 0X7F
9 0X90 0X6F
下边是我自已写的一个七段码显示程序和效果图:
#include <REG52.H>
#include <intrins.h>
#define uchar unsigned char
//
#define da
sbit n1 =P2^0;
sbit n2 =P2^1;
sbit n3 =P2^2;
sbit n4 =P2^3;
sbit n5 =P2^4;
sbit n6 =P2^5;
uchar x[6]={0xff,0xff,0xff,0xff,0xff,0xff,};
void delay(uchar n) //n=1时延时1ms
{
uchar a,b;
for(b=n;b>0;b--)
for(a=47;a>0;a--);
/*
uchar a,b,c;
for(c=n;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
*/
}
uchar number_(uchar x) //数码管显示值 x=0~10
{
uchar co
return num[x];
}
void nu_display(uchar a,uchar n) // a=0~5,n=0~10
{
switch(a){
case 0:x[0]=n;
case 1:x[1]=n;
case 2:x[2]=n;
case 3:x[3]=n;
case 4:x[4]=n;
default:x[5]=n;
}
}
void display7(uchar n) //显示100MS时间
{
unsigned char a,b,c;
for(c=n;c>0;c--)
for(b=19;b>0;b--)
for(a=130;a>0;a--){
P0=number_(x[0]);
n1=0;
delay(1);
n1=1;
P0=number_(x[1]);
n2=0;
delay(1);
n2=1;
P0=number_(x[2]);
n3=0;
delay(1);
n3=1;
P0=number_(x[3]);
n4=0;
delay(1);
n4=1;
P0=number_(x[4]);
n5=0;
delay(1);
n5=1;
P0=number_(x[5]);
n6=0;
delay(1);
n6=1;
}
}
void main()
{
for(;;){
nu_display(0,1);
nu_display(1,2);
nu_display(2,3);
nu_display(3,4);
nu_display(4,5);
nu_display(5,6);
display7(1); //显示500MS
nu_display(5,5);
display7(1); //显示500MS
nu_display(5,4);
display7(1); //显示500MS
}
}
欢迎大家去我的淘宝店看看:http://fengmm521.taobao.com
为了更好的支持我,如果要转载请注明出处:fengmm521.blog.163.com
欢迎大家去我的个人网站和论坛留下脚印,网站:http://www.k557.com,论坛:http://www.k557.com/bbs