应怎样编写LED数码管显示程序?
3个回答
展开全部
首先你的仔细看看电路图,看一下数码管是怎么接的,接的是哪一个管脚,从而确定出位选和段选。所谓段选指的是数码管显示的内容,位选指的是哪几个数码管显示。总之你一定要学会看懂电路图。下面我给你一个例子啊,是根据我的电路板写的。
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula = P2^6;//段选决定显示什么内容
sbit wela = P2^7;//位选决定显示哪几个数码管
sbit d1 = P1^0;//流水灯
uchar num;
//段码表
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71};
void delay(uint z);
void main()
{
wela = 1;
P0 = 0xc0;
wela = 0;
while(1)
{
//显示0~F
for(num=0; num<16; num++)
{
dula = 1;
P0 = table[num];
dula = 0;
delay(1000);
}
}
}
//延时函数
void delay(uint z)
{
uint x, y;
for(x=z; x>0; x--)
for(y=110; y>0; y--);
}
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula = P2^6;//段选决定显示什么内容
sbit wela = P2^7;//位选决定显示哪几个数码管
sbit d1 = P1^0;//流水灯
uchar num;
//段码表
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71};
void delay(uint z);
void main()
{
wela = 1;
P0 = 0xc0;
wela = 0;
while(1)
{
//显示0~F
for(num=0; num<16; num++)
{
dula = 1;
P0 = table[num];
dula = 0;
delay(1000);
}
}
}
//延时函数
void delay(uint z)
{
uint x, y;
for(x=z; x>0; x--)
for(y=110; y>0; y--);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你找本书系统学习一下,这是个非常基本的初学者的问题。书上的答案到处都是,很详细,有硬件的原理,也有软件的说明。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你的问题,证明你还是一个初学者,编写LED数码管显示程序前,你需要搞清:数码管是共阴连接还是共阳连接,需要静态显示还是动态显示,搞清这几点,你才可以编写驱动程序。其他的,上面的朋友已经回答的很精确了,自己慢慢消化吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询