用C语言怎么编写7段LED的显示程序

用C语言怎么编写7段LED的显示程序,第1张

C语言写LED数码管显示程序与汇编是一致的,将显示的基本内容定义在一个数组中就可以了,比如:

#include<reg51h>

#define uchar unsigned char

uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

sbit rstkey=P2^2;

sbit speaker=P2^0;

void delay()//延时约400毫秒

{

uchar i,j;

for(i=0;i<200;i++)

for(j=0;j<250;j++);

}

main()

{

uchar i,key;

P2=0xff;

while(1)

{

i=0;

P1=table[i];

while(1)

{

key=P3;

if(key!=0)break;

}

switch(key)

{

case 0x01:i=1;break;

case 0x02:i=2;break;

case 0x04:i=3;break;

case 0x08:i=4;break;

case 0x10:i=5;break;

case 0x20:i=6;break;

case 0x40:i=7;break;

case 0x80:i=8;break;

default:break;

}

P1=table[i];//显示按下抢答器的号

P0=key;//显示按下键号的LED

while(1)

{

if(rstkey==0)break;//主持人按下复位键则重新开始

speaker=~speaker;//否则蜂鸣器报警

delay();

}

}

}

要用8×8的LED点阵显示数字0~9,先用proteus 画出仿真图,然后用取模软件画出数字8×8点阵图形,并按行取模,每个数字共8个字节数据,显示时取出字模并逐行扫描就行了。

把8个LED灯接到单片机的一个口,再给其赋值就可以表示了,比如接到51系列单片机的P1口。P1=1时第1个灯亮,等于2时第2个灯亮,等于127时八个灯全部亮

直接给P1口赋值就可以了,不过要用十六进制表示比较好。具体编程的话看看单片机相关的书就知道了。

这里给出一种基于Arduino平台的单片机数字0到9显示的程序代码,可供参考:

c++

Copy code

int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //定义LED引脚

int numPins[][7] = { //定义数字0~9的LED点阵图形

{1, 1, 1, 1, 1, 1, 0}, //0

{0, 1, 1, 0, 0, 0, 0}, //1

{1, 1, 0, 1, 1, 0, 1}, //2

{1, 1, 1, 1, 0, 0, 1}, //3

{0, 1, 1, 0, 0, 1, 1}, //4

{1, 0, 1, 1, 0, 1, 1}, //5

{1, 0, 1, 1, 1, 1, 1}, //6

{1, 1, 1, 0, 0, 0, 0}, //7

{1, 1, 1, 1, 1, 1, 1}, //8

{1, 1, 1, 1, 0, 1, 1} //9

};

void setup() {

for (int i = 0; i < 10; i++) { //初始化LED引脚为输出模式

pinMode(ledPins[i], OUTPUT);

}

}

void loop() {

for (int num = 9; num >= 0; num--) { //从数字9到0循环

for (int i = 0; i < 7; i++) { //依次点亮数字的7个LED

digitalWrite(ledPins[i], numPins[num][i]); //控制LED引脚输出高低电平

}

delay(1000); //延时1秒

}

}

该程序利用数组存储数字09的LED点阵图形,并通过循环依次点亮每个数字的7个LED,从而实现数字09的循环显示。可以根据需要对延时时间进行调整,以达到合适的显示效果。

电路图 如下:

#include<reg52h>

#define uint unsigned int

#define uchar unsigned char

sbit duan=P2^6;

sbit wei=P2^7;

uchar code digit[6]={0xf9,0xa4,0xb0,0x99,0x92,0X82};

void delay(xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void main()

{

while(1)

{

wei=1;

P0=0x01;

wei=0;

duan=1;

P0=digit[0];

duan=0;

delay(500);

wei=1;

P0=0x02;

wei=0;

duan=1;

P0=digit[1];

duan=0;

delay(500);

wei=1;

P0=0x04;

wei=0;

duan=1;

P0=digit[2];

duan=0;

delay(500);

wei=1;

P0=0x08;

wei=0;

duan=1;

P0=digit[3];

duan=0;

delay(500);

wei=1;

P0=0x10;

wei=0;

duan=1;

P0=digit[4];

duan=0;

delay(500);

wei=1;

P0=0x20;

wei=0;

duan=1;

P0=digit[5];

duan=0;

delay(500);

}

}

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

//sbit dula=P2^6;

sbit wela1=P2^0;//位选

sbit wela2=P2^1;

sbit wela3=P2^2;

sbit wela4=P2^3;

void delay(uint);

uint a,b;

uchar num;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//字符0123456789

void main()

{

while(1)

{

P0=0xea;

wela1=0;

wela2=1;

wela3=1;

wela4=1;//显示千位数

delay(1000);

P0=0xea;//数字

wela1=1;

wela2=0;

wela3=1;

wela4=1;//显示百位数

delay(1000);

P0=0xea;//数字

wela1=1;

wela2=1;

wela3=0;

wela4=1;//显示十位数

delay(1000);

P0=0xea;//数字

wela1=1;

wela2=1;

wela3=1;

wela4=0;//显示个位数

delay(1000);

}

}

void delay(uint x)

{

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

以上就是关于用C语言怎么编写7段LED的显示程序全部的内容,包括:用C语言怎么编写7段LED的显示程序、怎么利用8×8led点阵屏循环显示数字0-9编写程序并用Proteus仿真验证、8个LED做8位二进制数显示的程序怎样编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9715333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存