电路图 很简单
数码管是共阳的。
程序代码: 也很简单 ,偏偏数码管就是不会亮。引脚显示全是高电平。。
PS:用共阴极数码管能 点亮并稳定动态显示。将下面的位选 段选编码换成共阴的 再把消影的0x00变成0xff就是共阴数码管的代码。这个是成功的。
偏偏换成 共阳的数码管就行不通。。求大神解释 指点!
还有就是 我把中断换成延时程序,共阳数码管也是可以稳定显示的.....
自己对以下代码测试的结果就是只要把 display()放到 中断里面 数码管就完全无法显示,将display()放到中断外虽然不能成功显示,但还是”会闪“
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar count,dunum=0,wenum=0;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code tabledu[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar code tablewe[]=
{0x01,0x02,0x04,0x08,
0x10,0x20};
void display();
void main()
{
EA=1;
ET0=1;
TMOD=0x10;
TH1=(65536-500)/256;
TL1=(65536-500)%256;
TR0=1;
while(1)
{
if(count==1)
{
count=0;
if(dunum==6)
dunum=0;
if(wenum==6)
wenum=0;
display();
dunum++;
wenum++;
}
}
}
void tim1() interrupt 3
{
TH1=(65536-500)/256;
TL1=(65536-500)%256;
count++;
}
void display()
{
P0=0x00;
wela=1;
wela=0;
P0=tabledu[dunum];
dula=1;
dula=0;
P0=tablewe[wenum];
wela=1;
wela=0;
}
|