为什么数码管没有显示
源码如下:#include "reg51.h"
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char dat; //定义全局变量
//串行口初始化程序
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
//LED数码管延时程序
void delay(void)
{
int k;
for(k=0;k<600;k++);
}
//串行中断服务程序
serial()interrupt 4 using 1
{
if(RI)
RI=0;
dat=SBUF;
}
//LED数码管显示程序
void display(int k)
{
P2=0xfe; //位选
P0=tab; //显示千位数字
delay(); //延时
P2=0xfd; //位选
P0=tab; //显示百位数字
delay(); //延时
P2=0xfb; //位选
P0=tab; //显示十位数字
delay(); //延时
P2=0xf7; //位选
P0=tab; //显示个位数字
delay(); //延时
//P2=0xff; //位选
}
//主程序
void main()
{
P2=0xff;
P0=0xff;
P1=0xff;
EA=1;
ES=1;
Init_Com();
while(1)
{
display(dat); //显示数据
}
}
为什么数码管没有显示????附上电路图,请大家帮忙看下,谢谢!!! 你把电路图截图片发上来吧,大家看着都方便 附上调试截图,请参照,谢谢!!! 本帖最后由 wangqh1983 于 2013-1-20 10:39 编辑
01#include "reg51.h"
02
03 unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
04
05 unsigned char dat; //定义全局变量
06
07 //串行口初始化程序
08 void Init_Com(void)
09 {
10 TMOD = 0x20;
11 PCON = 0x00;
12 SCON = 0x50;
13 TH1 = 0xFd;
14 TL1 = 0xFd;
15 TR1 = 1;
16 }
17
18 //LED数码管延时程序
19 void delay(void)
20 {
21 int k;
22 for (k=0;k<600;k++);
23 }
24
25 //串行中断服务程序
26 serial()interrupt 4 using 1
27 {
28 if (RI)
29 RI = 0;
30 dat = SBUF;
31 }
32
33 //LED数码管显示程序
34 void display(int k)
35 {
36 P2 = 0x01; //位选
37 P0 = tab; //显示千位数字
38 delay(); //延时
39 P0=0xff; //消隐
40 P2=0x02; //位选
41 P0 = tab; //显示百位数字
42 delay(); //延时
43 P0=0xff;
44 P2 = 0x04; //位选
45 P0 = tab; //显示十位数字
46 delay(); //延时
47 P0=0xff;
48 P2 = 0x08; //位选
49 P0 = tab; //显示个位数字
50 delay(); //延时
51 P0=0xff;
52 }
53
54 //主程序
55 void main(void)
56 {
57 P2=0xff;
58 P0=0xff;
59 P1=0xff;
60 EA=1;
61 ES=1;
62 Init_Com();
63 while (1)
64 {
65 display(dat); //显示数据
66 }
67 }
盲扫了一下了,估计问题在这个:
//串行中断服务程序
serial()interrupt 4 using 1
{
if(RI)
RI=0;
dat=SBUF;
}
就是要MAX232呀,不要我也知道行,谢谢大家帮忙顶{:handshake:}{:handshake:} 看看呢........................
页:
[1]