欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

STC12C5A60S2在LCD1602基本显示程序

发布时间:2023/12/10 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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基本显示程序的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。