代码如下:
//filename:global.h
#include
//#include
//#include
#define uchar unsigned char
#define uint unsigned int
//filename:T6963C.H
#define DATA_PORT P0
//——————————————-
// 管脚界说
//——————————————
sbit CD=P2^0; //数据(L)/指令(H)挑选
sbit WRIT=P2^1; //写,低电平有用
sbit CE=P2^2; //使能,低电平有用
//===========================================
// 函数声明
//——————————————-
void delay_lcd(char);
void write_data(char);
void write_text(char);
void write_com(char);
void clr_lcd(char,char,int);
void lcd_init_graph();
void lcd_init_text();
void text_out(char a);
int asc2lcd(int asc);
//——————————————–
// 写数据函数
//——————————————–
void write_data(char dat){
CD=0; //数据
CE=0; //LCD使能
WRIT=0; //写
DATA_PORT=dat; //把数据送到P口
delay_lcd(1); //当晶振较高时加延时
WRIT=1; //关写
CE=1; //关使能
}
//——————————————–
// 写数据函数
//——————————————–
void write_text(char text){
CD=0; //数据
CE=0; //LCD使能
WRIT=0; //写
DATA_PORT=text; //把数据送到P口
delay_lcd(1); //当晶振较高时加延时
WRIT=1; //关写
CE=1; //关使能
}
//——————————————–
// 写指令函数
//——————————————–
void write_com(char com){
CD=1; //指令
CE=0;
WRIT=0;
DATA_PORT=com;
delay_lcd(1); //当晶振较高时加延时
WRIT=1;
CE=1;
}
void clr_lcd(char x,char y,int length){
int i,place;
place=x*30+y;
write_data(place&0xff);
write_data(place/256);
write_com(0x24); //设置
for(i=0;i
write_data(0xff); //写入空格,清屏
write_com(0xb2); //封闭主动写
}
//——————————————–
// LM4229初始化函数
//——————————————–
void lcd_init_graph(){
write_data(0); //图形首地址
write_data(0);
write_com(0x42); //图形首地址设置
write_data(30);
write_data(0);
write_com(0x43); //图形区域设置
write_com(0x80); //设置为OR形式
write_com(0x98); //封闭文本显现,开图形显现
}
//——————————————–
// LM4229初始化函数
//——————————————–
void lcd_init_text(){
write_data(0);
write_data(0);
write_com(0x40); //set text home address
write_data(30);
write_data(0);
write_com(0x41); //set text area;
write_com(0x84); //text attribute mode
write_com(0x94); //text on graphic off
}
void cursor_on(){
write_com(0xA0);
write_com(0x93);
write_com(0x94); //text on graphic off
}
void print_text(char x,char y,char a){
int place;
place=x*30+y;
write_data(place&0xff); //写地址低8位
write_data(place/256); //写地址高8位
write_com(0x24); //设置地址
write_com(0xb0); //设置数据主动写
write_text(a);
write_com(0xb2); //主动复位
}
void text_out(char a){
write_com(0xb0); //设置数据主动写
write_text(a);
write_com(0xb2); //主动复位
}
void text_location(int place){
write_data(place&0xff); //写地址低8位
write_data(place/256); //写地址高8位
write_com(0x24); //设置地址
}
void print_string(char* str){
int i;
int ch;
for(i=0;str[i]!=0;i++)
{
ch=asc2lcd(str[i]);
text_out(ch);
}
}
//——————————————–
// 延时函数
//——————————————–
void delay_lcd(uchar t){
for(;t!=0; t–);
}
//===================================================
int asc2lcd(int asc){
uint r;
r=asc-32;
return r;
}
//latest revise:2010-2-11
//by:alex shoal
//email:alex.shoal@gmail.com
main(){
int place=5;
char ch=0x00;
lcd_init_text();
text_location(place);
print_string(“Hello,china! “);
while(1);
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/262760.html