您的位置 首页 基础

液晶显示器操控规划

利用LCD1602实现数字和英文字符的显示实验原理图实验程序#include#include#include#include#include#define busy 0x80 //用于检测LCD 状态

使用LCD1602完成数字和英文字符的显现

试验原理图

试验程序

#include

#include

#include

#include

#include

#define busy 0x80 //用于检测LCD 状态字中的Busy 标识

#define RSaddr 0x1000

#define RWaddr 0x2000

#define CSaddr 0x0400

#define adtn 0xc8ff

#define wc 0xcfff

#define wd 0xdfff

#define rc 0xefff

unsigned char code homepage[] = {www.ispdown.com};

unsigned char code email[] = {ispdown@21cn.com};

//5ms 延时

void delay5ms(void)

{

unsigned int TempCyc = 5552;

while(TempCyc–);

}

//———————————-

//400ms 延时

void delay400ms(void)

{

unsigned char TempCycA = 5;

unsigned int TempCycB;

while(TempCycA–)

{

TempCycB=7269;

while(TempCycB–);

};

}

//——————————–

void waitLcd()

{

char temp;

bit flag=1;

while(flag==1)

{

//temp=XBYTE[CSaddr+RWaddr+adtn];

temp=XBYTE[rc];

if (temp>>7==0) flag=0;

P1=temp;

}

P1=0xff;

}

//———————————

void WC_Lcd(bit isCheck,char c)

{

if (isCheck==1) waitLcd();

//XBYTE[CSaddr+adtn]=c;

XBYTE[wc]=c;

}

//——————————–

void WD_Lcd(char c)

{

waitLcd();

//XBYTE[CSaddr+RSaddr+adtn]=c;

XBYTE[wd]=c;

}

//———————————-

void LcdInit()

{

delay5ms();

delay5ms();

delay5ms();

WC_Lcd(0,0×38); //三次显现形式设置,不检测忙信号

delay5ms();

WC_Lcd(0,0×38);

delay5ms();

WC_Lcd(0,0×38);

delay5ms();

WC_Lcd(1,0×38); //显现形式设置,开端要求每次检测忙信号

WC_Lcd(1,0×08); //封闭显现

WC_Lcd(1,0×01); //显现清屏

WC_Lcd(1,0×06); // 显现光标移动设置

WC_Lcd(1,0x0C); // 显现开及光标设置

}

//————————————————————————-

//按指定方位显现一个字符

void displayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

{

Y = 0x1;

X = 0xF; //约束X 不能大于15,Y 不能大于1

if (Y) X |= 0x40; //当要显现第二行时地址码+0x40;

X |= 0x80; //算出指令码

WC_Lcd(0,X); //这儿不检测忙信号,发送地址码

WD_Lcd(DData);

}

//——————————————————————————-

//按指定方位显现一串字符

void displayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)

{

unsigned char ListLength;

ListLength = 0;

Y = 0x1;

X = 0xF; //约束X 不能大于15,Y 不能大于1

while (DData[ListLength]>0x20) //若抵达字串尾则退出

{

if (X = 0xF) //X 坐标应小于0xF

{

displayOneChar(X, Y, DData[ListLength]); //显现单个字符

ListLength++;

X++;

}

}

}

//====================================

void main(void)

{

delay400ms();

LcdInit();

displayListChar(0, 0, homepage);

displayListChar(0, 1, email);

while(1);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/291684.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部