STM32驱动1602A 8086协议[通俗易懂]

STM32驱动1602A 8086协议[通俗易懂]本来想学I2C发现1602上没有I2C的接口,他是8086并口的就先把它搞了//1602的外设文件#include“lcd1602.h”#include“sys.h”#include“delay.h”#include“stdio.h”voidGPIO_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;R…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本来想学I2C发现1602上没有I2C的接口,他是8086并口的就先把它搞了
在这里插入图片描述
//1602的外设文件
#include “lcd1602.h”
#include “sys.h”
#include “delay.h”
#include “stdio.h”

void GPIO_Configuration(void)
{

GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void LCD1602_Wait_Ready(void)
{

u8 sta;

DATAOUT(0xff);//8¸ö¿ÚÈ«²¿Ö®¸ß
LCD_RS_Clr();
LCD_RW_Set();
do
{

LCD_EN_Set();
delay_ms(5);
sta = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7);
LCD_EN_Clr();
}while(sta & 0x80);//¼ì²âbusy×î¸ßλ0²»Ã¦
}

void LCD1602_Write_Cmd(u8 cmd)//дָÁî
{

// if(busy)
LCD1602_Wait_Ready();
DATAOUT(cmd);
LCD_RS_Clr();
LCD_RW_Clr();

LCD_EN_Set();
LCD_EN_Clr();
// printf(“%d”,cmd);
}

void LCD1602_Write_Dat(u8 dat)//дÊý¾Ý
{

LCD1602_Wait_Ready();
DATAOUT(dat);
LCD_RS_Set();
LCD_RW_Clr();

LCD_EN_Set();
LCD_EN_Clr();
}

void LCD1602_ClearScreen(void)
{

LCD1602_Write_Cmd(0x01);
}

void LCD1602_Set_Cursor(u8 x, u8 y)
{

u8 addr;

if (y == 0)
addr = 0x00 + x;
else
addr = 0x40 + x;
LCD1602_Write_Cmd(addr | 0x80);
}

void LCD1602_Show_Str(u8 x, u8 y, u8 *str)
{

LCD1602_Set_Cursor(x, y);
while(*str != ‘\0’)
{

LCD1602_Write_Dat(*str++);
}
}

void LCD1602_Init(void)
{

GPIO_Configuration();
delay_ms(15);
LCD1602_Write_Cmd(0x38); //162ÏÔʾ£¬57µãÕó£¬8λÊý¾Ý¿Ú
delay_ms(5);
LCD1602_Write_Cmd(0x38); //162ÏÔʾ£¬57µãÕó£¬8λÊý¾Ý¿Ú
delay_ms(5);
LCD1602_Write_Cmd(0x38); //162ÏÔʾ£¬57µãÕó£¬8λÊý¾Ý¿Ú
delay_ms(5);
LCD1602_Write_Cmd(0x38); //162ÏÔʾ£¬57µãÕó£¬8λÊý¾Ý¿Ú
LCD1602_Write_Cmd(0x08); //¿ªÏÔʾ£¬¹â±ê¹Ø±Õ
LCD1602_Write_Cmd(0x01); //ÎÄ×Ö²»¶¯£¬µØÖ·×Ô¶¯+1
LCD1602_Write_Cmd(0x06); //ÇåÆÁ
LCD1602_Write_Cmd(0x0c); //ÇåÆÁ

}
//头文件
#ifndef __LCD1602_H
#define __LCD1602_H
#include “sys.h”
#define LCD_RS_Set() GPIO_SetBits(GPIOB, GPIO_Pin_5)
#define LCD_RS_Clr() GPIO_ResetBits(GPIOB, GPIO_Pin_5)
#define LCD_RW_Set() GPIO_SetBits(GPIOB, GPIO_Pin_6)
#define LCD_RW_Clr() GPIO_ResetBits(GPIOB, GPIO_Pin_6)
#define LCD_EN_Set() GPIO_SetBits(GPIOB, GPIO_Pin_7)
#define LCD_EN_Clr() GPIO_ResetBits(GPIOB, GPIO_Pin_7)
#define DATAOUT(x) GPIO_Write(GPIOA, x)

void GPIO_Configuration(void);
void LCD1602_Wait_Ready(void);
void LCD1602_Write_Cmd(u8 cmd);
void LCD1602_Write_Dat(u8 dat);
void LCD1602_ClearScreen(void);
void LCD1602_Set_Cursor(u8 x, u8 y);
void LCD1602_Show_Str(u8 x, u8 y, u8 *str);
void LCD1602_Init(void);
#endif
//主函数
#include “led.h”
#include “lcd1602.h”
#include “delay.h”
#include “sys.h”
#include “usart.h”

int main(void)
{

delay_init();

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
uart_init(115200); //´®¿Ú³õʼ»¯Îª115200
LCD1602_Init();
LCD1602_Show_Str(4, 0, “L B”);
LCD1602_Show_Str(4, 1, “FIGHTING”);
// LCD1602_Set_Cursor(2, 1);
printf(“123456\r\n”);

while(1)
{

delay_ms(10);
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190838.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • “ORA-01017(:用户名/口令无效; 登录被拒绝)”解决办法「建议收藏」

    “ORA-01017(:用户名/口令无效; 登录被拒绝)”解决办法「建议收藏」报错:ORA-01017(:用户名/口令无效;登录被拒绝)1.打开CMD命令窗,输入sqlplus/assysdba1)修改密码SQL>alteruser用户名identifiedby密码2)用户被锁定,解锁ALTERUSERusernameACCOUNTUNLOCK;再次登录验证,成功…

  • mysql 误清空表 恢复数据

    mysql 误清空表 恢复数据把今天一不小心把订单表清空,怎么恢复数据的记录下来首先mysql需要开启bin-log,我的是宝塔面板,默认开启接下来进入到宝塔的www/server/data控制台输入find/-namemysqlbinlog-print找到binlog地址然后软连到usr/binln-fs/www/server/mysql/bin/mysqlbinlog/usr…

  • 腾讯云免费SSL证书配置

    腾讯云免费SSL证书配置基于ngnix的https配置1.证书上传1)申请证书请参照官方文档,然后把已经颁发下来的证书下载下来。2)解压文件,然后把ngnix文件夹下的1_xxx.com_bundle.crt和2_xxx.com.key上传到服务器的nginx配置文件目录(上传到同一目录),如:/usr/loc…

  • Django之模板语法

    注:以下内容转载自:https://www.cnblogs.com/haiyan123/p/7725568.html一、模板语法之变量:语法为{{}}:在Django模板中遍历复杂数据结构

    2021年12月29日
  • navicat15.0.23激活码【中文破解版】2022.03.06

    (navicat15.0.23激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/ide…

  • java的treemap_java map用法

    java的treemap_java map用法TreeMap简介TreeMap是一个有序的key-value集合,它是通过红黑树实现的。TreeMap继承于AbstractMap,所以它是一个Map,即一个key-value集合。TreeMap实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。TreeMap实现了Cloneable接口,意味着它能被克隆。TreeMap实现了ja…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号