单片机源程序如下:
#include <STC12C5A60S2.H>
sbit EN=P2^0; //定义LCD使能信号端
sbit RW=P2^1; //定义LCD读/写选择端
sbit RS=P2^2; //定义LCD数据/命令选择端
#define uchar unsigned char
void delay_ms(unsigned int z);//声明延时毫秒函数
void LCD1602_Init(); //声明LCD初始化函数
void check(); //声明测忙函数
void LCD1602_Write_com(uchar com); //声明LCD确定显示位置函数
void LCD1602_Write_dat(uchar dat); //声明LCD确定显示内容函数
void main()
{
LCD1602_Init();
while(1)
{
LCD1602_Write_com(0x80);
LCD1602_Write_dat(0x34);
}
}
/**********LCD1602初始化函数**********/
void LCD1602_Init()
{
LCD1602_Write_com(0x38); //设置显示模式:两行字符,5*7点阵字符体,8位数据接口
LCD1602_Write_com(0x08); //画面开
LCD1602_Write_com(0x01); //显示清屏
LCD1602_Write_com(0x0c); //显示开,光标关
LCD1602_Write_com(0x06); //操作数据后地址+1,禁止光标移动
}
/**********测忙函数**********/
void check()
{
uchar busy;
P0=0xff;
RS=0;
RW=1;
do
{
EN=1;
busy=P0;
EN=0;
}while(busy&0x80);
}
/**********LCD1602确定显示位置函数**********/
void LCD1602_Write_com(uchar com)
{
check(); //检测LCD是否为忙碌状态,1为繁忙,0为空闲
RS=0;
RW=0;
P0=com;
delay_ms(10);
EN=1;
delay_ms(1);
EN=0;
}
/**********LCD1602确定显示内容函数**********/
void LCD1602_Write_dat(uchar dat)
{
check(); //检测LCD是否为忙碌状态
RS=1;
RW=0;
P0=dat;
delay_ms(10);
EN=1;
delay_ms(1);
EN=0;
}
/**********延时毫秒函数**********/
void delay_ms(unsigned int z)
{
unsigned int x,y;
for(x=0;x<z;x++)
for(y=0;y<200;y++);
}
|