?? 16x256.c
字號:
#include <REGX51.H>
#define FOSC 12 //定義晶振頻率
#define INIT_TH0 0x3C //定時器T0初始值
#define INIT_TL0 0xB0
#define TMOD_T00 0x00 //定義T0為方式0,GATE=0,C/T=0,13位計數器
#define TMOD_T01 0x01 //定義T0為方式1,GATE=0,C/T=0,16位計數器
#define TMOD_T02 0x02 //定義T0為方式2,GATE=0,C/T=0,自動裝入8位計數器
#define TMOD_T03 0x03 //定義T0為方式3,GATE=0,C/T=0,定時器0分成兩個8位計數器,定時器1停止計數
/*縮定定義*/
#define uchar unsigned char
#define uint unsigned int
/*P1口位定義*/
/*P2 BIT Define*/
/*P3 bit define*/
/************位定義***************/
sbit STTP = P2^7;
/************函數聲明*************/
void delay(uint c); //延時函數
void out_rxd(uchar *d); //漢字輸出
/************漢字點陣*************/
char code hanzi[6][32]={
{0x08,0x02,0x30,0x02,0x20,0x02,0x20,0x02,0x27,0xFE,0x24,0x92,0xA4,0x92,0x64,0x092,
0x24,0x92,0x24,0x92,0x2F,0xFE,0x24,0x02,0x20,0x02,0x28,0x06,0x30,0x02,0x00,0x00},
{0x04,0x20,0x44,0x20,0x54,0x40,0x54,0x80,0x55,0xFF,0x56,0x92,0x5C,0x92,0xF4,0x92,
0x54,0x92,0x56,0x92,0x55,0xFF,0x54,0x80,0x54,0x40,0x44,0x60,0x04,0x40,0x00,0x00},
{0x02,0x20,0x0C,0x20,0x88,0x20,0x69,0x20,0x09,0x20,0x09,0x22,0x89,0x21,0x69,0x7E,
0x09,0x60,0x09,0xA0,0x19,0x20,0x28,0x20,0xC8,0x20,0x0A,0x60,0x0C,0x20,0x00,0x00},
{0x00,0x00,0x7F,0xFF,0x44,0x20,0x5A,0x10,0x69,0xE1,0x30,0x81,0x24,0x82,0x24,0x8C,
0xA4,0xF0,0x64,0x80,0x24,0xFC,0x2C,0x82,0x25,0x82,0x28,0x82,0x30,0x0E,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //'!'
0x00,0x00,0x00,0x00,0x38,0x00,0x7F,0xCC,
0x7F,0xCC,0x38,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //顯示空屏,如果只有一個字或將字全部移出必須設置一個空屏幕
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
/************主函數***************/
void main()
{
uchar i,j,k; //i:每個字的顯示循環;j每個字的顯示碼除以2;k每列刷新次數
uchar b=0; //顯示偏移控制,char類型最多只能顯示14個漢字+一個空白位字符
uchar a; //控制移動間隔時間
SCON = 0x00;
while(1)
{
j=0;
if(a>5) //移動間隔時間;取值0--255
{
a=0;
b+=2;
if(b>=160) //顯示到最后一個字,回頭顯示,判斷值=字數*32
{
b=0;
}
}
for(i=0;i<16;i++)
{
P1=i;
for(k=0;k<5;k++)
{
STTP = 0;
out_rxd(&hanzi[3][j+b+1]);
out_rxd(&hanzi[3][j+b]);
out_rxd(&hanzi[2][j+b+1]);
out_rxd(&hanzi[2][j+b]);
out_rxd(&hanzi[1][j+b+1]);
out_rxd(&hanzi[1][j+b]);
out_rxd(&hanzi[0][j+b+1]);
out_rxd(&hanzi[0][j+b]);
STTP = 1;
delay(4);
}
j=j+2;
}
a++;
}
}
/************子函數**************/
void delay(uint c)
{
int i,j;
for(i=0;i<c;i++)
for(j=0;j<5;j++)
;
}
void out_rxd(uchar *d)
{
SBUF = *d; //啟動串行口傳送
while(TI == 0); //等待串口傳送結束
TI = 0; //將串口中斷標志位置0
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -