幕布链接
https://www.mubucm.com/doc/hyvFO0_-WG
参考《零基础学51单片机(C语言版)》
1602液晶显示屏静态显示字符
#include<reg51.h>
#include<intrins.h>
sbit RS = P2^4;
sbit RW = P2^5;
sbit EN = P2^6;
#define DataP0 P0
void DelayUs(unsigned char tu)
{
while(--tu);
}
void DelayMs(unsigned char tm)
{
while(tm--)
{
DelayUs(248);
DelayUs(248);
}
}
bit LCD_Check_Busy(void)
{
DataP0=0xFF;
RS=0;
RW=1;
EN=0;
_nop_();
EN=1;
return (DataP0 & 0x80);
}
void LCD_Write_Com(unsigned char command)
{
while(LCD_Check_Busy());
RS=0;
RW=0;
EN=1;
DataP0=command;
_nop_();
EN=0;
}
void LCD_Write_Data(unsigned char Data)
{
while(LCD_Check_Busy());
RS=1;
RW=0;
EN=1;
DataP0=Data;
_nop_();
EN=0;
}
void LCD_Clear(void)
{
LCD_Write_Com(0x01);
DelayMs(5);
}
void LCD_Write_String(unsigned char n,unsigned char m,unsigned char *s)
{
if (m==0)
{
LCD_Write_Com(0x80 +n);
}
else
{
LCD_Write_Com(0xC0 + n);
}
while (*s)
{
LCD_Write_Data(*s);
s++;
}
}
void LCD_Write_Char(unsigned char j,unsigned char k,unsigned char Data)
{
if (k==0)
{
LCD_Write_Com(0x80+j);
}
else
{
LCD_Write_Com(0xC0+j);
}
LCD_Write_Data(Data);
}
void LCD_Init(void)
{
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x08);
LCD_Write_Com(0x01);
LCD_Write_Com(0x06);
DelayMs(5);
LCD_Write_Com(0x0C);
}
void main(void)
{
LCD_Write_Char(7,0,'o');
LCD_Write_Char(8,0,0x6B);
LCD_Write_String(1,1,"www.etv100.com");
while(1);
}
仅供参考
|