微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机LCD实验1

单片机LCD实验1

时间: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);

}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top