📄 lcd_0802.c
字号:
/*
* Copyright (c) 2005, nuaa
* All rights reserved.
*
* lirui
* v1.0
* 2005.8.10
*
**/
#include<reg52.h>
#include<string.h>
#define uint unsigned int
#define uchar unsigned char
#define Data P2
#define LCDLEN 16//显示屏最大显示数
#define LINELEN 8//每行最大显示数
sbit D0 = P2^0;
sbit D1 = P2^1;
sbit D2 = P2^2;
sbit D3 = P2^3;
sbit D4 = P2^4;
sbit D5 = P2^5;
sbit D6 = P2^6;
sbit D7 = P2^7;
sbit LcdE = P0^0;//使能信号控制
sbit LcdRW = P0^1;//读写信号控制
sbit LcdRS = P0^2;//寄存器选择信号
void SysInit(void);//系统初始化
void LcdInit(void);//显示屏初始化
void LcdSet(int imod);//显示屏功能设定
void LcdShMod(int ishmod);//显示模式设定
void LcdSrClr(void);//清屏
void LcdSrOn(void);//开显示屏
void LcdSrOff(void);//关显示屏
void LcdWrite(uint lwcode);//写数据寄存器
void LcdAdrWrt(uint addr);//写地址数据
void LcdLineCh(void);//转行显示
void LcdShowStr(char Digit[], int refspeed);//显示字符串,当字符串过长将报错。
void Delay(int time);//延时
void ComSend(void);//指令发送
void main(void)
{
uint i=0;
uint ishow = 0x31;
SysInit();
LcdInit();
LcdShowStr("Date:", 3000);
Delay(30000);
LcdLineCh();
LcdShowStr("05-8-10", 30000);
for (;;);
}
void LcdInit(void)
{
Delay(1000);
LcdSet(0x38);
Delay(400);
LcdSet(0x38);
Delay(80);
LcdSet(0x38);
Delay(20);
LcdSet(0x38);
LcdSrOff();
LcdSrClr();
LcdShMod(0x6);
LcdSrOn();
}
void LcdSet(int imod)
{
Data = imod;
ComSend();
}
void LcdSrClr(void)
{
Data = 0x1;
ComSend();
}
void LcdSrOn(void)
{
Data = 0xf;
ComSend();
}
void LcdSrOff(void)
{
Data = 0x8;
ComSend();
}
void LcdShMod(int ishmod)
{
Data = ishmod;
ComSend();
}
void LcdWrite(uint lwcode)
{
LcdRS = 1;
Data = lwcode;
ComSend();
LcdRS =0;
Delay(10);
}
void LcdAdrWrt(uint addr)
{
Data = addr;
ComSend();
}
void LcdLineCh(void)
{
LcdAdrWrt(0xc0);
}
void LcdShowStr(char Digit[], int refspeed)
{
int i=0;
int istrlen=0;
istrlen = strlen(Digit);
if (istrlen > 16)
{
LcdShowStr("Erro!!", 300);
}
else
{
for (i=0; i<istrlen; i++)
{
if (i == LINELEN)
{
LcdLineCh();
}
LcdWrite(Digit[i]);
Delay(refspeed);
}
}//end of else
}
void Delay(int time)
{
while(time--);
}
void ComSend(void)
{
Delay(100);
LcdE = 1;
Delay(50);
LcdE = 0;
Delay(10);
}
void SysInit(void)
{
P0 = 0;
P1 = 0;
P2 = 0;
P3 = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -