?? 網下點陣屏.c
字號:
/*點陣顯示漢字程串口輸出字符數據,P2口輸出行掃描信號,P0_0輸出595鎖存信號。
由于595接在LED陰極所以取模時要反白處理*/
#include <REG52.h>
unsigned char code hanzi[4][32]={ //二維數據
/*-- /*-- 文字: 新 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0xFF,0xF7,0x8F,0xEF,0xF1,0x01,0xFD,0xBB,0xFD,0xD7,0x81,0x00,0xED,0xEF,0xED,0xEF,
0xED,0x00,0xED,0xEF,0xED,0xCB,0xEE,0xAB,0xEE,0xAD,0xEF,0x6E,0xEF,0xAB,0xEF,0xF7,
/*-- 文字: 年 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0xFF,0xEF,0xC0,0x0F,0xFE,0xF7,0xFE,0xF7,0xFE,0xFB,0xE0,0x0D,0xFE,0xEE,0xFE,0xEF,
0xFE,0xEF,0xFE,0xEF,0x80,0x00,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,
/*-- 文字: 快 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0xFE,0xFB,0xFE,0xFB,0xFE,0xFB,0xE0,0x13,0xEE,0xEA,0xEE,0xEA,0xEE,0xFA,0x80,0x0B,
0xFE,0xFB,0xFD,0x7B,0xFD,0x7B,0xFB,0x7B,0xF7,0xBB,0xE7,0xBB,0x8F,0xDB,0xDF,0xEB,
/*-- 文字: 樂 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
0xF3,0xFF,0xE0,0x7F,0xFF,0x07,0xFE,0xF7,0xFE,0xF7,0xFE,0xF7,0xC0,0x03,0xFE,0xF7,
0xFE,0xEF,0xF6,0xCF,0xEE,0xE7,0xCE,0xF3,0x9E,0xDB,0xDE,0xBD,0xFF,0x7F,0xFF,0xFF
};
unsigned char code sw[16]={0xe0,0xe2,0xe4,0xe6,0xe8,
0xea,0xec,0xee,0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe}; /*16行段碼*/
unsigned char e;
void delay(); /*延時*/
void out_rxd(unsigned char *d); /*串口發送*/
/*主函數*/
void main()
{unsigned char i; //i是從字模數組里向后取數據時的計數器,用以改變顯示文字的內容.
SCON=0; //初始化串口為工作方式0(同步通信方式,TxD輸出同步脈沖)
while(1) //重復循環顯示
{
for(i=1;i<=31;i+=2)
{
P2=0xff;
out_rxd(&hanzi[0][i]); //從串口輸出第1個字的第一字節。
out_rxd(&hanzi[0][i-1]); //從串口輸出第1個字的第二字節。
out_rxd(&hanzi[1][i]); //從串口輸出第2個字的第一字節。
out_rxd(&hanzi[1][i-1]); //從串口輸出第2個字的第二字節。
out_rxd(&hanzi[2][i]);
out_rxd(&hanzi[2][i-1]);
out_rxd(&hanzi[3][i]);
out_rxd(&hanzi[3][i-1]);
P0=0x01; //鎖存為高,595鎖存信號
P0=0xfe;
P2=sw[e]; //輸出行信號
delay(); //延時,等待一段時間,讓這列顯示的內容在人眼內產生“視覺暫留”現象。*/
e++; //行加一
if(e==16)
e=0;
}
}
}
void out_rxd(unsigned char *d) /*從串口發送數據*/
{
SBUF=*d;
while(TI==0); //等待發送完畢
TI=0;
}
/*延時子程序*/
void delay()
{unsigned char n;
for(n=100;n>0;n--)
{;}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -