本帖最后由 稻香 于 2012-6-20 12:39 编辑
【长春-稻香 (891405379) 10:28:09
这是我的硬件连线
这是我的程序
/*------对应硬件:TX-1C单片机开发板------*/
/*------------11.0592MHz晶振-------------*/
/*--------------数码管动态显示---------------*/
/*------------2012年06月19日-------------*/
#include<reg52.h> //52系列单片机头文件
#define uint unsigned int
#define uchar unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table0[]={ //code相当于C语言的const就是常量数组
0x3f,0x06,0x5b,0x4f, //如果下面的程序试图修改table[]数组的值,编译器将会报错。
0x66,0x6d,0x7d,0x07, //段码数组
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71 };
uchar code table1[]={ //位码数组
0xdf,0xef,0xf7,0xfb, //dfH=1101 1111
0xfd,0xfe };
void delayms(uint xms);
void main()
{
while(1)
{
dula=1;
P0=table0[1];
dula=0;
P0=0xff; //P0=0xff,送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来的段选数据通过位选锁存器造成混乱
P0=table1[0]; //送位选数据
wela=0;
delayms(500); //500
dula=1;
P0=table0[2];
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来的段选数据通过位选锁存器造成混乱
P0=table1[1]; //送位选数据
wela=0;
delayms(500);
dula=1;
P0=table0[3];
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来的段选数据通过位选锁存器造成混乱
P0=table1[2]; //送位选数据
wela=0;
delayms(500);
dula=1;
P0=table0[4];
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来的段选数据通过位选锁存器造成混乱
P0=table1[3]; //送位选数据
wela=0;
delayms(500);
dula=1;
P0=table0[5];
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来的段选数据通过位选锁存器造成混乱
P0=table1[4]; //送位选数据
wela=0;
delayms(500);
dula=1;
P0=table0[6];
dula=0;
P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存时
wela=1; //原来的段选数据通过位选锁存器造成混乱
P0=table1[5]; //送位选数据
wela=0;
delayms(500);
}
}
void delayms(uint xms)
{
uint i,j;
{
for(i=xms;i>0;i--) //i=xms即延时大约x毫秒
for(j=110;j>0;j--); //j=110
}
}
这是我的程序
这是单步调试的时候的现象
【长春-稻香 (891405379) 10:29:17
但是怎么调试的时候 单步到这里就是这样的啊??
这是数码管动态显示
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
应该就是这样,全速运行的时候,不该亮的数码管某一段LED会微亮
一周热门 更多>