基于51单片机的1602显示程序。
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="Eaz0";
uchar code table1[]="abc asdfg qwe";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
void delay(uint z);
void write_com(uchar com);
void write_data(uchar date);
void init();
uchar num;
int main()
{
init();
while(1)
{
write_com(0x80);
for(num=0;num<4;num++)
{
write_data(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<13;num++)
{
write_data(table1[num]);
delay(5);
}
}
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void write_com(uchar com)
{
lcdrs=0;
P2=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P2=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
单片机 1602 液晶屏 检测是否忙对的c程序,看不懂,望详解
void busy_test()//检测lcd是否忙{ u8 st; //忙状态标志 0:不忙,0x80:忙 if(f_init==0) //如果某个东西没有初始化 { return; // 退出忙判断,不执行下面的代码 } lcd=0xff; // 先往数据端口赋高电平,便于读数据 rs=0; // 读忙设置 rw=1;//读 do { e=1; // 数据端口读写使能 st=lcd; // 读数据端口的值 e=0; // 禁止数据端口读写 } while(st&0x80); // 如果忙位BF为1,就一直读端口数据,直到为0才退出忙判断。 // BF:忙标志位,为数据端口的BIT7位。所以为0x80}
51单片机液晶1602的C程序谁有,给个简单的显示一个字符A的
#include "reg52.h"
sbit LED=P1^0;//LED锁存器
sbit SEG=P1^1;//数码管段选锁存器
sbit DIG=P1^2;//数码管位选锁存器
unsigned char t;
sbit LCDRS=P2^7;//数据指令控制
sbit LCDRW=P2^6;//读写控制
sbit LCDEN=P2^5;//液晶屏使能控制
//**********延时函数,延时n*1ms*********
void delay(unsigned char n)
{
int i,j;
for (i=0; i<n; i++)
for (j=0; j<100; j++)
;
}
//*************写命令***************
void Write_Cmd(unsigned char C)
{
LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令
LCDRS=0;//指令寄存器选择
P0=C;
delay(5);
LCDEN=0;
}
//**************写数据**************
void Write_Data(unsigned char D)
{
LCDEN=1;//使能端,由高电平跳变成低电平时,液晶屏模块执行命令
LCDRS=1;//选择数据寄存器
P0=D;
delay(5);
LCDEN=0;
}
//**********LCD初始化*****************
void LCD_Init()
{
LCDRS=0;//指令寄存器选择
Write_Cmd(0x01);//清屏
Write_Cmd(0x38);//功能设置8位双行显示5*7点阵
Write_Cmd(0x0F);//开关显示设置
Write_Cmd(0x06);//输入方式设置,光标从左向右移动,内容不移动
}
void main()
{
unsigned char Code1[]="I LOVE MCU!";
unsigned char m;
//LED,数码管锁存器片选设置
LED=0;
DUAN=0;
WEI=0;
LCDRW=0;//写选择
LCD_Init();
Write_Cmd(0x80+0x01);//写入显示缓冲区起始地址为1行2列
for(m=0;m<11;m++)
{
Write_Data(Code1[m]);
delay(3);
}
while (1)
;
}//end of main