#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
#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; //使能,低电平有效
sbit RST=P2^3;
//===========================================
// 函数声明
//-------------------------------------------
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<length;i++)
write_data(0xff); //写入空格,清屏
write_com(0xb2); //关闭自动写
}
//--------------------------------------------
// 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 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 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); //设置数据自动写
print_string(a);
write_com(0xb2); //自动复位
}
void clr_text(char x,char y,int len)
{
int i,place;
place=x*30+y;
write_data(place&0xff); //写地址低8位
write_data(place/256); //写地址高8位
write_com(0x24); //设置地址
for(i=0;i<len;i++)
write_data(0x80);
write_com(0xb2); //自动复位
}
//--------------------------------------------
// 延时函数
//--------------------------------------------
void delay_lcd(uchar t){
for(;t!=0; t--);
}
void dl(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++);
}
//===================================================
int asc2lcd(int asc){
uint r;
r=asc-32;
return r;
}
main()
{
int place=5;
char ch=0x00;
RST=1;
lcd_init_text();
text_location(place);
while(1)
{
int i,n,m;
for(i=0;i<15;i=i+3)
{
if(i!=14&&i!=15)
{
n=i+1;
m=i+2;
}
else if(i==14)
{
n=15;
m=0;
}
else if(i==15)
{
n=0;
m=1;
}
print_text(i,0,"ZUOSONGYAN");
dl(200); print_text(i,0," ");
print_text(n,0,"201106050430");
dl(200); print_text(n,0," ");
print_text(m,0,"dianzi114");
dl(200);
print_text(m,0," ");
}
}
}
LCD240*128的驱动程序
需积分: 17 174 浏览量
2015-06-01
15:24:56
上传
评论
收藏 53KB RAR 举报
hh237
- 粉丝: 1
- 资源: 11
最新资源
- 基于matlab开发的全面详解LTE:MATLAB建模、仿真与实现-simulink.rar
- 自动驾驶定位系列教程二:系统架构.pdf
- 整站程序8优技巧网-8ujq.rar
- 世界各个国家或地区国际域名缩写
- 基于matlab开发的根据rvm回归模型自己编的matlab程序.rar
- 基于matlab开发的该程序为国内一所大学编写的LTE链路层仿真程序,根据LTE标准协议编写的,很容易看懂.rar
- 高效C++学生成绩管理系统:教育技术+C++17编程+数据管理+教务自动化
- 搜索链接要广告分类系统 v2.0-yad20.rar
- 基于matlab开发的Tipping的相关向量机RVM的回归MATLAB程序,有英文注释,可以运行.rar
- 一个点击正反转程序实例,可实现案件电机正反转
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈