?? hanzi.c
字號:
#include<reg52.h>
#include<stdio.h>
unsigned data i;
unsigned char q;
unsigned char *p; //建立數組指針
unsigned char wbyte;
sbit E=P3^2; //讀寫使能信號,1有效
sbit R_W=P3^1; //讀寫選擇信號;1為讀選通,0為寫選通
sbit RS=P3^0;
sbit D_I=P3^0; //數據指令選擇信號;1為數據操作,0為寫指令或讀狀態
char code Hanzi[32]= //漢字數組
{
0x02,0x03, //笑臉,心
0xd6,0xd0, //中
0xbf,0xc6, //科
0xd4,0xba, //院
0xce,0xef, //物
0xc0,0xed, //理
0xcb,0xf9, //所
0x03,0x02, //心,笑臉
0x54,0x45, //T,R
0x4c,0x3a, //L,:
0x30,0x31, //0,1
0x30,0x2d, //0,-
0x38,0x32, //8,2
0x36,0x34, //6,4
0x39,0x35, //9,5
0x39,0x33 //9,3
};
char code Hanzi1[28]= //漢字數組
{
0xbb,0xb6, //歡
0xd3,0xad, //迎
0xc4,0xfa, //您
0xa3,0xa1, //!
0x20,0x20, //空格
0x20,0x20,
0x46,0x41, //F,A
0x58,0x3a, //X,:
0x30,0x31, //0,1
0x30,0x2d, //0,-
0x38,0x32, //8,2
0x36,0x34, //6,4
0x39,0x34, //9,4
0x37,0x38 //7,8
};
unsigned char data j;
unsigned char data k;
void WCOM(unsigned char d) //寫指令程序
{
R_W=1;
D_I=0; //設置狀態
Loop:
P1=0xFF;
E=1; //使能有效
q=P1; //將p1口狀態讀入
E=0; //關閉使能信號
if(q&0x80) //判斷屏幕是否忙
{
goto Loop; //若忙,循環等待
}
R_W=0;
D_I=0; //寫數據指令
P1=d; //將數據送入p1口
E=1; //使能信號開
E=0; //使能信號關
}
void Dat(unsigned char d)
{
R_W=1;
D_I=0; //讀狀態指令
Loop:
P1=0xFF;
E=1; //使能
q=P1;
E=0;
if(q&0x80)
{
goto Loop;
} //判忙
D_I=1; //送數據指令
R_W=0;
P1=d;
E=1; //使能信號開
E=0; //使能信號關
}
void Clearlcd()
{
D_I=0;
R_W=0;
P1=0x01;
WCOM(0x01); //清除顯示
}
void Imim()
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
E=0;
WCOM(0x38); //功能設定
WCOM(0x08); //關顯示指令
WCOM(0x06); //游標右移
Clearlcd(); //清屏
WCOM(0x0c); //開顯示指令
}
void Hanz()
{
WCOM(k); //設置起始點
for(i=0;i<j;i++,p++)
{
wbyte=*p;
Dat(wbyte); //將漢字數組數據送入
}
}
/********************主程序********************/
void main()
{
Imim(); //初始化
Clearlcd();
p=Hanzi; //指針指向數組的首地址*/
j=32; //所建立的第一個漢字數組中元素的個數
k=0x80; //起始點:80h-8fh為在第一行顯示
Hanz(); //在1、3行寫漢字程序
p=Hanzi1;
j=28; //所建立的第二個漢字數組中元素的個數
k=0x92; //起始點:90h-9fh為在第二行顯示
Hanz(); //在2、4行寫漢字程序
while(1)
{
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -