當前位置:首頁 » 編程語言 » 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();
}
}