当前位置:首页 > 单片机 > 单片机
[导读] 利用LCD1602实现数字和英文字符的显示实验原理图实验程序#include#include#include#include#include#define busy 0x80 //用于检测LCD 状态字中的Busy 标识#define RSaddr 0x1000#define RWaddr 0x2000#define CSadd

 利用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,0x38); //三次显示模式设置,不检测忙信号

delay5ms();

WC_Lcd(0,0x38);

delay5ms();

WC_Lcd(0,0x38);

delay5ms();

WC_Lcd(1,0x38); //显示模式设置,开始要求每次检测忙信号

WC_Lcd(1,0x08); //关闭显示

WC_Lcd(1,0x01); //显示清屏

WC_Lcd(1,0x06); // 显示光标移动设置

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);

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

共创包容性数字未来 新加坡2024年5月8日 /美通社/ -- 5月29日至31日,亚洲旗舰科技平台新加坡亚洲科技大会(Asia Tech x Singapore,简称AT...

关键字: 新加坡 ATX AN TE

深圳2024年5月6日 /美通社/ -- 从4月23日的一场大会开始,到24-26日的IOTE会展节,我们共同见证了物联网领域的最新技术、产品和解决方案的集中展示,感受到了AIoT释放数字经济潜力的巨大能量。今天以展商满...

关键字: IoT 物联网 TE AIOT

德国斯图加特和加利福尼亚州普莱森顿2024年4月16日 /美通社/ -- 全球高科技设施设计、工程和交付的领先企业Exyte宣布,计划收购全球领先的安装服务、设备和技术设施管理提供商—Kinetics集团(简称"Kine...

关键字: NET TI TE IC

液晶显示器作为现代计算机系统和各种电子设备中的核心输出部件,其稳定性和可靠性直接影响着用户的使用体验。然而,在长期使用过程中,液晶显示器难免会遇到一些故障问题。本文旨在提供一份详细的液晶显示器维修教程,涵盖故障识别、基本...

关键字: 液晶显示器 液晶显示器维修

以下内容中,小编将对液晶显示器的相关内容进行着重介绍和阐述,希望本文能帮您增进对液晶显示器的了解,和小编一起来看看吧。

关键字: 显示器 液晶显示器

在显示技术日新月异的今天,液晶显示器(LCD)已成为众多电子设备中的核心组件。为了确保不同型号、规格的LCD显示器能够与各种主机设备兼容,LCD转接板应运而生。本文将对LCD转接板的概念、功能、应用及其重要性进行详尽阐述...

关键字: 液晶显示器 电子设备 LCD转接板

上海2023年9月25日 /美通社/ -- 在9月20日举行的2023华为全联接大会(Huawei Connect 2023) TECH4ALL峰会,邀请全球TECH4ALL合作伙伴,针对科技与伙伴关系在支持创造更平等、...

关键字: 华为 TE AI SI

深圳2023年9月22日 /美通社/ -- 9月20 - 9月22日,全球物联网行业的重要盛会"IOTE 2023国际物联网展"在深圳国际会展中心 (宝安) 盛大启幕。全球领先的移动通信物联网平台 —...

关键字: 智能制造 物联网 TE IoT

科威特科威特城2023年9月21日 /美通社/ -- 秉承去年突破性科技、金融和数字银行创新峰会的势头,/MoneyTech将于11月12日重返科威特。  请在 aljaridasummits.com ...

关键字: MONEY TE BSP MIT

苏州太仓2023年9月21日 /美通社/ -- 2023年9月21日,施迈茨公司庆祝了以"施迈茨(中国)有限公司开业典礼暨施迈茨深耕中国20年"为主题的活动。 施迈茨集团成立于1910年,总部位于德...

关键字: 自动化 BSP 元器件 TE
关闭
关闭