app那个网站开发比较好,新网企业邮箱,兰州建设网站的公司,微信公众号开发微网站开发提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、LCD1602是什么#xff1f;二、LCD1602 原理三、显示一个字符四、如何显示四位数五、参考历程六、封装成一个显示 字符和一个显示任意四位数的函数总结 前言… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、LCD1602是什么二、LCD1602 原理三、显示一个字符四、如何显示四位数五、参考历程六、封装成一个显示 字符和一个显示任意四位数的函数总结 前言
提示这里可以添加本文要记录的大概内容
一直用LED和数码管显示LED显示数据不够明显数码管需要动态扫描都不方便那还有什么更方便的显示模块的。最简单的就是LCD1602。 提示以下是本篇文章正文内容下面案例可供参考
一、LCD1602是什么
LCD1602是一种字符型液晶显示模块通常由字符型液晶显示屏、控制驱动主电路HD44780及其扩展驱动电路HD44100以及少量电阻、电容元件和结构件等装配在PCB板上而组成。
二、LCD1602 原理 三、显示一个字符
#define LCD1602_DATAPINS P0
sbit LCD1602_EP2^7;
sbit LCD1602_RWP2^5;
sbit LCD1602_RSP2^6;四、如何显示四位数 五、参考历程
#include reg52.h //---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endif/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_EP2^7;
sbit LCD1602_RWP2^5;
sbit LCD1602_RSP2^6;/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c); //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/
void LcdWriteData(uchar dat);
/*LCD1602初始化子程序*/
void LcdInit(); unsigned int a0;mainvoid main(){// 初始化LCD1602 LcdInit(); LcdWriteCom(0x80);LcdWriteData(a); LcdWriteData(1); LcdWriteData(2); LcdWriteData(3); LcdWriteData(4); // WUZHOU 1234 第一行// 0123456789123456 第二行while(1){a;if(a10000){a0;}LcdWriteCom(0x80);LcdWriteData(a); LcdWriteData(a/1000%100x30); //0x30 将数字转换成字符 acii表LcdWriteData(a/100%100x30); LcdWriteData(a/10%100x30); LcdWriteData(a%100x30); Lcd1602_Delay1ms(2000); }}/*******************************************************************************
* 函 数 名 : Lcd1602_Delay1ms
* 函数功能 : 延时函数延时1ms
* 输 入 : c
* 输 出 : 无
* 说 名 : 该函数是在12MHZ晶振下12分频单片机的延时。
*******************************************************************************/void Lcd1602_Delay1ms(uint c) //误差 0us
{uchar a,b;for (; c0; c--){for (b199;b0;b--){for(a1;a0;a--);} }}/*******************************************************************************
* 函 数 名 : LcdWriteCom
* 函数功能 : 向LCD写入一个字节的命令
* 输 入 : com
* 输 出 : 无
*******************************************************************************/void LcdWriteCom(uchar com) //写入命令
{LCD1602_E 0; //使能LCD1602_RS 0; //选择发送命令LCD1602_RW 0; //选择写入LCD1602_DATAPINS com; //放入命令Lcd1602_Delay1ms(1); //等待数据稳定LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E 0;
}/*******************************************************************************
* 函 数 名 : LcdWriteData
* 函数功能 : 向LCD写入一个字节的数据
* 输 入 : dat
* 输 出 : 无
*******************************************************************************/ void LcdWriteData(uchar dat) //写入数据
{LCD1602_E 0; //使能清零LCD1602_RS 1; //选择输入数据LCD1602_RW 0; //选择写入LCD1602_DATAPINS dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E 0;
}/*******************************************************************************
* 函 数 名 : LcdInit()
* 函数功能 : 初始化LCD屏
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/ void LcdInit() //LCD初始化子程序
{LcdWriteCom(0x38); //开显示LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点
}六、封装成一个显示 字符和一个显示任意四位数的函数
思考
在指定地址显示任意四位数
void lcd_4num(unsigned char dizhi,unsigned int num)
{LcdWriteCom(dizhi);// LcdWriteData(a); LcdWriteData(num/1000%100x30); //0x30 将数字转换成字符 acii表LcdWriteData(num/100%100x30); LcdWriteData(num/10%100x30); LcdWriteData(num%100x30); }调用
lcd_4num(0xc0,a);完整程序 #include reg52.h //---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endif/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_EP2^7;
sbit LCD1602_RWP2^5;
sbit LCD1602_RSP2^6;/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c); //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/
void LcdWriteData(uchar dat);
/*LCD1602初始化子程序*/
void LcdInit();
/*LCD1602 指定地址显示任意四位数*/
void lcd_4num(unsigned char dizhi,unsigned int num);unsigned int a0;mainvoid main(){// 初始化LCD1602 LcdInit(); LcdWriteCom(0x80);LcdWriteData(a); LcdWriteData(1); LcdWriteData(2); LcdWriteData(3); LcdWriteData(4); // WUZHOU 1234 第一行// 0123456789123456 第二行while(1){a;if(a10000){a0;}
// LcdWriteCom(0x80);
// LcdWriteData(a);
// LcdWriteData(a/1000%100x30); //0x30 将数字转换成字符 acii表
// LcdWriteData(a/100%100x30);
// LcdWriteData(a/10%100x30);
// LcdWriteData(a%100x30); lcd_4num(0xc0,a);Lcd1602_Delay1ms(2000); }}/*******************************************************************************
* 函 数 名 : Lcd1602_Delay1ms
* 函数功能 : 延时函数延时1ms
* 输 入 : c
* 输 出 : 无
* 说 名 : 该函数是在12MHZ晶振下12分频单片机的延时。
*******************************************************************************/void Lcd1602_Delay1ms(uint c) //误差 0us
{uchar a,b;for (; c0; c--){for (b199;b0;b--){for(a1;a0;a--);} }}/*******************************************************************************
* 函 数 名 : LcdWriteCom
* 函数功能 : 向LCD写入一个字节的命令
* 输 入 : com
* 输 出 : 无
*******************************************************************************/void LcdWriteCom(uchar com) //写入命令
{LCD1602_E 0; //使能LCD1602_RS 0; //选择发送命令LCD1602_RW 0; //选择写入LCD1602_DATAPINS com; //放入命令Lcd1602_Delay1ms(1); //等待数据稳定LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E 0;
}/*******************************************************************************
* 函 数 名 : LcdWriteData
* 函数功能 : 向LCD写入一个字节的数据
* 输 入 : dat
* 输 出 : 无
*******************************************************************************/ void LcdWriteData(uchar dat) //写入数据
{LCD1602_E 0; //使能清零LCD1602_RS 1; //选择输入数据LCD1602_RW 0; //选择写入LCD1602_DATAPINS dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E 0;
}/*******************************************************************************
* 函 数 名 : LcdInit()
* 函数功能 : 初始化LCD屏
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/ void LcdInit() //LCD初始化子程序
{LcdWriteCom(0x38); //开显示LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点
}void lcd_4num(unsigned char dizhi,unsigned int num)
{LcdWriteCom(dizhi);// LcdWriteData(a); LcdWriteData(num/1000%100x30); //0x30 将数字转换成字符 acii表LcdWriteData(num/100%100x30); LcdWriteData(num/10%100x30); LcdWriteData(num%100x30); }思考字符串
总结