LCD显示程序
1602lcd显示程序
void init()
{
lcden=0; //使能端为低电平
write_com(0x38);
/*显示模式设置00111000设置16*2显示5*7点阵8位数据接口*/
write_com(0x0f);
/*显示开关及光标设置00001DCB
D=1,开显示D=0,关显示
C=1,显示光标C=0,不显示光标
#include<STC15.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^2; //使能端
sbit lcdrs=P3^0; //数据命令选择端
sbit rw=P3^1;
uchar code table[]="xian shi 1"; //输入的字符
{
lcdrs=0;
rw=0;
P1=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)//根据写时序图写出数据程序
{
lcdrs=1;
rw=0;
P1=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
lcd1602程序流程图
LCD1602程序代码和显示流程图LCD1602显示程序代码_ DB P0 //---P0 = DB0〜DB7位LCD_ RS = P2; //--p2.0 = RS 位LCD_ RW = P2; //--p2.1 = RW 位LCD_ E = P2; //-p2.2 = E / /---/--/--定义函数ා 定义uchar unsigned char ා 定义uint unsigned int // //-定义子程序函数void LCD_ Init (void ); //-初始化LCD1602函数void LCD_ write_ Command (uchar command ); //-写指令功能无效LCD 到LCD1602_ write_数据(uchar DAT ); //-将无效的LCD 数据写入LCD1602_ set_ XY (uchar x ,uchar y ); //设置LCD1602的显示位置x (0-16)
,
y(1-2)void LCD_ disp_ Char(uchar x,uchar y,uchar DAT); //-在LCD1602_ disp_ String (uchar x,uchar y,uchar * s)上显示字符无效的LCD;//-在LCD1602上显示字符串// void LCD_ check_ Busy(void); //检查忙功能。我没有使用此功能,因为通过率非常低。LCD_ delay_ 10us(uint n); //-一个10微秒的延迟子程序void LCD_ delay_ 50uS(uint n); /-延迟子程序50微秒_ init(无效){LCD_ delay_ 10us(20); LCD_ write_命令(0x38); //-设置8位格式,2行,5x7 LCD_ delay_ 10us(5);LCD_ write_命令(0x0c); //-整体显示,关闭光标,不闪烁LCD_ delay_ 10us(5);LCD_ write_命令(0x06); //-设置输入模式,增量不移位LCD_ delay_ 10us(5);LCD_ write_命令(0x01); // /-清除屏幕上的LCD_ delay_ 50uS(40);} //将无效的LCD指令写入LCD1602_ write_命令(uchar dat){LCD_ delay_ 10us (5);LCD_ Rs = 0; //命令LCD_RW = 0;//写入LCD_ DB = dat; LCD_ delay_ 10us(5); LCD_ E = 1; //允许LCD_delay_10us(5);LCD_ E = 0;} /-将数据无效LCD写入LCD1602_ write_ data(uchar dat){LCD_ delay_ 10us(5);LCD_ Rs = 1; //数据LCD_RW = 0;//写入LCD_ DB = dat; LCD_ delay_ 10us(5); LCD_ E = 1; //允许LCD_delay_10us(5);LCD_ E = 0;} /-
LCD原理及显示程序
在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED 数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
显示质量高
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。数字式接口
液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
10.8.1 液晶显示简介
①液晶显示原理
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
②液晶显示器的分类
液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
单片机LCD显示实验报告
单片机LCD显示实验报告实验目的:
本实验旨在通过使用单片机控制LCD进行显示,掌握单片机与外围设备的交互操作,学习并理解LCD显示原理。
实验器材:
1. 单片机开发板
2. LCD1602液晶显示屏
3. 杜邦线若干
4. 电阻若干
实验原理:
液晶显示原理是在液晶材料施加电场的作用下,通过改变传输光的偏振状态来实现图像显示。本实验使用的LCD1602是一种16×2的字符型液晶显示模块,其中每个字符由5×8的点阵构成。
实验步骤:
1. 连接电路:将LCD1602与单片机开发板通过杜邦线连接。一般来说,液晶显示屏的引脚布局如下:
- VSS: 接地
- VDD: 供电(一般为5V)
- V0:对比度控制端(通过电位器调节)
- RS:数据/指令选择端(通常连接到单片机的I/O口)
- RW:读写选择端(连接至地)
- E:使能端(通常连接到单片机的I/O口)
- D0-D7:数据线(连接到单片机的I/O口)
- A:背光灯正极(连接5V)
- K:背光灯负极(连接至地)
2. 编写程序:根据实验要求,使用相应的单片机编程语言编写程序。在程序中,需要调用相关的LCD1602命令来实现字符的显示。
3. 烧录程序:使用相应的烧录工具将编写好的程序下载到单片机开
发板中。
4. 实验验证:将开发板上电,通过观察LCD1602的显示情况来验
证程序的正确性。
实验结果与分析:
在本次实验中,我使用单片机控制LCD1602成功实现了字符的显示。实验结果表明,编写的程序能够正确地将字符显示在液晶屏上,
并且显示效果良好。
实验中遇到的问题及解决方法:
液晶显示屏程序
//LCD12864液晶显示模块程序。智能寻迹小车的显示模块。
/******************************************************** 智能寻迹小车液晶显示程序模块
设计:黄有全日期:2010年10月28日
液晶显示器LCD12864工作于串行显示模式,引脚接线如下:
4脚(CS片选)→P1.5
5脚(STD数据)→P1.6
6脚(SCLK时钟)→P1.7
15脚(PSB模式选择)→P0.7
17脚(/RST复位)→P0.6
*********************************************************/
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1
sbit cs = P1^5; //LCD-4脚,串行模式的片选引脚。高电平选中。sbit std = P1^6; //LCD-5脚,串行模式的数据线。I/O。
sbit sclk = P1^7; //LCD-6脚,串行模式的时钟信号线。
sbit psb = P0^7; //LCD-15脚,模式选择:H=并行模式; L=串行模式; sbit rst = P0^6; //LCD-17脚,Reset Signal 低电平有效
void wr_lcd (uchar dat_comm,uchar content);
LCD与单片机的连接电路图和LCD显示程序
LCD与单片机的连接电路图和LCD显示程序/LCD测试程序
3.2.5 LCD显示电路
液晶显示器简称LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性来显示信息的。要使用点阵型LCD显示器,必须有相应的LCD控制器、驱动器来对LCD显示器进行扫描、驱动,以及一定空间的ROM和RAM来存储写入的命令和显示字符的点阵。现在往往将LCD控制器、驱动器、RAM、ROM和LCD显示器连接在一起,称为液晶显示模块。
液晶显示模块是一种常见的人机界面,在单片机系统中的应用极其广泛。液晶显示模块既可以显示字符,又可以显示简单的图形。本系统采用的是1602的LCD接口。1602是一种点阵字符型液晶显示模块,可以显示两行共32个字符。根据LCD型号的不同,所需要的背光电阻大小会不同,可自行调节。
本系统采用的LCD为RT-1602C,其主要引脚的功能如下:
RS:数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
RW:读/写选择端,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时,可以写入指令或者显示地址;当RS为低电平、RW为高电平时,可以读忙信号;当RS 为高电平、RW为低电平时,可以写入数据。
E:使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
图3-9 LCD显示电路
LCD测试程序
#include
/********IO引脚定义***********************************************************/ sbit LCD_RS=P2^7;//定义引脚
LCD显示程序
本例程为通过用AT89C52芯片操作LCD12864显示的程序,使用的晶振为12M。/**********************************************************
程序说明:LCD12864显示主程序
程序调试员:莫剑辉
调试时间:2010-6-7
**********************************************************/
#include
#include"12864.c"
voidmain()
{
Ini_Lcd(); //液晶初始化子程序
Disp(1,0,6,"莫剑辉");//显示数据到LCD12864子程序
while(1);
}
这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到
LCD12864的程序的调用。
/**********************************************************
程序说明:LCD12864显示头文件
程序调试员:莫剑辉
调试时间:2010-6-7
**********************************************************/
//#include
#defineucharunsignedchar
#defineuintunsignedint
#defineDATAP2//数据输出端0~7
sbitRS=P0^0;//LCD12864RS端
sbitRW=P0^1;//LCD12864RW端
sbitE=P0^2;//LCD12864E端
lcd1602流程图
lcd1602流程图
LCD1602流程图是指在液晶显示屏模块上显示特定信息的流程图。下面我们将介绍一个简单的LCD1602流程图,包括初始化液晶模块、设置显示模式、输入要显示的内容等步骤。
首先,我们需要准备一个Arduino开发板和一个LCD1602模块。将LCD模块的VCC和GND引脚分别连接到Arduino的3.3V和GND引脚上,将SDA和SCL引脚连接到Arduino的A4和A5引脚上。然后,编写以下步骤来实现流程图。
第一步,初始化液晶模块。在Arduino开发环境中,我们需要包含LiquidCrystal_I2C.h库文件,然后创建一个LiquidCrystal_I2C对象。使用begin()函数初始化LCD模块,并设置显示模式和光标的闪烁。
第二步,设置显示模式。使用setCursor()函数将光标移动到特定位置,并使用print()函数输入要显示的内容。根据需要可以设置一到两行进行显示。
第三步,设置滚动显示。使用scrollDisplayLeft()或scrollDisplayRight()函数在屏幕上滚动显示内容。
第四步,设置光标显示状态。使用noCursor()函数关闭光标显示,使用cursor()函数开启光标显示。
第五步,设置光标闪烁状态。使用noBlink()函数关闭光标闪烁,使用blink()函数开启光标闪烁。
第六步,设置显示打开/关闭状态。使用noDisplay()函数关闭显示,使用display()函数开启显示。
第七步,设置自定义字符。使用createChar()函数在CGRAM (字符生成RAM)中自定义字符,并使用write()函数在屏幕上显示。
项目10单片机LCD液晶显示器实验
功能特点
杜邦线具有较好的导电性能和机 械强度,适用于各种线路连接场 景。电源适配器能够提供稳定的 电压和电流,保证实验设备的正 常运行。
实验中的作用
在实验中,杜邦线和电源适配器 等辅助工具将作为连接和供电设 备,为实验提供必要的支持和保 障。
03 实验步骤与操作
连接硬件
准备所需硬件:单片 机、LCD液晶显示器、 杜邦线等。
学习更多单片机相关知识
为了更好地应用单片机技术,我需要进一步学习更多关于单片机的知识,如更深入的编程技巧、单片机 与其他设备的通信技术等。这将有助于我在未来的项目中更好地发挥单片机的功能。
THANKS FOR WATCHING
感谢您的观看
通过本次实验,我深入了解了单片机与LCD液晶显示器的工作原理,掌握了它们之间的 连接方式,为后续的实验和项目开发打下了坚实的基础。
提升编程与调试能力
在实验过程中,我通过编写程序和不断调试,提高了自己的编程技巧和解决问题的能力。 通过解决实验中遇到的各种问题,我更加熟悉了单片机的编程语言和控制逻辑。
增强团队协作与沟通能力
单片机开发板通常具备 丰富的外设接口,如 GPIO、UART、SPI等, 方便与外部设备进行通 信和控制。
实验中的作用
在实验中,单片机开发 板将作为主控制器,负 责控制LCD液晶显示器 的显示内容和操作。
LCD液晶显示器模块
液晶显示器的程序设计
液晶显示器的程序设计
液晶显示器的程序设计
1. 简介
液晶显示器是一种广泛应用于电子产品中的显示设备,它采用液晶材料来控制光的透过与阻碍,从而实现图像的显示。在液晶显示器的程序设计中,需要考虑到控制面板设计、显示控制和用户交互等多个方面。本文将介绍液晶显示器的程序设计的基本原理和常用技术。
2. 控制面板设计
液晶显示器的控制面板是用户与显示器进行交互的重要界面,在程序设计中需要考虑到用户操作的便捷性和人机交互的友好性。一般来说,控制面板设计需要包括以下几个方面:
- 显示设置:用户可以通过菜单或按钮调整亮度、对比度、色彩和分辨率等显示参数。
- 输入设置:用户可以通过键盘、触摸屏或遥控器等输入设备进行文字输入、选择和确认等操作。
- 定时设置:用户可以通过控制面板设置自动休眠或定时开关机等功能。
在程序设计中,需要根据具体的液晶显示器型号和控制面板设
计要求,使用合适的编程语言和开发工具实现控制面板的功能。
3. 显示控制
液晶显示器的显示控制是液晶显示器程序设计的核心部分,主
要涉及到图像的、渲染和刷新等操作。在液晶显示器的程序设计中,常用的显示控制技术包括:
- 显示驱动:显示驱动是控制液晶显示器的关键技术之一,它
通过对每个像素点的电压控制,实现像素点的开关和亮度控制。常
见的显示驱动技术包括平面显示驱动和亚像素驱动等。
- 图像处理:图像处理是指对输入的图像信号进行处理和优化
的技术,常用的图像处理算法包括缩放、旋转、滤波和色彩转换等。
- 反射和背光控制:液晶显示器可以通过反射和背光控制实现
图像的显示和亮度调节。反射控制是通过光的反射和折射原理实现的,背光控制则是通过背后的灯光源来照亮液晶显示屏。
LCD液晶显示程序
#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include
#include
#include
#include
#include
#include
sbit RS = P2^4; //定义端口
sbit RW = P2^5;
sbit EN = P2^6;
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit P2_4 = P2^4;
sbit P2_5 = P2^5;
sbit P2_6 = P2^6;
sbit P2_7 = P2^7;
sbit P3_0 = P3^0;
sbit P3_1 = P3^1;
sbit P3_2 = P3^2;
sbit P3_3 = P3^3;
sbit P3_4 = P3^4;
sbit P3_5 = P3^5;
LCD液晶显示程序
//功能:LCD液晶显示程序,采用8位数据接口
#include <iom16v.h>
#include <macros.h> //库函数头文件,代码中引用了_nop()函数// 定义控制信号端口
#define E 2
#define RW 1
#define RS 0
//sbit RS=0xB0; //P3.0 sbit RS=P3^0;
//sbit RW=0xB1; //P3.1
//sbit E= 0xB2; //P3.2
// 声明调用函数
void lcd_w_cmd(unsigned char com); //写命令字函数
void lcd_w_dat(unsigned char dat); //写数据函数
unsigned char lcd_r_start(); //读状态函数
void int1(); //LCD初始化函数
void delay(unsigned char t); //可控延时函数
void delay1(); //软件实现延时函数,5个机器周期
void gong(void);
void main() //主函数
{
unsigned char lcd[]="yin hai chang";
unsigned char i;
PORTC=0xff; // 送全1到P0口
DDRC=0xff;
PORTB=0xff; // 送全1到P0口
DDRB=0xff;
int1(); // 初始化LCD
delay(255);
lcd_w_cmd(0x80); // 设置显示位置
delay(255);
LCD显示程序
;************************************************************************** ;************************************************************** TEMPER_L EQU 36H ;从DS18B20中读回高位,低位暂存区TEMPER_H EQU 35H ;
TEMPER_NUM EQU 60H;温度值存储
TEMPER_GE EQU 61H
TEMPER_SHI EQU 62H
TEMPER_SAVE EQU 63H
FLAG1 BIT 00H
FLAG2 BIT 01H
RS BIT p2.0;液晶控制接口
RW BIT p2.1
E BIT p2.2
DQ BIT p3.5;单总线口
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV SP,#70H
LCALL GET_TEMPER
LCALL TEMPER_COV
LCALL LCDDISP
lcall d100ms
lcall d100ms
LJMP MAIN
NOP
;**************************************************
;读出转换后的温度值
;**************************************************
GET_TEMPER:
SETB DQ ; 定时入口
BCD: LCALL INIT_1820
JB FLAG1,S22
LJMP BCD ; 若DS18B20不存在则返回
基于51单片机的电压监测+液晶LCD1602显示程序源代码
基于51单片机的电压监测+液晶LCD1602显示程序源代码
/*******************电压监测+液晶LCD1602显示程序源代码********************
单片机型号:STC15W4K56S4,内部晶振:22.1184M。
功能:电压监测+液晶LCD1602显示功能测试。
操作说明:
监测电池电压,并将电池电压值显示在液晶LCD1602上。
**************************************************************************/
#include "stc15.h" //包含头文件stc15.h
#include <intrins.h> //包含头文件intrins.h
#define ADC_POWER 0x80 //将0x80宏定义成ADC_POWER #define ADC_FLAG 0x10 //将0x10宏定义成ADC_FLAG
#define ADC_START 0x08 //将0x08宏定义成ADC_START #define ADC_SPEEDLL 0x00 //将0x00宏定义成ADC_SPEEDLL #define ADC_SPEEDL 0x20 //将0x20宏定义成ADC_SPEEDL #define ADC_SPEEDH 0x40 //将0x40宏定义成ADC_SPEEDH #define ADC_SPEEDHH 0x60 //将0x60宏定义成ADC_SPEEDHH
#define Busy 0x80 //LCD忙
LCD 显示子程序
LCD显示
子程序:
void Delay(unsigned int nTime); // 延时子程序
void TurnOnLCD(); // 打开显示
void LCDCLS(); // 清除屏幕显示内容
unsigned char ledkey[10][8]=
{
{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00}, //0
{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00}, //1
{0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00}, //2
{0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00},
{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00},
{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},
{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00},
{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00},
{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},
{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}
};
void main(void)
{
int i,nCount=0,nBW=0;
InitSysCtrl();
CTRGR=0x80; // 初始化ICETEK-CTR
Delay(LCDDELAY);
LCD显示控制程序入门
液晶显示控制器 UC1608 应用指南深圳市拓普微科技开发有限公司版本 0.1 0.2描述 新版本 P7 SdCmd(0x2C);改为 SdCmd(0x26);日期 2009-06-24 2010-1-23编者 郭强 郭强 深圳市拓普微科技开发有限公司 page 1/18
液晶显示控制器 UC1608 应用指南TOPWAY目 录第一章 第二章 第三章 第四章液晶显示控制器接口特性 ......................................................................................... 2 液晶显示控制器接口技术 ......................................................................................... 4 液晶显示控制器指令系统 ......................................................................................... 9 液晶显示控制器应用函数 ....................................................................................... 14 深圳市拓普微科技开发有限公司 page 1/18
液晶显示控制器 UC1608 应用指南TOPWAY第一章液晶显示控制器接口特性UC1608 控制器的基本特性如下,使用 UC1608 的液晶显示模块利用了这些特性构造了模块产品应用 的主要功能: 工作电源:3V 显示功能:单显示 RAM 区域、垂直卷动等 接口信号: 管脚符号 CS/RES D/C管脚定义片选信号输入端,高电平有效。CS=1 时选通模块;CS=0 时模块接口被封锁 复位信号输入端,低电平复位;正常运行时,为高电平状态 通道选择信号输入端,当 D/C=0 时,选择指令通道;D/C=1 时,选择数据通道 输入端。当并行接口 INTEL8080 时序时,为写信号/WR,低电平有效;/WR(R/W) 当并行接口 INTEL6800 时序时,为读/写选择信号,R/W=1,为读状态,R/W=0,为写状态输入端。当并行接口 INTEL8080 时序时,为读信号/RD,低电平有效;/RD(E) DB1 DB2 DB4 DB5 DB6 DB7当并行接口 INTEL6800 时序时,为使能信号,E 为高电平时,为读操作,E 下降沿为写操作DB0 (SCK) 输入/输出/三态。并行接口数据总线,当选择串行接口时,为串行时钟信号输入端输入/输出/三态。并行接口数据总线,当选择串行接口时,接 VSS 输入/输出/三态。并行接口数据总线,当选择串行接口时,接 VSSDB3 (SDA) 输入/输出/三态。并行接口数据总线,当选择串行接口时,为串行数据输入端输入/输出/三态。并行接口数据总线,当选择 4 位并行接口或串行接口时,接 VSS 输入/输出/三态。并行接口数据总线,当选择 4 位并行接口或串行接口时,接 VSS 输入/输出/三态。并行接口数据总线,当选择 4 位并行接口或串行接口时,接 VSS 输入/输出/三态。并行接口数据总线,当选择 4 位并行接口时,接 VSS;选择串行接口时,接 VDD接口形式:8 位/4 位并行接口、4 线/3 线串行接口 操作模式:80mode(默认) 和 68mode 时序关系: 1、并口时序(80mode)图一 80mode 模式时序图 深圳市拓普微科技开发有限公司 page 2/18
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uint j,i;
for(j=0;j<x;j++)
{
for(i=0;i<120;i++); //延时X乘以120
}
}
/*********************************************
LCD12864液晶测忙子程序(读状态)
*********************************************/
sbit E =P0^2; //LCD12864 E端
sbit PSB =P0^3;
/*********************************************
延时子程序
*********************************************/
void Delay_1ms(uint x)
}
/*********************************************
LCD12864液晶数据显示子程序
*********************************************/
void Disp(uchar y,uchar x,uchar i,uchar *z)
Write_Cmd(0x06); //游标右移
Delay_1ms(20);
Write_Cmd(0x80); //设定显示的起始地址
Delay_1ms(20);
Write_Cmd(0x01); //清除显示
}
#include<reg52.h>
#include"12864.c"
void main()
{
Ini_Lcd();//液晶初始化子程序
Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序
while(1);
}
这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。
void Write_Data(uchar k)
{
Busy();//测忙
E =1;//0为关闭使能端,1为打开使能端
RS=1;//1为指令,0为数据
RW=0;//1为读,0为写
DATA=k;//输入数据K到DATA
Delay_1ms(20);//延时20乘以120时间
E =0;//0为关闭使能端,1为打开使能端
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);
/**********************************************************
程序说明:LCD12864显示头文件
程序调试员:莫剑辉
调试时间:2010-6-7
**********************************************************/
{ቤተ መጻሕፍቲ ባይዱ
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时间
while(i)//写入显示数据的大小
{
Write_Data(*(z++));//写入显示数据到LCD12864
i--;
}
}
/*********************************************
LCD12864液晶初始化子程序
*********************************************/
E = 0;//0为关闭使能端,1为打开使能端
}
while(busy&0x80); //判断BUSY位是否工作:1为内部在工作,0为正常状态
}
/*********************************************
LCD12864液晶数据写入子程序
*********************************************/
Delay_1ms(20);//延时20乘以120时间
}
/*********************************************
LCD12864液晶命令写入子程序
*********************************************/
void Write_Cmd(uchar cmd)
void Busy()
{
uchar busy;
do
{
E = 0;//0为关闭使能端,1为打开使能端
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时间
//#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define DATA P2 //数据输出端0~7
sbit RS=P0^0; //LCD12864 RS端
sbit RW=P0^1; //LCD12864 RW端
{
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);//写入地址命令到LCD12864
本例程为通过用AT89C52芯片操作LCD12864显示的程序,使用的晶振为12M。
/**********************************************************
程序说明:LCD12864显示主程序
程序调试员:莫剑辉
调试时间:2010-6-7
**********************************************************/