求51单片机数码管程序
8个数码管第一个显示0,第二个显示1,。。。。。。。,第8个显示7。8个数码管是同时显示的,并且一直显示下去大侠们,谢谢先,用C语言啊单片机是天津锐志51实验开发板(芯片...
8个数码管第一个显示0,第二个显示1,。。。。。。。,第8个显示7。8个数码管是同时显示的,并且一直显示下去
大侠们
,谢谢先 ,用C语言啊
单片机是天津锐志51实验开发板(芯片是AT89S52),回复2楼大侠:谢谢,但是程序不适用于本单片机,单片机一直响
回复3楼大侠:谢谢了,不过数码管靠右显示”8.8.” 展开
大侠们
,谢谢先 ,用C语言啊
单片机是天津锐志51实验开发板(芯片是AT89S52),回复2楼大侠:谢谢,但是程序不适用于本单片机,单片机一直响
回复3楼大侠:谢谢了,不过数码管靠右显示”8.8.” 展开
5个回答
展开全部
我的板子上只有六个,我把程序稍微改了一下,应该可以。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar i,temp;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code tablenum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay()//延时程序
{
uint k,j;
for (k=1;k>5;k--)
for(j=80;j>0;j--);
}
void main()
{
while(1)
{
for(i=8;i>0;i--)
{
P0=table[i];
dula=1;
dula=0;
P0=tablenum[i-1];
wela=1;
wela=0;
delay();
P0=0xff;
wela=1;
wela=0;
}
}
}
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar i,temp;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code tablenum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay()//延时程序
{
uint k,j;
for (k=1;k>5;k--)
for(j=80;j>0;j--);
}
void main()
{
while(1)
{
for(i=8;i>0;i--)
{
P0=table[i];
dula=1;
dula=0;
P0=tablenum[i-1];
wela=1;
wela=0;
delay();
P0=0xff;
wela=1;
wela=0;
}
}
}
展开全部
程序代码运行过了,仿真结果也在下面
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint i=0;
uchar code duan[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78} ;
uchar code pian[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void main()
{
for(i=0;i<8;i++)
{
P3=pian[i];
P2=duan[i];
}
}
板子头文件改成reg52就行了(不改也行的)。其实S51系列的单片和C51的没什么区别,唯一的区别就是S51系列的支持在线编程。还有加载程序是,你板子老响。那是因为你用的是人家的板子,电路是人家给你设计好的。所以那响的是电路默认连接在我上述程序的某个引脚上的蜂鸣器。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼下的都不错,不过在位选上用循环右移,那样的话程序可以更简单!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言和汇编语言的我都有,可以给我联系
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询