///////////////////////////////////////////////////////////
// 4bit 1602 test code -肋-
// AoM
//////////////////////////////////////////////////////////
#include <reg51.h>
#include <intrins.h> // nop()...
#include <string.h> //if u out of code space... comment this...
// and replace strlen() function...
//////////////////////////////////////////////////////////
#define uchar unsigned char
#define uint unsigned int
////////////////////////////////////////////////////////
sbit LCD_RS = P1^1; //
sbit LCD_RW = P1^2; // R/W select...
sbit LCD_EN = P1^3; // Enable 1602 =肋=
sbit key = P2^5; //meow...
char str1[5]="Meow~";
///////////////////////////////////////////////////////
void delayNOP()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
///////////////////////////////////////////////////////
void delayms(uint ms)
{
uchar t;
while(ms--)
{
for(t = 0; t < 120; t++);
}
}
///////////////////////////////////////////////////////
bit LCD_Busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P1&0x80);
LCD_EN = 0;
return(result);
}
///////////////////////////////////////////////////////
void LCD_Write(bit sts, uchar in_data)
{
uchar Hdata,Ldata;
while(LCD_Busy()); //little snail, little snail try to get grapes...
Hdata=in_data&0xf0; // split high 4bit and low one...
Ldata=(in_data<<4)&0xf0;
LCD_RS = sts;
LCD_RW = 0;
LCD_EN = 0;
delayNOP();
P1 = Hdata;
LCD_RS = sts;
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
delayNOP();
P1 = Ldata;
LCD_RS = sts;
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
delayNOP();
}
///////////////////////////////////////////////////////
void LCD_Init()
{
delayms(15);
LCD_Write(0,0x28);
delayms(5);
LCD_Write(0,0x28);
delayms(5);
LCD_Write(0,0x28);
delayms(5);
LCD_Write(0,0x0c);
delayms(5);
LCD_Write(0,0x06);
delayms(5);
LCD_Write(0,0x01);
}
///////////////////////////////////////////////////////
void DispAChar(uchar X, uchar Y, uchar DData)
{
if (Y)
X |= 0x40;
else
X |= 0x00;
X |= 0x80;
LCD_Write(0,X);
delayms(150);
LCD_Write(1,DData);
}
///////////////////////////////////////////////////////
void DispStr(uchar X, uchar Y, uchar *DData)
{
unsigned char Length,j;
Length = strlen(DData); // use strlen() to get length of string
Y &= 0x1;
X &= 0xF;
if (X <= 0xF)
{
for(j=0;j<Length;j++)
{
DispAChar(X, Y, DData[j]); // Call DispAChar to show a character...
X++;
}
}
}
///////////////////////////////////////////////////////
void main()
{
char a;
key = 1;
LCD_Init();
LCD_Write(0,0x1);
delayms(150); // wait... -肋=
DispAChar(3,1,'a');
delayms(150);
LCD_Write(0,0xf);
delayms(150);
LCD_Write(0,0x1);
delayms(150);
DispAChar(4,0,'c');
delayms(150);
DispStr(1,0,&str1); // use & to get string addressssss....
a = 'a';
while(1)
{
if (key == 0)
DispAChar(0,1,a++);
key= 1;
}
}
///////////////////////////////////////////////////////
// EoF =肋=
///////////
LCD1602 4bit数据线控制程序
需积分: 9 78 浏览量
2011-12-16
21:32:59
上传
评论
收藏 1KB RAR 举报
Cr_BlueWater
- 粉丝: 0
- 资源: 3
最新资源
- 简单的Python示例,演示了如何使用TCP/IP协议进行基本的客户端和服务器通信
- 考试.sql
- keil2 + proteus + 8051.exe
- 1961ee27df03bd4595d28e24b00dde4e_744c805f7e4fb4d40fa3f695bfbab035_8(1).c
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- windows注册表编辑工具
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- 校园通行码预约管理系统20240522075502
- 车类型数据集6250张VOC+YOLO格式.zip
- The PyTorch implementation of STGCN.STGCN-main.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈