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

福建省城市建设厅网站做淘宝客网站流量选择

福建省城市建设厅网站,做淘宝客网站流量选择,网络营销视频,手机百度app下载51单片机4线并发IO口控制1602LCD 1.概述 这篇文章介绍单片机使用4个并发IO口数据线控制LCD显示字符#xff0c;为单片机节省了4个IO口。 单片机4个IO口控制LCD原理就是将原来1个字节8位数据拆分2次读写#xff0c;首先读取高4位数据#xff0c;然后再读低4位数据#xff…51单片机4线并发IO口控制1602LCD 1.概述 这篇文章介绍单片机使用4个并发IO口数据线控制LCD显示字符为单片机节省了4个IO口。 单片机4个IO口控制LCD原理就是将原来1个字节8位数据拆分2次读写首先读取高4位数据然后再读低4位数据实现了4个IO口读取1个字节数据控制1602LCD显示屏显示字符。 2. 4个IO口控制LCD 2.1.原理 4个IO口控制LCD需要修改如下几个位置的代码即可实现。 忙检测函数 LCD1602_DB4_DB7 引脚赋值只需要讲高4位置为1即可低4位位置原有状态。 void LCD1602_TestBusy(void){LCD1602_DB4_DB7 0xf0; //高4位IO口设置为1低4位IO口保持原态LCD1602_RS 0; // 指令状态LCD1602_RW 1; // 读状态LCD1602_E 1;while(LCD1602_Busy); //读取LCD1602_Busy(P1.7)为低电平则结束循环LCD1602_E 0; // 关闭LCD显示器读指令 }写指令函数 用4根数据线写入8位指令需要分成两次写入。第一次默认写入高4位指令第二次将低4位指令移到高4位再次写入两次完成了一个字节的写入。 void LCD1602_WriteCMD(uint8 LCD1602_command) { LCD1602_TestBusy();LCD1602_RS 0;LCD1602_RW 0;//输入的命令高4位赋值给LCD1602_DB4_DB7LCD1602_DB4_DB7 LCD1602_command;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0;//将命令低4位移到高四位供IO口读取LCD1602_DB4_DB7 LCD1602_command 4;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0; }写数据函数 用4根数据线写入8位数据需要分成两次写入。第一次默认写入高4位数据第二次将低4位数据移到高4位再次写入两次完成了一个字节的写入。 void LCD1602_WriteData(uint8 LCD1602_data){ LCD1602_TestBusy();LCD1602_RS 1;LCD1602_RW 0;//写入高4位数据LCD1602_DB4_DB7 LCD1602_data;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0;//将低4位数据移到高4位IO口写入LCD1602_DB4_DB7 LCD1602_data 4;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0; }初始化函数 LCD1602_WriteCMD(LCD_MODE_PIN4); 设置为4线模式 void LCD1602_Init(void){// 设置4线并行口LCD1602_WriteCMD(LCD_MODE_PIN4); // 显示模式设置显示2行每个字符为5*7个像素LCD1602_WriteCMD(LCD_DIS_ON); // 显示开及光标设置显示开光标关LCD1602_WriteCMD(LCD_CURSOR_RIGHT); //显示光标移动设置文字不动光标右移LCD1602_WriteCMD(LCD_SCREEN_CLR); // 显示清屏 }2.2.源码 #include STC12C2052AD.H #include string.h typedef unsigned char uint8; // 定义引脚 #define LCD1602_DB4_DB7 P1 // 定义高4位LCD1602的数据总线 sbit LCD1602_RS P3 ^ 2; // 定义LCD1602的RS控制线 sbit LCD1602_RW P3 ^ 3; // 定义LCD1602的RW控制线 sbit LCD1602_E P3 ^ 4; // 定义LCD1602的E控制线 sbit LCD1602_Busy P1 ^ 7; // 定义LCD1602的测忙线与LCD1602_DB4_DB7关联// 定义指令集 /*设置显示模式*/ #define LCD_MODE_PIN8 0x38 // 8位数据线两行显示 #define LCD_MODE_PIN4 0x28 // 4位数据线两个显示 #define LCD_SCREEN_CLR 0x01 // 清屏 #define LCD_CURSOR_RET 0x02 // 光标复位 #define LCD_CURSOR_RIGHT 0x06 // 光标右移显示不移动 #define LCD_CURSOR_LEFT 0x04 // 光标左移显示不移动 #define LCD_DIS_MODE_LEFT 0x07 // AC自增画面左移 #define LCD_DIS_MODE_RIGHT 0X05 // AC自增画面右移/*光标开关控制*/ #define LCD_DIS_CUR_BLK_ON 0x0f // 显示开光标开光标闪烁 #define LCD_DIS_CUR_ON 0x0e // 显示开光标开光标不闪烁 #define LCD_DIS_ON 0x0c // 显示开光标关光标不闪烁 #define LCD_DIS_OFF 0x08 // 显示关光标关光标不闪烁/*光标、显示移动*/ #define LCD_CUR_MOVE_LEFT 0x10 // 光标左移 #define LCD_CUR_MOVE_RIGHT 0x14 // 光标右移 #define LCD_DIS_MOVE_LEFT 0x18 // 显示左移 #define LCD_DIS_MOVE_RIGHT 0x1c // 显示右移void DELAY_MS (unsigned int a){unsigned int i;while( --a ! 0){for(i 0; i 600; i);} }/** LCD1602忙碌状态不会接收新指令因此在发送新指令前先检测是否忙碌。 判断LCD1602_Busy变量的值为低电平则为不忙。 */ void LCD1602_TestBusy(void){LCD1602_DB4_DB7 0xf0; //高4位IO口设置为1低4位IO口保持原态LCD1602_RS 0; // 指令状态LCD1602_RW 1; // 读状态LCD1602_E 1;while(LCD1602_Busy); //读取LCD1602_Busy(P1.7)为低电平则结束循环LCD1602_E 0; // 关闭LCD显示器读指令 }/******************************************************************************************** // 写指令程序 // // 向LCD1602写命令 本函数需要1个指令集的入口参数 // /********************************************************************************************/ void LCD1602_WriteCMD(uint8 LCD1602_command) { LCD1602_TestBusy();LCD1602_RS 0;LCD1602_RW 0;//输入的命令高4位赋值给LCD1602_DB4_DB7LCD1602_DB4_DB7 LCD1602_command;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0;//将命令低4位移到高四位供IO口读取LCD1602_DB4_DB7 LCD1602_command 4;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0; } /******************************************************************************************** // 写数据程序 // // 向LCD1602写数据 // /********************************************************************************************/ void LCD1602_WriteData(uint8 LCD1602_data){ LCD1602_TestBusy();LCD1602_RS 1;LCD1602_RW 0;//写入高4位数据LCD1602_DB4_DB7 LCD1602_data;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0;//将低4位数据移到高4位IO口写入LCD1602_DB4_DB7 LCD1602_data 4;DELAY_MS(1);LCD1602_E 1;LCD1602_E 0; }// LCD1602初始化 void LCD1602_Init(void){// 设置4线并行口LCD1602_WriteCMD(LCD_MODE_PIN4); // 显示模式设置显示2行每个字符为5*7个像素LCD1602_WriteCMD(LCD_DIS_ON); // 显示开及光标设置显示开光标关LCD1602_WriteCMD(LCD_CURSOR_RIGHT); //显示光标移动设置文字不动光标右移LCD1602_WriteCMD(LCD_SCREEN_CLR); // 显示清屏 }/* 输出字符串 x数据地址 y输出的行位置第一行和第二行 str输入字符串 */ void print(uint8 x, uint8 y, uint8 *str){if(0 y){LCD1602_WriteCMD(0x80 | x);}else{// 第二行起始位置是0x40LCD1602_WriteCMD(0x80 | (0x40x));}while(*str ! \0){LCD1602_WriteData(*str);}}void main(){unsigned char code str[] Hello LCD 1602;unsigned char code str1[] ABCDEFGHIGKLMNOP;LCD1602_Init();print(0,0,str);print(0,1,str1);while(1); }
http://www.yutouwan.com/news/212852/

相关文章:

  • 计算机 网站开发 文章百度网页版官网首页
  • 深圳网站建设服务哪个便宜啊柳市网站建设哪家好
  • 网站建设合同怎么写定制网站制作费用
  • 首页关键词是不是一个网站的核心关键词所在企业邮箱怎么申请免费的
  • 学院网站设计案例设计公司的网站建设
  • 商务型网站建设做网站公司那家好
  • 江苏备案网站名称html代码小游戏
  • 赤峰市建设网站建站多少钱一个
  • 建外贸企业网站校园网络建设
  • 太原网站制作小程序手机网站绑定域名是什么意思
  • 网站建设图片教程衡阳网站优化公司
  • 引擎网站推广法河北seo公司
  • 网站建设成功案例宣传豌豆荚官网入口
  • 提供网站建设哪家好企业163邮箱登录入口
  • 设计了网站flashfxp怎么做网站
  • 外包网站设计公司上海建设工程交易服务中心
  • 泉州网站建设选择讯呢网站建设2018需要什么
  • 汽车网站开发背景用html表格做的网站
  • 深圳夫博网站建设有限公司白人与黑人做爰网站
  • 百度索引量和网站排名佳木斯哈尔滨网站建设
  • 建网站的软件嘉定公司网站设计
  • 做网站图片不够大服务器网络
  • 株洲网站建设企业windows优化大师
  • 专门做消防器材的网站找游戏的手游平台
  • 哈密地网站建设wordpress 多用户插件
  • 制作网站流程图东莞网站建设乐云seo在线制作
  • 天津市住房和城乡建设厅官方网站app开发费用
  • 大连宏帝建设网站seo优化排名易下拉软件
  • 网站建设方案范例建造师职业人才网平台
  • 福建省建设执业注册与管理中心网站浙江网站备案