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

深圳西丽网站建设网页设计尺寸怎么测量

深圳西丽网站建设,网页设计尺寸怎么测量,wordpress回复邮件,快速制作网站文章目录 一、介绍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.yayakq.cn/news/21242/

相关文章:

  • 免费网站推荐货源网站建设 外文文献
  • 网站项目签约怎么直播带货卖东西
  • ppt模板怎么做 下载网站wordpress页面里可不可以写php
  • 做网站挣外快seo01
  • 摄影 网站 模板html怎么下载安装
  • 青岛网站建设价格游戏网页制作模板
  • 简介网站建设流程套模板网站建设
  • dw怎样做网站链接安庆高端网站建设公司
  • 摄影网站的制作广州网站设计教程
  • 潍坊个人网站制作代码编程基础知识
  • 创建网站无法播放视频个人网站怎么做收款链接
  • 做网站收费提供低价网站建设
  • 宁波好品质品牌网站设计哪家好做外贸网站企业
  • 池州专业网站建设丽水市做网站的
  • 网上购物的网站有哪些wordpress自动采集aote
  • 网站系统制作教程物流网站设计论文
  • 百度网站优化 件游戏网站开发难度
  • 矿大师德建设网站12个优秀平面设计素材网站
  • 杭州网站建设图片胶州市城乡建设局网站
  • 做衣服外贸用什么网站好广州海珠区培训机构网站建设
  • 企业宣传片制作宁波市网站排名优化
  • 为什么网站有不同的扩展名平面设计师招聘广告文案
  • 捷信做单网站西安网站制作模板
  • 长沙哪家网站公司淘宝佣金推广网站建设
  • 服装网站建设项目规划书秦都区建设局网站
  • 做精彩网站分析的方向是wordpress 建站系统
  • 都匀经济开发区建设局网站青岛外贸网站建站公司
  • 资讯门户类网站模板微信crm客户管理系统
  • 萍乡企业网站建设影视公司网页设计
  • 网站建设推广公司排名深圳网站制作880