当前位置:首页 > 显示光电 > 显示光电
[导读]************************************************** *yj.c *连线图: * DB0---DPROT.0 DB4---DPROT.4 RS-------------P2.5 * DB1---DPROT.1 DB5---DPROT.5 RW-------------P2.6 * DB2---DPROT.2 DB6---DPROT.6

**************************************************
*yj.c
*连线图:
* DB0---DPROT.0 DB4---DPROT.4 RS-------------P2.5
* DB1---DPROT.1 DB5---DPROT.5 RW-------------P2.6
* DB2---DPROT.2 DB6---DPROT.6 E--------------P2.7
* DB3---DPROT.3 DB7---DPROT.7 VLCD接10K可调电阻到GND*
*80C51的晶振频率为12MHz
*液晶显示程序
***************************************************/
#include "reg51.h"
#include
#include
#define DPORT P0
#define uchar unsigned char
sbit RS = P2^5;
sbit RW = P2^6;
sbit E = P2^7;

uchar Xpos; //列方向地址指针
uchar Ypos; //行方向地址指针


#define NoDisp 0
#define NoCur 1
#define CurNoFlash 2
#define CurFlash 3
/*延时程序
由Delay参数确定延迟时间
*/

void LcdWcn(uchar);
void LcdWc(uchar);
void WriteChar(uchar);
void LcdPos();
void LcdWd(uchar);
void LcdWdn(uchar);


void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}

/*光标设置命令
Cur 为设定光标参数
*/
void SetCur(uchar Cur)
{ switch(Cur)
{ case 0x0:
{ LcdWc(0x08); //关显示
break;
}
case 0x1:
{ LcdWc(0x0c); //开显示但无光标
break;
}
case 0x2:
{ LcdWc(0x0e); //开显示有光标但不闪烁
break;
}
case 0x3:
{ LcdWc(0x0f); //开显示有光标且闪烁
break;
}
default: break;
}
}
/*清屏命令
*/
void ClrLcd()
{ LcdWc(0x01);
}
/*在指定的行与列显示
*/
void WriteChar(uchar c)
{ LcdPos();
LcdWd(c);
}
/*正常读写操作之前检测LCD控制器
*/
void WaitIdle()
{ uchar tmp;
DPORT=0xff;
RS=0;
RW=1;
E=1;
_nop_();
for(;;)
{ tmp=DPORT;
tmp&=0x80;
if(tmp==0)
break;
}
E=0;
}

/*不检测忙的写字符子程序
*/
void LcdWdn(uchar c)
{
RS=1;
RW=0;
DPORT=c; //写入待写字符
E=1;
_nop_();
E=0;
}
/*带忙检测的写字符子程序
*/
void LcdWd(uchar c)
{ WaitIdle();
LcdWdn(c);
}

/*检测忙信号的送控制字子程序*/
void LcdWcn(uchar c)
{ RS=0;
RW=0;
DPORT=c;
E=1;
_nop_();
E=0;
}
/*检测忙信号的送控制字子程序*/
void LcdWc(uchar c)
{ WaitIdle();
LcdWcn(c);
}
void LcdPos()
{ uchar tmp;
Xpos&=0x0f; //16xx型液晶的范围是0~15
Ypos&=0x01; //Y的范围是0~1
tmp=Xpos;
if(Ypos==1)
{ tmp+=0x40;
}
tmp|=0x80;
LcdWc(tmp);
}

/*LCD的复位程序
*/
void RstLcd()
{ mDelay(15); //延时15ms
LcdWcn(0x38);
mDelay(5);
LcdWcn(0x38);
mDelay(5);
LcdWcn(0x38);

LcdWc(0x38);
LcdWc(0x08);
LcdWc(0x01);
LcdWc(0x06);
LcdWc(0x0c);
}

void WriteString(char s[])
{ uchar pS=0;
for(;;)
{ WriteChar(s[pS]);
pS++;
if(s[pS]==0)
break;
if(++Xpos>=15) //每行最多显示16个字符
break;
}
}

void main()
{ uchar s1[]="Hellow World!";
RstLcd(); //复位LCD
ClrLcd();
SetCur(CurFlash); //光标显示且闪烁
Xpos=2;
Ypos=1;
WriteString(s1);
for(;;)
{;}
}
 

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

上海2025年8月19日 /美通社/ -- 随着科技的迅速发展,零售市场正经历前所未有的变革。消费者对便捷、高效且安全的购物体验需求日益提升,促使零售业者积极寻求创新解决方案,以提升服务质量与营运效率。根据市场研究机构G...

关键字: POS 平板 电子 BSP

北京 2025年7月9日 /美通社/ -- 随着暑期研学游热潮持续升温,研学旅游产业迎来发展黄金期。近日,全牌照支付机构易生支付与河北唐山鸾栖 1403 研学基地达成深度合作,通过部署集收款、分账、管理功能于一体的综合...

关键字: BSP 数字化 POS 手持终端

在现代电子制作和嵌入式系统开发中,四位数码管数字秒表是一个经典且实用的项目。它不仅能够展示时间计数的功能,还能作为学习数码管显示、微控制器编程以及中断处理等知识的良好实践。本文将详细介绍一个基于STM32微控制器的四位数...

关键字: 四位数码管 数字秒表 源程序

宁波2024年11月14日 /美通社/ -- 11月13日,2024中国(江西)工业互联网创新发展大会暨平台赋能中小企业数字化转型活动在南昌召开。会上,2024年跨行业跨领域工业互联网平台动态评价结果正式发布(以下简称&...

关键字: POS 工业互联网 数字化 操作系统

宁波2024年11月5日 /美通社/ -- 日前,全球领先的IT市场研究和咨询公司IDC公布了《IDC MarketScape: 中国数字工厂整体解决方案厂商评估,2024》。其中,蓝卓成功入选IDC中国数字工厂整体解决...

关键字: IDC POS APP MARKET

在当今科技飞速发展的时代,液晶显示屏(LCD)作为信息显示的核心组件,广泛应用于智能手机、平板电脑、智能手表等小尺寸电子设备中。然而,随着屏幕尺寸的缩小和分辨率的提升,小尺寸液晶显示屏的横纹不良问题逐渐凸显,成为影响用户...

关键字: 液晶显示 智能手机

宁波2024年9月9日 /美通社/ -- 9月6日,第十四届智慧城市与智能经济博览会(以下简称智博会)开幕主题活动在宁波举办。本届智博会着重围绕“数字赋能新型工业化”主题,设置开幕活动、展览展示和前瞻研讨、产数合作、赛事...

关键字: POS 数字化 工业化 集成

阿联酋迪拜2024年5月14日 /美通社/ -- 5月14日,迪拜智能卡支付及零售展览会(Seamless Middle East)隆重开幕。紫光同芯再度携金融、电信、身份识别领域的核心产品出海,展示其在身份识别与金融支...

关键字: 紫光 SE EAST POS

5月14日,迪拜智能卡支付及零售展览会(Seamless Middle East)开幕,紫光同芯携带其在金融、电信、身份识别领域的核心产品参展,包括金融IC卡、USB-Key、智能POS在内的多种支付解决方案。特别是其指...

关键字: 智能卡 紫光 POS ESIM

液晶显示器(Liquid Crystal Display,简称LCD)作为一种广泛应用于电视、电脑显示器、手机以及各类电子产品的显示技术,其发展历程与科技创新紧密相连。LCD技术以其独特的构造和工作原理,在过去的几十年里...

关键字: LCD 液晶显示
关闭