下面程序哪里出错了,51单片机控制数码管秒钟。我用P1口输出到8个共阳数码管,P0的5、6、7接选择器控制位
答案:3 悬赏:70 手机版
解决时间 2021-02-18 01:51
- 提问者网友:蓝莓格格巫
- 2021-02-17 22:18
0x7d;
delay(50);中断程序
{
TMOD=0x01; d1=0,0x07;//
d0=0;d2=0,0x7f;/,0x5b;数码管0到9的显示
void delay(unsigned int x) /,停止;
}
if(stop==0) /停止
{
TR0=0;
delay(50);
}
}
void init() /
temp=0;
sbit start=P0^0;
delay(50);延时程序
{ while(x--),shi,aa=0;
}
void main(void)
{
init();
TR0=0;
ET0=1;
sbit d2=P0^7;
#define uint unsigned int ;10;
TR0=1; d1=1;显示程序
{
if(temp>
TL0=(65536-50000)%256,0x4f,0x66,0x06;
}
if(start==0) / d1=0;
sbit stop=P0^1;
d0=1;
uchar bai;
ge=temp%10;
unsigned char code tab[]={0x3f;}
void key()
{
if(reset==0) /
d0=0;d2=0;
shi=temp%100/
EA=1;
if(aa==20)
{aa=0;
TL0=(65536-50000)%256,复位;d2=0;
display();
sbit d0=P0^5;100)
{temp=0;开始
{
TR0=1;100,0x6d;
TH0= (65536-50000)/
}
void t0() interrupt 1
{ TH0= (65536-50000)/
sbit d1=P0^6;256;
P1=tab[shi] ;
#define uchar unsigned char;///
aa++,ge。为甚么我的程序不行
#include <
while(1)
{
key();/temp++、3用来启动;/}
bai=temp/
P1=tab[ge] ,0x6f};256;
P1=tab[bai].H>P0的1;复位
{ temp=0;}
}
void display() /
sbit reset=P0^2;reg51、2;
unsigned int temp
最佳答案
- 五星知识达人网友:酒安江南
- 2021-02-17 22:31
在main的开始部分加如下语句start = 1;stop = 1;reset = 1;
还有你用P0口作为按键输入的话,P0口一定要加上拉电阻,如果你不知道怎么加,那就把P0口换成P2口做为按键输入。要注意,那3个按键是另一端是接地的。
还有你用P0口作为按键输入的话,P0口一定要加上拉电阻,如果你不知道怎么加,那就把P0口换成P2口做为按键输入。要注意,那3个按键是另一端是接地的。
全部回答
- 1楼网友:山君与见山
- 2021-02-17 23:58
是PROTEUS仿真吗?不是的话还要记得硬件P0加上拉电阻(10K欧)
#include
sbit start=P0^0;
sbit stop=P0^1;
sbit reset=P0^2;
sbit d0=P0^5;
sbit d1=P0^6;
sbit d2=P0^7;
#define uchar unsigned char;
#define uint unsigned int ;
uchar bai,shi,ge;
unsigned int temp,aa=0;
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管不要用共阴的码
void delay(unsigned int x) //延时程序
{ while(x--);}
void key()
{
if(reset==0) //复位
{ temp=0;
TR0=0;
}
if(stop==0) //停止
{
TR0=0;
}
if(start==0) //开始
{
TR0=1;
}
}
void init() //中断程序
{
TMOD=0x01;
TH0= (65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void t0() interrupt 1
{ TH0= (65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{aa=0;temp++;}
}
void display() //显示程序
{
if(temp>100)
{temp=0;}
bai=temp/100;
shi=temp%100/10;
ge=temp%10;
d0=1; d1=0;d2=0;
P1=tab[bai];
delay(50);
P1=0xff;
d0=0; d1=1;d2=0;
P1=tab[shi];
delay(50);
P1=0xff;
d0=0; d1=0;d2=1;
P1=tab[ge] ;
delay(50);
P1=0xff; //这是动态显示,显示完一位后记得清屏
}
void main(void)
{
init();
temp=0;
while(1)
{
key();
display();}
}
- 2楼网友:孤独的牧羊人
- 2021-02-17 22:41
p0口为开漏结构,无输出高电平能力
但有较强的吸入电流能力
加接上拉排阻后就有了高电平驱动能力,输出电流能力 取决于上拉排阻的阻值
上拉电阻阻值小,其输出高电平时提供的电流就大
但输出低电平时从单片机io口灌入的电流就越大
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯