当前位置:首页 » 编程语言 » led屏幕c语言编程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

led屏幕c语言编程

发布时间: 2022-03-31 07:07:10

‘壹’ 求一个简单的LED灯c语言程序

初始化部分你要自己根据芯片资料写,数码管部分可以根据数码管的资料做数组xs[10]={0x3b……}要看数码管引脚定义了,看原理图看不出来的,可以做个200ms的定时器,然后计数5次就是1s
直接给数码管的io口附数组的值,如p1=xs[5];要看你给的是哪个io口了,我这边看不清你的原理图,led亮200ms后就换动作太快,看不出效果,可以把时间加长

‘贰’ C语言编写程序用于16LED显示屏键盘输入汉字LED屏输出

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

/*下面是引脚连接关系*/

sbit AD_EOC =P2^4; /*转换完成指示*/

sbit AD_IOCLK =P2^3; /*时 钟*/

sbit AD_DATIN =P2^2; /*数据入*/

sbit AD_DATOUT=P2^1; /*数据出*/

sbit AD_CS =P2^0; /*片 选*/

uint ad_result; /*存各模拟通道的数据*/

sbit E=P2^7;

sbit rs=P2^6;

sbit rw=P2^5;

sbit S1=P3^0;

sbit S2=P3^1;

sbit S3=P3^2;

sbit S4=P3^3;

sbit S5=P3^4;

sbit S6=P3^5;

sbit S7=P3^6;

sbit S8=P3^7;

sbit S9=P1^5;

sbit S10=P1^6;

sbit S11=P1^7;

sbit S12=P1^0;

uchar code zengzhen[]={"wuhanligongdaxue"};

uchar code zengzhen1[]={"Cha : mV "};

uint zengzhen2[8];

uint i,j;

uchar sum;

void delay(uint z)

{

uint x,y;

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

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

}


void write_com(uchar com)

{


rs=0;

rw=0;

P0=com;

E=0;

delay(1);

E=1;

delay(1);

E=0;

}


void write_date(uchar date)

{


rs=1;

rw=0;

P0=date;

E=0;

delay(1);

E=1;

delay(1);

E=0;

}



void init()

{

E=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}


/*启动A/D转换,并读取上次转换结果*/

uint read2543(CHN)

{

uchar i,temp;

uint read_ad_data = 0;

CHN=CHN<<4;

AD_IOCLK=0;

AD_CS=1;

AD_CS=0;

temp=CHN;

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

{

read_ad_data=read_ad_data<<1;

if((temp&0x80)!=0){AD_DATIN=1;}

else{AD_DATIN=0;}

if(AD_DATOUT){read_ad_data=read_ad_data+1;}

AD_IOCLK =1;

_nop_();_nop_();_nop_();_nop_();

AD_IOCLK =0;

_nop_();_nop_();_nop_();_nop_();

temp=temp<<1;

}

AD_CS=1;

read_ad_data=read_ad_data&0x0fff;


return(read_ad_data);

}


void display(uint k,uchar add)

{

uchar a,b,c,d;

float j=k*4.444/4.095;

uint i=j/1;

a=i/1000;

b=i%1000/100;

c=i%100/10;

d=i%10;

write_com(add);

write_date(a+0x30);

write_date(b+0x30);

write_date(c+0x30);

write_date(d+0x30);

delay(300);

}


/************显示程序*************/



/*主 程序*/



void scan()

{

if(S1==0)

{

delay(5);

if(S1==0)

{

while(!S1);

sum=1;

}

}

if(S2==0)

{

delay(5);

if(S2==0)

{

while(!S2);

sum=2;

}

}

if(S3==0)

{

delay(5);

if(S3==0)

{

while(!S3);

sum=3;

}

}

if(S4==0)

{

delay(5);

if(S4==0)

{

while(!S4);

sum=4;

}

}

if(S5==0)

{

delay(5);

if(S5==0)

{

while(!S5);

sum=5;

}

}

if(S6==0)

{

delay(5);

if(S6==0)

{

while(!S6);

sum=6;

}

}

if(S7==0)

{

delay(5);

if(S7==0)

{

while(!S7);

sum=7;

}

}

if(S8==0)

{

delay(5);

if(S8==0)

{

while(!S8);

sum=8;

}

}

if(S9==0)

{

delay(5);

if(S9==0)

{

while(!S9);

sum=9;

}

}

if(S10==0)

{

delay(5);

if(S10==0)

{

while(!S10);

sum=10;

}

}

if(S11==0)

{

delay(5);

if(S11==0)

{

while(!S11);

sum=11;

}

}

if(S12==0)

{

delay(5);

if(S12==0)

{

while(!S12);

sum=12;

}

}

}



void fw()

{

write_com(0x80+0x40+2);

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

{

write_date(zengzhen1[j]);

delay(5);

}

}

void main(void)

{

uchar h ;

uint s=0;

init();

delay(23);

write_com(0x80);

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

{

write_date(zengzhen[j]);

delay(5);

}


write_com(0x80+0x40+2);

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

{

write_date(zengzhen1[j]);

delay(5);

}


while(1)

{


if(sum==12)

{

scan();

if(sum!=12)

{

init();

delay(23);

write_com(0x80);

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

{

write_date(zengzhen[j]);

delay(5);

}


write_com(0x80+0x40+2);

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

{

write_date(zengzhen1[j]);

delay(5);

}

}

}


if(sum==11)

{

scan();

if(sum!=11)

{

fw();

}

}

scan();

if(sum==1)

{

for(h=0;h<15;h++)

{

ad_result=read2543(0);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(0+0x30);

display(s,0x80+0x40+7);

s=0;


}

if(sum==2)

{

for(h=0;h<15;h++)

{

ad_result=read2543(1);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(1+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==3)

{

for(h=0;h<15;h++)

{

ad_result=read2543(2);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(2+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==4)

{

for(h=0;h<15;h++)

{

ad_result=read2543(3);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(3+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==5)

{

for(h=0;h<15;h++)

{

ad_result=read2543(4);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(4+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==6)

{

for(h=0;h<15;h++)

{

ad_result=read2543(5);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(5+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==7)

{

for(h=0;h<15;h++)

{

ad_result=read2543(6);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(6+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==8)

{

for(h=0;h<15;h++)

{

ad_result=read2543(7);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(7+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==9)

{

for(h=0;h<15;h++)

{

ad_result=read2543(8);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(8+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==10)

{

for(h=0;h<15;h++)

{

ad_result=read2543(9);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(9+0x30);

display(s,0x80+0x40+7);

s=0;

}

if(sum==11)

{

for(h=0;h<15;h++)

{

ad_result=read2543(10);

while(!AD_EOC);

s+=ad_result;

}

s=s/15;

write_com(0x80+0x40+5);

write_date(1+0x30);

write_date(0+0x30);

write_date(':');

display(s,0x80+0x40+8);

write_date('m');

write_date('V');

s=0;

}

if(sum==12)

{

/*delay(100);

for(h=0;h<8;h++)

{

ad_result=read2543(h);

while(!AD_EOC);

ad_result=read2543(h);

zengzhen2[h]=ad_result;

}

*/

zengzhen2[0]=read2543(0);

while(!AD_EOC);

display(zengzhen2[0],0x80);

zengzhen2[1]=read2543(1);

while(!AD_EOC);

display(zengzhen2[1],0x84);

zengzhen2[2]=read2543(2);

while(!AD_EOC);

display(zengzhen2[2],0x88);

zengzhen2[3]=read2543(3);

while(!AD_EOC);

display(zengzhen2[3],0x8c);

zengzhen2[4]=read2543(4);

while(!AD_EOC);

display(zengzhen2[4],0x80+0x40);

zengzhen2[5]=read2543(5);

while(!AD_EOC);

display(zengzhen2[5],0x80+0x40+4);

zengzhen2[6]=read2543(6);

while(!AD_EOC);

display(zengzhen2[6],0x80+0x40+8);

zengzhen2[7]=read2543(7);

while(!AD_EOC);

display(zengzhen2[7],0x80+0x40+12);

}


}

}

望采纳谢谢

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

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

#include<reg51.h>

#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();

}

}

}

‘肆’ 用c语言单片机led灯显示数字“28”,如何编程

  1. 给LED编个数组,控制IO口,或者直接控制IO口,不过要看显示的28要多大,会占用比较多的IO口,道理和矩阵键盘差不多。

  2. 例程:

    #include<reg52.h>//单片机头文件
    voiddelay1ms(unsignedintms);//延时ms函数声明(可根据实际情况更改)
    unsignedcharcodeled0[]={};//字码表,你自己把你要显示的字码放进去就可以了
    voidmain()
    {
    unsignedcharw,i;
    while(1)
    {
    //显示0
    w=0x01;//行变量为第一行
    for(i=0;i<8;i++)
    {
    P1=w;//行数据送P1口
    P0=led0[i];
    delayms(1);//列数据送P0口
    w<<=1;//向下移动一行
    }

    }
    }
    voiddelay1ms(unsignedintms)
    {
    unsignedinti,j;
    for(i=0;i<ms;i++)
    for(j=0;j<110;j++)
    }

‘伍’ 怎么用C语言编写LED屏幕测试,每过3秒钟屏幕更换一用颜色。

sbit key = P1_0; sbit led = P1_1; #define led_on 0 main() { while( key ) { led = ! led_on; } while(!key) { led = led_on; delay( 100 ); led = ! led_on; delay( 100 ); } } 上面这个是按下闪,松开灭的程序,稍微改一下,就可以做到要求的功

‘陆’ 用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

C语言实现LED灯闪烁控制配套51单片机开发板。

#include //包含单片机寄存器的头文件

/****************************************
函数功能:延时一段时间

*****************************************/

void delay(void) //两个void意思分别为无需返回值,没有参数传递。

{

unsigned int i; //定义无符号整数,最大取值范围65535。

for(i=0;i<20000;i++) //做20000次空循环。

; //什么也不做,等待一个机器周期。

}

/*******************************************************

函数功能:主函数 (C语言规定必须有也只能有1个主函数)。

********************************************************/
void main(void)

{

while(1) //无限循环。

{

P0=0xfe; //P1=1111 1110B, P0.0输出低电平。

delay(); //延时一段时间。

P0=0xff; //P1=1111 1111B, P0.0输出高电平。

delay(); //延时一段时间。

}

}

单片机驱动LED灯的源程序:

#include<reg52.h> //头文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7; //位定义。

void delay_ms(uint);//mS级带参数延时函数。

void main()

{

while(1)

{

LED1=0;

delay_ms(1000);

LED1=1;

delay_ms(1000);

}

}

void delay_ms(uint z) //延时子程序

{

uint x,y;

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

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

}

(6)led屏幕c语言编程扩展阅读:

单片机应用分类:

通用型:

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型:

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。

另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型:

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。

通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

参考资料来源:网络-单片机



‘柒’ 基于LED显示屏设计C语言编程

本设计是在51单片机与PC机上实现基于RS232串行通讯功能的,制定和实现可靠的上下位机通讯协议,完成显示数据的下传和读取,图形和文字有静止、移入移出等多种显示方式是本设计的最大特点。第二章 系统组成与工作原理2.1系统设计要求和技术指标 此次设计的系统将由五部分(主要分为上位机部分和下位机部分,其中下位机主要分成,显示信息存储器﹑LED显示屏行驱动电路和LED点阵显示屏)组成来实现,分别为:上位PC机﹑串行电平转换器﹑显示信息存储器﹑LED显示屏行驱动电路和LED点阵显示屏。控制系统的结构框图如图2.1所示。设计要求系统能控制中文LED汉字显示,主控板采用以单片机为核心的单片机系统。MCS-51单片机具有扩展性强﹑功能强盛﹑价格较低等长处,因此,采用Atmel公司的AT89C52单片机。采用MAX232作为RS-232与TTL电平的转换器件。PC机发送到下位机的数据先由SBUF(数据缓冲区)接收,再存入EEPROM器件AT24C256中。汉字点阵显示屏可分为屏体和控制器两部分。屏体的主要部分是LED点阵屏,还有行列驱动电路。LED点阵显示屏采用8*8LED显示模块拼接而成。控制电路负责有序地选通各行,选通每一行之前还要把该行该列的数据预备好,一旦该行选通,这一行上的LED发光器件就可以根据列数据进行显示。从理论上讲,不论显示图形还是文字,只要控制这些组成图形或文字的各个点所在位置相应的LED器件发光,就可以得到想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16*16点阵共有256个发光二极管,显然单片机没有这么多的端口,假如采用锁存器来扩展端口,按8位的锁存器来计算,16*16的点阵需要256/8=32个锁存器。这个数字很大,因为这里仅仅是16*16的点阵,但是在实际应用中的显示屏往往要大的多,这样在锁存器上花的成本也就将是一个很大的数字。因此,在实际应用中的显示屏几乎都不采用静态驱动显示方式之中设计,而是采用另一种称为动态扫描的显示方式。所谓动态扫描,简朴地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行同名列共用一套列驱动器。以本次设计的16*16点阵为例,把所有的同一行发光管的阳极连在一起,把所有同一列发光管的阴极连在一起(共阳极接法),先发送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其点亮一定的时间,然后熄灭;再发送出第二行的数据并锁存,然后选通第二行使其点亮一定的时间,然后熄灭;……第十六行之后又重新点亮第一行,这样反复轮回。当这样轮回的速度足够快时(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。采用串行传输方案,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面,这无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相称长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以至影响LED的亮度。为解决串行传输中列数据准备与列数据显示的时间矛盾问题,可以采用重叠处理的方法,即在显示本行各列数据的同时,传送下一行的列数据。为达到重叠处理的目的,列数据的显示就需要具有锁存功能。经过上述的分析,可以归纳出列驱动器电路应具备的主要功能。对于列数据准备来说,它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据送入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而会不影响本行的显示。该显示屏系统的原理框图如图2.1所示。
</SPAN></SPAN></SPAN></SPAN>

‘捌’ 关于LED 的C语言编程,就是用C语言编写程序,用LED 显示汉字时间数字之类的,要注意什么,电路方面,编程

看手册,把显示每个数字的接口写好,一般是移位的,然后想显示什么数字就调用哪个接口,没什么要注意的,耐心点就好

‘玖’ 求用c语言编程,控制at89s52流水灯程序,和控制led显示数字

老大,这个程序你要自己写啊,我给你思路。
LED闪烁的条件就是在对应的脚位上面出现_-_-_-_-_-_- 这样的方波啊,语句就是P3_1 = ~P3_1;//比如p3.1上有颗led
花样吗你自己组合啊,在定时器里面设置不同的频率来改变方波的周期就可以做到了啊。在高级点的可以用PWM方法来控制渐亮和渐暗啊。祝你玩的愉快!

‘拾’ 编写C语言程序,在“C语言编程训练系统”上完成LED显示功能

#include <stdio.h>

/* input to output; 1st version */
main()
{
int c;

c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}