本帖最后由 siemenswjl 于 2013-1-6 16:26 编辑
1、编译成功且下载,运行发现:从0-E正常,最后一位显示b,而不是F
2、我把for(num=0;num<16;num++)改成for(num=15;num>0;num--)想实现从F-0的显示。编译成功且下载之后测试没有什么变化还是从0-E-b
郁闷,请教天祥的人得到回复是下载他们程序看看。我在教材的配套光盘中也没有找到对应的程序。所以只好来到万能的坛来找帮助
#include<stc89.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //申明U1锁存器的锁存端
sbit wela=P2^7; //申明U2锁存器的锁存端
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms(uint);
#define Self_Define_ISP_Download_Command 0x5D
sfr IAP_CONTR=0xE7;
void Init_Com(void)
{
TMOD = 0x20;
SM0=0;
SM1=1;
REN=1;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
EA=1;
ES=1;
}
void main()
{
Init_Com();
wela=1; //打开U2锁存器
P0=0xc0; //送入位选信号
wela=0; //关闭U2锁存器
while(1)
{
for(num=0;num<16;num++) //16个数循环显示
{
dula=1; //打开U1锁存器
P0=table[num];
dula=0;
delayms(500);
}
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void UART_Interrupt_Receive(void) interrupt 4
{
unsigned char k=0;
unsigned int a,b;
if(RI==1)
{
RI=0;
k=SBUF;
if(k==Self_Define_ISP_Download_Command)
{
for(a=1000;a>0;a--)
for(b=100;b>0;b--); //延时约1S
IAP_CONTR = 0x60;
}
}
else
{
TI=0;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
数码管编码.jpg (135.62 KB, 下载次数: 0)
下载附件
数码管编码
2013-1-6 16:32 上传
这个大概是原因,当num=0时,你再num--,这个数就不对了
#include<stc89.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //申明U1锁存器的锁存端
sbit wela=P2^7; //申明U2锁存器的锁存端
uchar num;
int num1;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms(uint);
#define Self_Define_ISP_Download_Command 0x5D
sfr IAP_CONTR=0xE7;
void Init_Com(void)
{
TMOD = 0x20;
SM0=0;
SM1=1;
REN=1;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
EA=1;
ES=1;
}
void main()
{
Init_Com();
wela=1; //打开U2锁存器,意味着先可以控制那位数码管显示
P0=0xc0; //因为为共阴数码管,所以位选0为接通,0xc0=11000000
wela=0; //关闭U2锁存器
while(1)
{
for(num1=15;num1>=0;num1--) //16个数循环显示
{
dula=1; //打开U1锁存器
P0=table[num1];
dula=0;
delayms(2000);
}
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void UART_Interrupt_Receive(void) interrupt 4
{
unsigned char k=0;
unsigned int a,b;
if(RI==1)
{
RI=0;
k=SBUF;
if(k==Self_Define_ISP_Download_Command)
{
for(a=1000;a>0;a--)
for(b=100;b>0;b--); //延时约1S
IAP_CONTR = 0x60;
}
}
else
{
TI=0;
}
一周热门 更多>