STC12C5A60S2在LCD1602基本显示程序
生活随笔
收集整理的这篇文章主要介绍了
STC12C5A60S2在LCD1602基本显示程序
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
#include <STC12C5A60S2.H>/*=================================================
*自定义数据类型
=================================================*/
typedef unsigned char uchar;
typedef unsigned int uint;#define LCD1602_DB P0 //LCD1602数据总线sbit LCD1602_RS = P3^5; //RS端
sbit LCD1602_RW = P3^6; //RW端
sbit LCD1602_EN = P3^4; //EN端/*=================================================
*函数名称:Read_Busy
*函数功能:判断1602液晶忙,并等待
=================================================*/
void Read_Busy()
{uchar busy;LCD1602_DB = 0xff;//复位数据总线LCD1602_RS = 0; //拉低RSLCD1602_RW = 1; //拉高RW读do{LCD1602_EN = 1;//使能ENbusy = LCD1602_DB;//读回数据LCD1602_EN = 0; //拉低使能以便于下一次产生上升沿}while(busy & 0x80); //判断状态字BIT7位是否为1,为1则表示忙,程序等待
}
/*=================================================
*函数名称:LCD1602_Write_Cmd
*函数功能:写LCD1602命令
*调用:Read_Busy();
*输入:cmd:要写的命令
=================================================*/
void LCD1602_Write_Cmd(uchar cmd)
{Read_Busy(); //判断忙,忙则等待LCD1602_RS = 0;LCD1602_RW = 0; //拉低RS、RW操作时序情况1602课件下中文使用说明基本操作时序章节LCD1602_DB = cmd;//写入命令LCD1602_EN = 1; //拉高使能端 数据被传输到LCD1602内LCD1602_EN = 0; //拉低使能以便于下一次产生上升沿
}
/*=================================================
*函数名称:LCD1602_Write_Dat
*函数功能:写LCD1602数据
*调用:Read_Busy();
*输入:dat:需要写入的数据
=================================================*/
void LCD1602_Write_Dat(uchar dat)
{Read_Busy();LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DB = dat;LCD1602_EN = 1;LCD1602_EN = 0;
}
/*=================================================
*函数名称:LCD1602_Dis_OneChar
*函数功能:在指定位置显示一个字符
*调用:LCD1602_Write_Cmd(); LCD1602_Write_Dat();
*输入:x:要显示的横坐标取值0-40,y:要显示的行坐标取值0-1(0为第一行,1为第二行)dat:需要显示的数据以ASCLL形式显示
=================================================*/
void LCD1602_Dis_OneChar(uchar x, uchar y,uchar dat)
{if(y) x |= 0x40;x |= 0x80;LCD1602_Write_Cmd(x);LCD1602_Write_Dat(dat);
}
/*=================================================
*函数名称:LCD1602_Dis_Str
*函数功能:在指定位置显示字符串
*调用:LCD1602_Write_Cmd(); LCD1602_Write_Dat();
*输入:x:要显示的横坐标取值0-40,y:要显示的行坐标取值0-1(0为第一行,1为第二行)*str:需要显示的字符串
=================================================*/
void LCD1602_Dis_Str(uchar x, uchar y, uchar *str)
{if(y) x |= 0x40;x |= 0x80;LCD1602_Write_Cmd(x);while(*str != '\0'){LCD1602_Write_Dat(*str++);}
}
/*=================================================
*函数名称:Init_LCD1602
*函数功能:1602初始化
*调用: LCD1602_Write_Cmd();
=================================================*/
void Init_LCD1602()
{LCD1602_Write_Cmd(0x38); // 设置16*2显示,5*7点阵,8位数据接口LCD1602_Write_Cmd(0x0c); //开显示LCD1602_Write_Cmd(0x06); //读写一字节后地址指针加1LCD1602_Write_Cmd(0x01); //清除显示
}void main()
{uchar TestStr[] = {"Hello World!"};uchar str[] = {"LCD1602 display"};Init_LCD1602();//1602初始化LCD1602_Dis_Str(0, 0, &TestStr[0]); //显示字符串LCD1602_Dis_Str(0, 1, &str[0]); //显示字符串LCD1602_Dis_OneChar(15, 1, 0xff); //显示一个黑方格 请查表while(1);
}
总结
以上是生活随笔为你收集整理的STC12C5A60S2在LCD1602基本显示程序的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Redis的常用功能
- 下一篇: 网络技巧:想要WiFi信号满格,路由器应