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

图书馆网站结构怎么做如何自己做淘宝客网站

图书馆网站结构怎么做,如何自己做淘宝客网站,彬县网招聘,礼品网站如何做文章目录 一、介绍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/781020/

相关文章:

  • 淘宝联盟怎样建设网站三合一网站cms
  • 怎么编写自己的网站图片版小说网站源码
  • 做 网站 技术支持 抓获 互助省直部门门户网站建设
  • 建立网站加强家园沟通和联系的利弊手机优化软件哪个好
  • 沈阳网站关键词优化公司绍兴专门做网站的公司
  • 毕业设计是做网站设计手机主题制作网站
  • 自己做的网站如何上传个人公司网页如何设计
  • 动易网站管理系统下载人社系统网站一体化建设方案
  • 怎么建立一个网站开展业务制作简历网站开发
  • 做网站除了广告还有什么收入的微信开发商
  • 搜一搜站长工具wordpress 打不开
  • 公司网站怎么发布文章国内最好的危机公关公司
  • seo学习网站建网站用什么软件好
  • 团购网站开发语言免费招聘网站有哪些
  • 购物网站建设 费用wordpress难用
  • 网站备案后会被注销吗手机做直播官方网站
  • 我想做服装网站怎么做自己做物流网站
  • 网站增值服务Dedecms手机网站源码
  • 免费的个人简历模板下载东莞网络优化排名
  • 有关小城镇建设的网站信主网站
  • 微网站建设招聘如何经营电商平台
  • windows 2003建设网站网站vr用什么做
  • 适合高中生做网站的主题免费网页推广
  • 网站开发支付宝提现江西建设安全网站
  • 阿里巴巴外贸网站首页建设一个旅游平台网站需要多少资金
  • 做微信公众号页面的网站用自己的电脑做服务器建网站
  • 网站本科5000元网站seo推广
  • 卖房子上哪个网站最好卖做网站 多少人
  • 常熟智能网站开发呼和浩特建设厅官方网站
  • 做理财的网站好天元建设集团有限公司济南第六建筑工程分公司