标题:
为什么下面的单片机代码运行出来,P0口输出的数据并不是0,1,2,3…这样循序增加的?
[打印本页]
作者:
1793332955
时间:
2021-3-18 18:45
标题:
为什么下面的单片机代码运行出来,P0口输出的数据并不是0,1,2,3…这样循序增加的?
问:为什么下面的代码运行出来 p0口输出的数据并不是0,1,2,3……这样循序增加的,而且我分明限制了c不会大于9,但是最后数码管显示出来的还有超过9的数,就像是A、E什么的。
单片机源程序如下:
#include <reg51.h>
void csh()
{
SM0=0;
SM1=1;
REN=1;
TI=0;
RI=0;
PCON=0;
TH1=0xF3;
TL1=0XF3;
TMOD=0X20;
EA=1;
ET1=0;
ES=1;
TR1=1;
}
void main()
{
int i,j;
char c=0;
csh();
while(1)
{
ES=0;
TI=0;
P0=c;
SBUF=c;
while(!TI)
;
TI=0;
ES=1;
for(j=0;j<50;j++)
for(i=0;i<5000;i++)
;
c++;
if (c>9)
c=0;
}
}
作者:
mengzhixinheng
时间:
2021-3-19 01:52
显示程序在哪里?难道数码管是静态显示!
作者:
1793332955
时间:
2021-3-19 06:46
动态,数码管连在p0口
作者:
1793332955
时间:
2021-3-19 07:25
mengzhixinheng 发表于 2021-3-19 01:52
显示程序在哪里?难道数码管是静态显示!
动态;
p0口连接数码管。
作者:
张天师
时间:
2021-3-19 08:43
看楼主程序应该是P0直接驱动共阴数码管。而数码管是要用显示代码来转换显示,如
/********************共阴数码管代码*******************/
u8 code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; //0--F
要显示就写为:
P0=tab[c];
作者:
mengzhixinheng
时间:
2021-3-19 09:35
1793332955 发表于 2021-3-19 07:25
动态;
p0口连接数码管。
段数据,位数据都不见
作者:
wulin
时间:
2021-3-19 13:39
P0=c;只能输出二进制数,并不能通过数码管显示数字而是乱码,需要把数转换为笔段码。
#include <reg51.h>
unsigned char code table[]={//共阴数码管段码"0~f-."
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x40,0x80};
void csh()
{
SM0=0;
SM1=1;
// REN=1;
// TI=0;
// RI=0;
// PCON=0;
TH1=0xF3;
TL1=0XF3;
TMOD=0X20;
// EA=1;
// ET1=0;
// ES=1;
TR1=1;
}
void main()
{
int i,j;
char c=0;
csh();
while(1)
{
// ES=0;
// TI=0;
// P0=c;
P0=table[c];//在此插入数码管段码
SBUF=c;
while(!TI);
TI=0;
// ES=1;
for(j=0;j<50;j++)
for(i=0;i<5000;i++);
c++;
if (c>9)
c=0;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1