lcd12864与单片机连接 51单片机LCD12864液晶C程序

#include <reg51.h>

#include <intrins.h>

#define uchar unsigned char

#define uint ?unsigned int

/*12864-12 端口定义*/

#define LCD_data ?P0 ? ? ? ? ? ? //数据口

sbit LCD_RS ?= ?P2^2; ? ? ? ? ? ?//寄存器选择输入?

lcd12864与单片机连接 51单片机LCD12864液晶C程序

sbit LCD_RW ?= ?P2^1; ? ? ? ? ? ?//液晶读/写控制

sbit LCD_EN ?= ?P2^0; ? ? ? ? ? ?//液晶使能控制

uchar code dis1[] = {"东哥单片机学习网"};

uchar code dis2[] = {" www.picavr.com "};

uchar code dis3[] = {"手机-13512767404"};

uchar code dis4[] = {"商城--东哥邮购网"};

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

void delay0(uchar x); ?//x*0.14MS

void lcd_pos(uchar X,uchar Y); ?//确定显示位置

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

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/* ?延时函数 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

void delay(int ms)

{

? ? while(ms--)

{

? ? ? uchar i;

?for(i=0;i<250;i++) ?

? {

? ?_nop_();

_nop_();

_nop_();

_nop_();

? }

}

}

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

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/*检查LCD忙状态 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*/

/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 ? ? ?*/

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

bit lcd_busy()

?{ ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? bit result;

? ? LCD_RS = 0;

? ? LCD_RW = 1;

? ? LCD_EN = 1;

? ? delayNOP();

? ? result = (bit)(P0&0x80);

? ? LCD_EN = 0;

? ? return(result);?

?}

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

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/*写指令数据到LCD ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*/

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

void lcd_wcmd(uchar cmd)

51单片机LCD12864液晶C程序_lcd12864

{ ? ? ? ? ? ? ? ? ? ? ? ? ?

? ?while(lcd_busy());

? ? LCD_RS = 0;

? ? LCD_RW = 0;

? ? LCD_EN = 0;

? ? _nop_();

? ? _nop_();?

? ? P0 = cmd;

? ? delayNOP();

? ? LCD_EN = 1;

? ? delayNOP();

? ? LCD_EN = 0; ?

}

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

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/*写显示数据到LCD ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*/

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

void lcd_wdat(uchar dat)

{ ? ? ? ? ? ? ? ? ? ? ? ? ?

? ?while(lcd_busy());

? ? LCD_RS = 1;

? ? LCD_RW = 0;

? ? LCD_EN = 0;

? ? P0 = dat;

? ? delayNOP();

? ? LCD_EN = 1;

? ? delayNOP();

? ? LCD_EN = 0;?

}

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

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

/* ?LCD初始化设定 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*/

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

void lcd_init()

{ ? ?

? ? lcd_wcmd(0x34); ? ? ?//扩充指令操作

? ? delay(5);

? ? lcd_wcmd(0x30); ? ? ?//基本指令操作

? ? delay(5);

? ? lcd_wcmd(0x0C); ? ? ?//显示开,关光标

? ? delay(5);

? ? lcd_wcmd(0x01); ? ? ?//清除LCD的显示内容

? ? delay(5);

}

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

/**/

/* 延时x*0.14ms子程序*/

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

void delay0(uchar x) ? ?//x*0.14MS

{

? uchar i;

? while(x--)

?{

? for (i = 0; i<13; i++) {}

?}

}

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

/* 设定显示位置 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*/

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

void lcd_pos(uchar X,uchar Y)

{ ? ? ? ? ? ? ? ? ? ? ? ? ?

? ?uchar ?pos;

? ?if (X==0)

? ? ?{X=0x80;}

? ?else if (X==1)

? ? ?{X=0x90;}

? ?else if (X==2)

51单片机LCD12864液晶C程序_lcd12864

? ? ?{X=0x88;}

? ?else if (X==3)

? ? ?{X=0x98;}

? ?pos = X+Y ; ?

? ?lcd_wcmd(pos); ? ? //显示地址

}

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

/**/

/* 主程序 ? ? ? ? ?*/

/* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */

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

? main()

?{

? ? uchar i;

? ? delay(10); ? ? ? ? ? ? ? ? //延时

? ? lcd_init(); ? ? ? ? ? ? ? ?//初始化LCD ? ? ? ? ? ??

? ? lcd_pos(0,0); ? ? ? ? ? ? //设置显示位置为第一行的第1个字符

? ? ?i = 0;

? ? while(dis1[i] != '')

? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? //显示字符

? ? ? ?lcd_wdat(dis1[i]);

? ? ? ?i++;

? ? ?}

? ? lcd_pos(1,0); ? ? ? ? ? ? //设置显示位置为第二行的第1个字符

? ? ?i = 0;

? ? while(dis2[i] != '')

? ? ?{

? ? ? ?lcd_wdat(dis2[i]); ? ? ?//显示字符

? ? ? ?i++;

? ? ?}

lcd_pos(2,0); ? ? ? ? ? ? //设置显示位置为第三行的第1个字符

? ? ?i = 0;

? ? while(dis3[i] != '')

? ? ?{

? ? ? ?lcd_wdat(dis3[i]); ? ? ?//显示字符

? ? ? ?i++;

? ? ?}

lcd_pos(3,0); ? ? ? ? ? ? //设置显示位置为第四行的第1个字符

? ? ?i = 0;

? ? while(dis4[i] != '')

? ? ?{

? ? ? ?lcd_wdat(dis4[i]); ? ? ?//显示字符

? ? ? ?i++;

? ? ?}

? ? ?while(1);

}

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

  

爱华网本文地址 » http://www.413yy.cn/a/8104470103/280536.html

更多阅读

平板电脑如何与电脑连接 win10平板如何使用

平板电脑如何与电脑连接——简介今天小编给大家分享平板电脑如何与电脑连接。平板电脑如何与电脑连接——工具/原料360手机助手平板电脑如何与电脑连接——方法/步骤平板电脑如何与电脑连接 1、在电脑端安装好360手机助手(电脑版),然

如何将电脑与电视连接 精 小米电视如何连接电脑

如何将电脑与电视连接 精——简介现在数码产品功能越来越完善,相互之间的连接方式也越来多。用线缆连接的话一般有俩种方法,这主要取决于你的电脑显卡的接口或主板上的接口以及电视的接口。现在新出的电视的话甚至可以和笔记本,平板,手

电子琴与电脑连接的几种方法 海尔电钢琴要下载什么

电子琴如何与电脑连接1、买一根MIDI线MIDI是乐器设备数字接口的意思。目前,几乎成为了电脑音乐的代名词,因为,现在的MIDI接口,几乎都是用来连接电脑的。你的电子琴属于比较高档的电子琴,你可以花100多元购买一根MIDI线,一头是圆头(就是接你

c51单片机lcd1602程序调试 lcd1602与单片机连接

#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define lcdio P1sbit lcdrs=P0^0;//数据,指令选择端口sbit lcdea=P0^1; //使能端, 此时第五管脚rw选择端直接接地,因为只写入不用读取uchar num;uchar code ta

声明:《lcd12864与单片机连接 51单片机LCD12864液晶C程序》为网友永杰同心分享!如侵犯到您的合法权益请联系我们删除