您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页LCD128显示程序之欧阳法创编

LCD128显示程序之欧阳法创编

来源:纷纭教育
2021.03.09 欧阳法创编

2021.03.09

本例程为通过用ATC52芯片操作LCD128显示的程序,使用的晶振为12M。

时间:2021.03.09 创作:欧阳法 /**********************************************************

程序说明:LCD128显示主程序 程序调试员:莫剑辉 调试时间:2010-6-7

**********************************************************/

#include #include\"128.c\" void main() {

Ini_Lcd(); //液晶初始化子程序

Disp(1,0,6,\"莫剑辉\"); //显示数据到LCD128子程序

2021.03.09 欧阳法创编

2021.03.09

2021.03.09 欧阳法创编

2021.03.09

while(1); }

这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD128的程序的调用。

/**********************************************************

程序说明:LCD128显示头文件 程序调试员:莫剑辉 调试时间:2010-6-7

**********************************************************/

//#include #define uchar unsigned char #define uint unsigned int

#define DATA P2 //数据输出端0~7 sbit RS=P0^0; //LCD128 RS端 sbit RW=P0^1; //LCD128 RW端 sbit E =P0^2; //LCD128 E 端 sbit PSB =P0^3;

2021.03.09 欧阳法创编

2021.03.09

2021.03.09 欧阳法创编

2021.03.09

/********************************************* 延时子程序

*********************************************/ void Delay_1ms(uint x) { uint j,i;

for(j=0;jfor(i=0;i<120;i++); //延时X乘以120 } }

/********************************************* LCD128液晶测忙子程序(读状态)

*********************************************/ void Busy() {

uchar busy; do {

E = 0; //0为关闭使能端,1为打开使能端

2021.03.09 欧阳法创编

2021.03.09

2021.03.09 欧阳法创编

2021.03.09

RS = 0; //1为指令,0为数据 RW = 1; //1为读,0为写

Delay_1ms(20); //延时20乘以120时间 E = 1; //0为关闭使能端,1为打开使能端 busy=P1; //读取P2状态

Delay_1ms(20); //延时20乘以120时间 E = 0; //0为关闭使能端,1为打开使能端 }

while(busy&0x80); //判断BUSY位是否工作:1内部在工作,0为正常状态 }

/********************************************* LCD128液晶数据写入子程序

*********************************************/ void Write_Data(uchar k) {

Busy(); //测忙

E =1;//0为关闭使能端,1为打开使能端 RS=1;//1为指令,0为数据 RW=0;//1为读,0为写

2021.03.09 欧阳法创编

2021.03.09

为2021.03.09 欧阳法创编

2021.03.09

DATA=k;//输入数据K到DATA Delay_1ms(20);//延时20乘以120时间 E =0; //0为关闭使能端,1为打开使能端 Delay_1ms(20); //延时20乘以120时间 }

/********************************************* LCD128液晶命令写入子程序

*********************************************/ void Write_Cmd(uchar cmd) {

Busy(); //测忙

E=1;//0为关闭使能端,1为打开使能端 RS=0; //1为指令,0为数据 RW=0;//1为读,0为写

DATA=cmd; //输入命令cmd到DATA Delay_1ms(20);//延时20乘以120时间 E=0;//0为关闭使能端,1为打开使能端 Delay_1ms(20);//延时20乘以120时间 }

/*********************************************

2021.03.09 欧阳法创编

2021.03.09

2021.03.09 欧阳法创编

2021.03.09

LCD128液晶数据显示子程序

*********************************************/ void Disp(uchar y,uchar x,uchar i,uchar *z) {

uchar Address;

if(y==1){Address=0x80+x;} //Y判断第几行,X判断第几列,0x80为液晶行初始地址 if(y==2){Address=0x90+x;} if(y==3){Address=0x88+x;} if(y==4){Address=0x98+x;}

Write_Cmd(Address); //写入地址命令到LCD128 while(i) //写入显示数据的大小 {

Write_Data(*(z++)); //写入显示数据到LCD128 i--; } }

/********************************************* LCD128液晶初始化子程序

*********************************************/

2021.03.09 欧阳法创编

2021.03.09

2021.03.09 欧阳法创编

2021.03.09

void Ini_Lcd(void) { PSB=1;

Delay_1ms(20);

Write_Cmd(0x30); //基本指令集 Delay_1ms(20);

Write_Cmd(0x02); // 地址归位 Delay_1ms(20);

Write_Cmd(0x0c); //整体显示打开,游标关闭 Delay_1ms(20);

Write_Cmd(0x06); //游标右移 Delay_1ms(20);

Write_Cmd(0x80); //设定显示的起始地址 Delay_1ms(20);

Write_Cmd(0x01); //清除显示 }

时间:2021.03.09 创作:欧阳法 2021.03.09 欧阳法创编

2021.03.09

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务