新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机LCD实验1

单片机LCD实验1

作者: 时间:2016-11-21 来源:网络 收藏
代码如下:
//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);
}



关键词:单片机LCD实

评论


技术专区

关闭