下边的程序用51单片机控制八段数码管的计时的装置,麻烦请问该接几个数码管,该怎么接数码管呢
#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitP21=P2^1;sbitP22=P...
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
uchar a[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};// a[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
uchar c[4];
uint tt,shi,fen,miao,m,l,u;
uchar i=0,j=0,k,temp,temp1;
void delay(uint t)
{
uchar n;
while(t--)
{
for(n=0;n<30;n++);
}
}
void display()
{
P0=c[0];
P20=0;
P21=1;
P22=1;
P23=1;
delay(1);
P0=c[1];
P20=1;
P21=0;
P22=1;
P23=1;
delay(1);
P0=c[2];
P20=1;
P21=1;
P22=0;
P23=1;
delay(1);
P0=c[3];
P20=1;
P21=1;
P22=1;
P23=0;
delay(1);
}
void init()
{ TMOD=0x11;
TH0=(65536-1000)/256;//1ms
TL0=(65536-1000)%256;
TH1=(65536-50000)/256;//50ms
TL1=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
}
void main()
{ init();
while(1)
{
display();
}
}
void time1() interrupt 3
{
TH1=(65536-50000)/256;//50ms
TL1=(65536-50000)%256;
if((P26==0)||(P24==0))
{
tt++;
if(tt==20)
{
tt=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
}
}
}
c[0]=a[miao%10];
c[1]=a[miao/10];
c[3]=a[fen%10];
c[2]=a[10];
}
不好意思,漏了一个,sbit P20=P2^0;是直接把数码管接到单片机上吗 展开
#define uint unsigned int
#define uchar unsigned char
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
uchar a[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};// a[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
uchar c[4];
uint tt,shi,fen,miao,m,l,u;
uchar i=0,j=0,k,temp,temp1;
void delay(uint t)
{
uchar n;
while(t--)
{
for(n=0;n<30;n++);
}
}
void display()
{
P0=c[0];
P20=0;
P21=1;
P22=1;
P23=1;
delay(1);
P0=c[1];
P20=1;
P21=0;
P22=1;
P23=1;
delay(1);
P0=c[2];
P20=1;
P21=1;
P22=0;
P23=1;
delay(1);
P0=c[3];
P20=1;
P21=1;
P22=1;
P23=0;
delay(1);
}
void init()
{ TMOD=0x11;
TH0=(65536-1000)/256;//1ms
TL0=(65536-1000)%256;
TH1=(65536-50000)/256;//50ms
TL1=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
}
void main()
{ init();
while(1)
{
display();
}
}
void time1() interrupt 3
{
TH1=(65536-50000)/256;//50ms
TL1=(65536-50000)%256;
if((P26==0)||(P24==0))
{
tt++;
if(tt==20)
{
tt=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
}
}
}
c[0]=a[miao%10];
c[1]=a[miao/10];
c[3]=a[fen%10];
c[2]=a[10];
}
不好意思,漏了一个,sbit P20=P2^0;是直接把数码管接到单片机上吗 展开
展开全部
4个数码管,少了个定义:sbit P20=P2^0;P0口段选,P0.0~P0.5为笔划从上边的一横数起,顺时针排列,P0.6为中间的横,P0.7为小数点,P2口的P2.0~P2.3为位选,P2.0为秒的个位;P2.1为秒的十位,P2.2为分的个位,P2.3为分的十位。数码管为共阴极,c[3]=a[fen%10];
c[2]=a[10];应改为c[2]=a[fen%10];c[3]=a[fen/10];
c[2]=a[10];应改为c[2]=a[fen%10];c[3]=a[fen/10];
追问
那么应该怎么接线呢,直接接到单片机上吗
追答
将段选直接接P0,位选分别接4个PNP三极管的发射极e,集电极c接地,基极b分别接到P2.0~P2.3,P0要加上拉电阻,如果不知道笔画的对应关系,用万用表测量一下,P2.0~P2.3
与基极要接1~2k的保护电阻
长沙永乐康仪器
2024-03-19 广告
2024-03-19 广告
翻转振荡器的价格根据厂家的不一样而有所不同,也根据产品的材质和质量而有所不同,如果是采用不锈钢材质的就比铁皮的要更贵一些呢,不过耐久性和耐腐性性能更好一些,因为翻转振荡器使用的过程中涉及到酸比较多,负荷也比较大,建议购买品质更好一点的。我们...
点击进入详情页
本回答由长沙永乐康仪器提供
展开全部
三个数码管,P0数据,P2.1和p2.2及P2.3分别是位码控制位。
追问
不好意思,漏了一个,sbit P20=P2^0;是直接把数码管接到单片机上吗,程序有问题吗,为什么仿真软件上不能用呢
追答
P0.0接A,P0.7接H,其它的都是位,低位就是秒数据位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
四个数码管啊
共阴的
共阴的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
他在P2口接了一个带片选信号的门电路芯片,如244,373等,P2口接位选就是共阳极或共阴极,P0口接段选就是abcdefg7位,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询