?? 0851led.c
字號(hào):
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
unsigned char col,i;
unsigned char code num[16]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
unsigned int one=0,two=2,three=3,four=9,five=10,six=5,seven=6,eight=7;
sbit EN =P2^4; //使能
sbit STB =P2^6; //鎖存
sbit CLK =P2^7; //時(shí)鐘
sbit G =P0^7; //紅數(shù)據(jù)
sbit R =P2^5; //綠數(shù)據(jù)
void delay(); //延時(shí)
unsigned char code logo[128]={
0xFF,0x7F,0xFF,0x7F,0x03,0x7F,0xFA,0x01,0x7A,0xFB,0xB5,0xB7,0xD7,0xBF,0xEF,0xBF,
0xE7,0xBF,0xE7,0x9F,0xDB,0x5F,0xDB,0x6F,0xBE,0xE7,0x79,0xF1,0xC7,0xFB,0xFF,0xFF,/*"歡",0*/
0xBF,0xFF,0xDE,0x7F,0xC9,0x83,0xDB,0xBB,0xFB,0xBB,0xFB,0xBB,0x1B,0xBB,0xDB,0xBB,
0xDA,0xBB,0xD9,0xAB,0xDB,0xB7,0xDF,0xBF,0xDF,0xBF,0xAF,0xFF,0x70,0x01,0xFF,0xFF,/*"迎",1*/
0xF7,0xBF,0xF3,0xBF,0xE4,0x01,0xEF,0xBF,0xC8,0x03,0x9B,0xBB,0x5B,0xBB,0xD8,0x03,
0xDB,0xBB,0xDD,0xBF,0xDE,0x7F,0xDF,0x7F,0xDE,0x8F,0xDD,0xE1,0xD3,0xFB,0xFF,0xFF,/*"使",2*/
0xFF,0xFF,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,0xEF,0x7B,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,
0xEF,0x7B,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,0xDF,0x7B,0xDF,0x7B,0xBF,0x6B,0x7F,0x77,/*"用",3*/
};
unsigned char code number[192]={
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"0",0*/
0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,/*"1",1*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,/*"2",2*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"3",3*/
0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,/*"4",4*/
0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"5",5*/
0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6",6*/
0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,/*"7",7*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",8*/
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,/*"9",9*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x9F,0xFF,0xFF,/*".",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
};
/*********************************************************
函數(shù)名:delay()
功能:延時(shí)
/*********************************************************/
void delay(){
unsigned int n;
for(n=2;n>0;n--){;}
}
/*********************************************************
函數(shù)名:out_R
功能:發(fā)送數(shù)據(jù) c=1-紅色顯示 c=2-綠色顯示 c=3-黃色顯示
/*********************************************************/
void out_RGY(uchar *d,uint c){//發(fā)送數(shù)據(jù)
unsigned char j,TEMP;
bit o;
TEMP=*d;
if(c==1){
G=1;
for(j=0;j<8;j++){
o=(TEMP<<j)&0x80; //取出最高位。
if(o==0) R=0;
else R=1; //輸出數(shù)據(jù)1
CLK=1; //發(fā)送時(shí)鐘
CLK=0;
}
}
else if(c==2){
R=1; //關(guān)閉紅色
for(j=0;j<8;j++){
o=(TEMP<<j)&0x80; //取出最高位。
if(o==0) G=0;
else G=1; //輸出數(shù)據(jù)1
CLK=1; //發(fā)送時(shí)鐘
CLK=0;
}
}
else if(c==3){
for(j=0;j<8;j++){
o=(TEMP<<j)&0x80; //取出最高位。
if(o==0){G=0;R=0;}
else{G=1;R=1;} //輸出數(shù)據(jù)1
CLK=1; //發(fā)送時(shí)鐘
CLK=0;
}
}
}
/*********************************************************
函數(shù)名:SHOW_alp()
功能:顯示圖形程序
/*********************************************************/
void SHOW_alp(uchar *alpha,uint color)
{
out_RGY(&alpha[8*((i+1)/2-1)],color); //從串口輸出第1個(gè)字的第二字節(jié)。
out_RGY(&alpha[8*((i+1)/2-1)+1],color); //從串口輸出第1個(gè)字的第一字節(jié)。
out_RGY(&alpha[8*((i+1)/2-1)+2],color); //從串口輸出第2個(gè)字的第二字節(jié)
out_RGY(&alpha[8*((i+1)/2-1)+3],color); //從串口輸出第2個(gè)字的第一字節(jié)。
out_RGY(&alpha[8*((i+1)/2-1)+4],color);
out_RGY(&alpha[8*((i+1)/2-1)+5],color);
out_RGY(&alpha[8*((i+1)/2-1)+6],color);
out_RGY(&alpha[8*((i+1)/2-1)+7],color);
}
/*********************************************************
函數(shù)名:SHOW_chn()
功能:顯示漢字
/*********************************************************/
void SHOW_chn(uchar *china,uint color)
{
out_RGY(&china[i-1],color); //從串口輸出第1個(gè)字的第二字節(jié)。
out_RGY(&china[i],color); //從串口輸出第1個(gè)字的第一字節(jié)。
out_RGY(&china[32+i-1],color); //從串口輸出第2個(gè)字的第二字節(jié)
out_RGY(&china[32+i],color); //從串口輸出第2個(gè)字的第一字節(jié)。
out_RGY(&china[64+i-1],color);
out_RGY(&china[64+i],color);
out_RGY(&china[96+i-1],color);
out_RGY(&china[96+i],color);
}
/*********************************************************
函數(shù)名:SHOW_num()
功能:顯示數(shù)字
/*********************************************************/
void SHOW_num(uchar *numbers,uint color)
{
out_RGY(&numbers[one*16+(i+1)/2-1],color); //從串口輸出第1個(gè)字的第二字節(jié)。
out_RGY(&numbers[two*16+(i+1)/2-1],color); //從串口輸出第1個(gè)字的第一字節(jié)。
out_RGY(&numbers[three*16+(i+1)/2-1],color); //從串口輸出第2個(gè)字的第二字節(jié) //
out_RGY(&numbers[four*16+(i+1)/2-1],color); //從串口輸出第2個(gè)字的第一字節(jié)。
out_RGY(&numbers[five*16+(i+1)/2-1],color);
out_RGY(&numbers[six*16+(i+1)/2-1],color);
out_RGY(&numbers[seven*16+(i+1)/2-1],color);
out_RGY(&numbers[eight*16+(i+1)/2-1],color);
}
/*********************************************************
函數(shù)名:main()
功能:主功能函數(shù)
/*********************************************************/
void main(){
CLK=0;
while(1){ //重復(fù)循環(huán)顯示
for(i=1;i<32;i+=2){
EN=1;
SHOW_chn(logo,1); //關(guān)閉顯示
STB=1; //鎖存為高,595鎖存信號(hào)
P2=(P2|0x0f)&num[col]; //輸出行信號(hào)
EN=0; //開(kāi)顯示
// delay(); //延時(shí),等待一段時(shí)間,讓這列顯示的內(nèi)容在人眼內(nèi)產(chǎn)生視覺(jué)暫
STB=0; //關(guān)閉顯示
col++; //行加一
if(col==16) col=0; //一共16行。
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -