// Header: 12864帶中文字庫液晶模塊顯示文字C程序?qū)嵗?nbsp;
// File Name: stc89c52+12864帶中文字庫液晶顯示中文
// Author: TabLee
// Date: 2014.04.03
#include <stdio.h>
#include <math.h>
#include <reg52.h>
#include <string.h>
sbit RS =P2^5; //注意:一定要看12864液晶模塊的資料,來確定怎樣操作
sbit WRD=P2^6;
sbit E= P2^7;
sbit PSB=P2^3;
sbit RES=P2^4;
void TransferData(char data1,bit DI);
void delayms(unsigned int n);
void delay(unsigned int m);
void lcd_mesg(unsigned char code *addr1);
//下面來定義要顯示的漢字,8*4
unsigned char code IC_DAT[]={
"世界您好! "
"程序初始化 "
" "
" "
};
unsigned char code IC_DAT2[]={
"愛一個人難卻還愛"
"交結(jié)朋友可路更寬"
"誠實(shí)守信加油努力"
"成功做人成功做事"
};
void initinal(void) //初始化,12864有要求的要寫上
{
delay(40);
PSB=1; //并口工作模式
delay(1);
RES=0; //復(fù)位
delay(1);
RES=1; //復(fù)位置高
delay(10);
TransferData(0x30,0);
delay(100);
TransferData(0x30,0);
delay(37);
TransferData(0x08,0);
delay(100);
TransferData(0x10,0);
delay(100);
TransferData(0x0C,0);
delay(100);
TransferData(0x01,0);
delay(10);
TransferData(0x06,0);
delay(100);
}
void main(void) //分兩屏來不斷顯示上面定義的IC_DAT和IC_DAT2漢字
{
while(1)
{
initinal();//調(diào)用LCD字庫初始化程序
delay(100);
lcd_mesg(IC_DAT);
delayms(240); //延時程序必要的,長與短,自己調(diào)節(jié)
delayms(240);
initinal();
delay(100);
lcd_mesg(IC_DAT2);
delayms(240);
delayms(240);
}
}
void lcd_mesg(unsigned char code *addr1) //顯示漢字函數(shù),8*4=32
{
unsigned char i;
TransferData(0x80,0);
delay(100);
for(i=0;i<32;i++)
{
TransferData(*addr1,1);
addr1++;
}
TransferData(0x90,0);
delay(100);
for(i=32;i<64;i++)
{
TransferData(*addr1,1);
addr1++;
}
}
void TransferData(char data1,bit DI) //傳送數(shù)據(jù)或是命令,當(dāng)DI=0時,傳送命令,當(dāng)DI=1時,傳送數(shù)據(jù)
{
WRD=0;
RS=DI;
delay(1);
P0=data1;
E=1;
delay(1);
E=0;
}
void delayms(unsigned int n) //延時子程序
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<2000;j++);
}
void delay(unsigned int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
|