当前位置: 首页 > news >正文

宽屏企业网站源码百度网盘客服中心电话

宽屏企业网站源码,百度网盘客服中心电话,温岭建设阳光网站,wix做的网站 网址是什么文章目录 一、介绍LCD1602介绍引脚以及应用电路内部结构框图存储器结构DDRAM数据显示区CGROM中字符码与字符关系表ASCII码对照表 时序结构LCD1602指令集LCD1602操作流程 二、重写显示函数关键函数写入命令与写入数据所有实现代码 注意 一、介绍LCD1602 介绍 引脚以及应用电路 …

文章目录

  • 一、介绍LCD1602
    • 介绍
    • 引脚以及应用电路
    • 内部结构框图
    • 存储器结构
      • DDRAM数据显示区
      • CGROM中字符码与字符关系表
      • ASCII码对照表
    • 时序结构
    • LCD1602指令集
    • LCD1602操作流程
  • 二、重写显示函数
    • 关键函数写入命令与写入数据
    • 所有实现代码
  • 注意


一、介绍LCD1602

介绍

在这里插入图片描述

引脚以及应用电路

在这里插入图片描述
在这里插入图片描述

内部结构框图

在这里插入图片描述

存储器结构

DDRAM数据显示区

在这里插入图片描述

CGROM中字符码与字符关系表

注意:与ASCII码表所对应的数据不完全一致

在这里插入图片描述

ASCII码对照表

在这里插入图片描述

时序结构

读操作
在这里插入图片描述
写操作
在这里插入图片描述

LCD1602指令集

在这里插入图片描述

LCD1602操作流程

本次案例要使用的流程如下

在这里插入图片描述
在这里插入图片描述

二、重写显示函数

关键函数写入命令与写入数据

根据上面指令集与时序结构写出写入命令与写入数据函数

/*** @brief		发送指令* @param		Command,指令值* @retval	无*/
void LCD_WriteCommand(unsigned char Command){LCD_RS = 0;LCD_WR = 0;							// 写入模式LCD_DataPort = Command;	// 写入引脚LCD_EN = 1;							// 允许写入LCD_Delayms(1);					// 等待指令写入LCD_EN = 0;							// 还原电平LCD_Delayms(1);
}
/*** @brief		发送数据* @param		Data,数据值* @retval	无*/
void LCD_WriteData(unsigned char Data){LCD_RS = 1;						// 读取模式LCD_WR = 0;							LCD_DataPort = Data;	// 写入引脚LCD_EN = 1;							// 允许写入LCD_Delayms(1);					// 等待指令写入LCD_EN = 0;							// 还原电平LCD_Delayms(1);
}

所有实现代码

LCD1602.c

#include <REGX52.H>
#include <intrins.h>
// 引脚声明
sbit LCD_RS = P2^6;
sbit LCD_WR = P2^5;
sbit LCD_EN = P2^7;
// 输入接口
#define LCD_DataPort P0// 延时函数
void LCD_Delayms(unsigned char x)	//@11.0592MHz
{unsigned char data i, j;while(x--){_nop_();i = 2;j = 199;do{while (--j);} while (--i);}
}
/*** @brief		发送指令* @param		Command,指令值* @retval	无*/
void LCD_WriteCommand(unsigned char Command){LCD_RS = 0;LCD_WR = 0;							// 写入模式LCD_DataPort = Command;	// 写入引脚LCD_EN = 1;							// 允许写入LCD_Delayms(1);					// 等待指令写入LCD_EN = 0;							// 还原电平LCD_Delayms(1);
}
/*** @brief		发送数据* @param		Data,数据值* @retval	无*/
void LCD_WriteData(unsigned char Data){LCD_RS = 1;						// 读取模式LCD_WR = 0;							LCD_DataPort = Data;	// 写入引脚LCD_EN = 1;							// 允许写入LCD_Delayms(1);					// 等待指令写入LCD_EN = 0;							// 还原电平LCD_Delayms(1);
}
/*** @brief		初始化函数* @param		无* @retval	无*/
void LCD_Init(void){LCD_WriteCommand(0x38);LCD_WriteCommand(0x0c);LCD_WriteCommand(0x06);LCD_WriteCommand(0x01);
}
/*** @brief		将行、列转换为DDRAM的地址并写入* @param		Row,行		Col,列* @retval	无*/
void LCD_SetAC(unsigned char Row,unsigned char Col){// 将行、列转换为DDRAM的地址if(Row == 1){LCD_WriteCommand(0x80 | (Col - 1));}else{LCD_WriteCommand((0x80 | (Col - 1)) + 0x40);}
}
/*** @brief		显示一个字符* @param		Row 行,Col 列,Char 显示的字符* @retval	无*/
void LCD_ShowChar(unsigned char Row,unsigned char Col,unsigned char Char){LCD_SetAC(Row,Col);LCD_WriteData(Char);
}
/*** @brief		显示一段字符串* @param		Row 行,Col 列,*String 显示的字符数组首地址* @retval	无*/
void LCD_ShowString(unsigned char Row,unsigned char Col,unsigned char* String){unsigned char i;LCD_SetAC(Row,Col);// 判断一位写一位,与AC(光标)同步跳转for(i = 0;String[i]!='\0';i++){LCD_WriteData(String[i]);}
}
/*** @brief		指数函数* @param		x 底数,y 指数* @retval	result 返回x的y次方*/
unsigned char Pow(unsigned char x,unsigned char y){unsigned char result = 1,i;for(i=0;i<y;i++){result *= x;}return result;
}
/*** @brief		显示一个数字* @param		Row 行,Col 列,Num 显示的数字,Length 显示的长度* @retval	无*/
void LCD_ShowNum(unsigned char Row,unsigned char Col,unsigned int Num,unsigned char Length){unsigned char i;LCD_SetAC(Row,Col);// 判断一位写一位,与AC(光标)同步跳转for(i = Length;i>0;i--){LCD_WriteData(0x30+Num/Pow(10,i-1)%10);	// 转化为ASCII码}
}
/*** @brief		显示一个有符号数* @param		Row 行,Col 列,Num 显示的数字,Length 显示的长度* @retval	无*/
void LCD_ShowSignedNum(unsigned char Row,unsigned char Col,int Num,unsigned char Length){unsigned char i;unsigned int Num1;LCD_SetAC(Row,Col);if(Num>=0){LCD_WriteData('+');Num1 = Num;}else{LCD_WriteData('-');Num1 = -Num;	// 最大负值取反后会栈溢出,使用定义一个无符号的数来接收}// 判断一位写一位,与AC(光标)同步跳转for(i = Length;i>0;i--){LCD_WriteData(0x30+Num1/Pow(10,i-1)%10);	// 转化为ASCII码}
}
/*** @brief		显示一个十六进制数* @param		Row 行,Col 列,Num 显示的数字,Length 显示的长度* @retval	无*/
void LCD_ShowHexNum(unsigned char Row,unsigned char Col,unsigned int Num,unsigned char Length){unsigned char i;unsigned char Num_Flag;LCD_SetAC(Row,Col);// 判断一位写一位,与AC(光标)同步跳转for(i = Length;i>0;i--){Num_Flag = Num/Pow(16,i-1)%16;if(Num_Flag<10){LCD_WriteData('0'+Num_Flag);}else{LCD_WriteData('A'+Num_Flag-10);}}
}
/*** @brief		显示一个二进制数* @param		Row 行,Col 列,Num 显示的数字,Length 显示的长度* @retval	无*/
void LCD_ShowBinNum(unsigned char Row,unsigned char Col,unsigned int Num,unsigned char Length){unsigned char i;LCD_SetAC(Row,Col);// 判断一位写一位,与AC(光标)同步跳转for(i = Length;i>0;i--){LCD_WriteData(0x30+Num/Pow(2,i-1)%2);		// 二进制转换}
}

注意

有符号和无符号数之间转换时要注意栈溢出问题,例如 1111 1111转化为有符号数,那么第一位就变成了符号位,相当于最大为-0111 1111,就会栈溢出

http://www.shuangfujiaoyu.com/news/57147.html

相关文章:

  • ug编程培训seo海外
  • 做网站ps注意事项太原网站关键词排名
  • 文章更新对网站有什么好处阿里指数
  • 制作网页方案武汉seo关键词排名
  • 如果给公司网站做网络广告百度指数分析报告
  • 深圳品牌做网站公司哪家好谷歌广告开户
  • wordpress 后台相册管理朝阳区seo搜索引擎优化怎么样
  • 网站友情链接建设网络开发
  • 版权下如何做免费电影网站商品标题关键词优化
  • 国外有趣的网站青海百度关键词seo
  • 自己做网站还是挂靠好青岛网站制作公司
  • 网站里面怎么做数字滚动seo外包收费
  • 更换wordpress后台域名seo推广营销公司
  • 好sf123网站123自己怎么做引流推广
  • 雄安移动网站建设企业网站建设流程
  • 花钱做网站要多少钱郑州短视频代运营公司
  • 前端网站demo高级搜索引擎
  • 手机网站整站模板下载工具百度关键词数据
  • 深圳旅游网站开发推广计划怎么做推广是什么
  • 吉林网站制作选择乐云seo香港旺道旺国际集团
  • 阿土伯网站做产品推广咋样seo优化点击软件
  • 网站建设柒金手指花总14行业关键词搜索量排名
  • wordpress博客站点地图竞价排名适合百度这样的网络平台吗
  • 如何用iis做网站珠海网站建设优化
  • 做微商自己建网站合适吗网站新域名查询
  • 大连网站seo搜索优化待遇
  • wordpress 上传rarseo整站优化什么价格
  • 自助建站系统免授权版热门搜索关键词
  • 做个网站怎么赚钱广州市口碑seo推广
  • dw网站模板下载百度网站收录