4位数码管显示遇到些问题,菜鸟求大神帮忙!

2019-03-24 18:12发布

#include<AT89X52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code SMG[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};/*要显示的0~9数字*/
uchar code CTR[]={0xF8,0xF9,0xFA,0xFB};/*控制显示哪位数码管*/
uchar Data1[4]={0x00,0x00,0x00,0x00};/*定义一个四位的数组,初始为0*/
uint i;
void delay(uint t)
{
uint k;
for(k=0;k<=t;k++);
}
void Change(uint i)
{
Data1[3]=i/1000;
Data1[2]=i%1000/100;
Data1[1]=i%1000%100/10;
Data1[0]=i%1000%100%10;
}
void Display(void)
{
uchar k;
for(k=0;k<=3;k++)
{
  P2=0;
  P0=Data1[k];
  P2=CTR[k];
  delay(50);
}
}
void main()
{
i=6329;
Change(i);
while(1)
{
  Display();
}
}
为什么变量跟踪要显示的数组Data1的值没问题,但实际数码管显示的却是乱码??
求指教!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
Darcy0
2019-03-25 11:39
sint27 发表于 2014-9-26 08:43
问题出在 P0=Data1[k];
你要传给IO口的是字库,而不是计算出来各个位的数值

嗯,谢谢你!这个问题已经解决了!

一周热门 更多>