- 註冊時間
- 2012-8-11
- 最後登錄
- 2020-11-29
- 主題
- 查看
- 積分
- 12
- 閱讀權限
- 20
- 文章
- 77
- 相冊
- 0
- 日誌
- 0
狀態︰
離線
|
http://wenku.baidu.com/view/f721bb6925c52cc58bd6be59.html
我是用這個教學去小修改
數字編是是沒有錯
但是在動態掃描時就出現字型不完整和閃爍的問題
七段顯示器接330R
#include<reg51.h>//文件包含
#define uchar unsigned char
sbit led1=P2^1;//第一只的控制線
sbit led2=P2^0;//第二只的控制線
sbit led3=P2^2;//第三只的控制線
sbit led4=P2^3;//第三只的控制線
sbit K0=P1^0;
#define dig1 led1=0;led2=1;led3=1;led4=1;//只點亮第一只
#define dig2 led1=1;led2=0;led3=1;led4=1;//只點亮第二只
#define dig3 led1=1;led2=1;led3=0;led4=1;//只點亮第三只
#define dig4 led1=1;led2=1;led3=1;led4=0;//只點亮第三只
#define show P0//P0 7段顯示
uchar number[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//數碼0~9
uchar one;//個位
uchar ten;//十位
uchar mutipel;//倍數
uchar count;//點數
void delay_ms(unsigned int time)//延1毫秒程序,n是形式參數
{
unsigned int i,j;
for(i=time;i>0;i--)//i不??1,一直到i>0?件不成立?止
for(j=112;j>0;j--)//j不??1,一直到j>0?件不成立?止
{;}
}
void T0_init(void)
{
TMOD=0x01;//??工作方式1
TL0=0x66;//每6ms中?一次
TH0=0xea;
TF0=0;//中??志位清零
ET0=1;//允?定?器0中?
EA=1;//允??中?
TR0=1;//??定?器
}
void main(void)
{
uchar i,j,k,l;
T0_init();//定?器0初始化
i=0;//控制個位數碼
j=0;//控制十位數碼
k=0;//控制 倍數
l=0;//控制 點數
one=number[0];//上??三位都?示?000
ten=number[0];
mutipel=number[0];
count=number[0];
while(1)
{
if(K0==0)//判?是否有按?被按下
{
delay_ms(50);//延?消抖
if(K0==0)//确?有按?被按下
{
while(K0==0);//等待按?松?
i++;//個位?增
one=number;//?示個位
if(i==10)//假如個位?10立即向十位?1
{
i=0;//個位再?0?始?增
j++;//十位?增
one=number;//?示個位
ten=number[j];//?示十位
if(j==10)//假如十位?10立即向百位?1
{
j=0;//十位再?0?始?增
ten=number[j];//?示十位
k++;//百位?增
mutipel=number[k];//?示百位
if(k==10)//????999?立即??000?新?始?增
{
i=0;//三位都?示?000
j=0;
k=0;
l=0;
one=number[0];
ten=number[0];
mutipel=number[0];
count=number[0];
}
}
}
}
}
}
}
void time_display(void) interrupt 1
{
static uchar show_bit=1;
TL0=0x66;//定?器?初始
TH0=0xea;
switch(show_bit)
{
case 1:
{
dig1 //只點亮第一只
show=mutipel; //百位
show_bit=2;//下次?中?程序點亮十位
break;
}
case 2:
{
dig2 //只點亮第二只
show=ten; //十位
show_bit=3;//下次?中?程序點亮百位
break;
}
case 3:
{
dig3//只點亮第三只
show=one; //個位
show_bit=4;//下次?中?程序點亮個位
break;
}
case 4:
{
dig4//只點亮第4只
show=count; //個位
show_bit=1;//下次?中?程序點亮個位
break;
}
}
}
|
|