STM32 驱动1602液晶
利用STM32f103c8t6单片机驱动1602A液晶进行显示功能

上图即为写入信息后的效果图
本人用的是STM32的核心系统,无任何外设
库函数:3.5版本的库函数
驱动模式:采用4线驱动模式
供电:STM32采用3.3v供电,1602液晶采用5v供电(如果采用3.3v供电,只能显示背光,其他数据均无法显示)
上图所示的杜邦线的连接方法:
RS->C13, RW->C14, E->C15, D4-D7->A4-A7
代码部分:
/****************************LCD.c**************************/
#include "stm32f10x.h"
#include "stm32f10x_conf.h"
#include "LCD.h"
unsigned char LCD_PORT;
void LCD_delay(void)
{
unsigned int i,j;
for(i=0;i<800;i++)
for(j=0;j<800;j++);
}
void LCD_Write_Com(unsigned char c)
{
u16 f;
register unsigned char i;
GPIO_SetBits(GPIOA,GPIO_Pin_7);
LCD_RS_L();
LCD_RW_H();
do
{
LCD_E_H();
f=LCD_FLAG();
LCD_E_L();
}while(f==1);
LCD_RW_L();
i=c;
i&=0xf0;
GPIO_Write(GPIOA,i|0);
LCD_E_H();
LCD_delay();
LCD_E_L();
i=c<<4;
i&=0xf0;
GPIO_Write(GPIOA,i);
LCD_E_H();
LCD_delay();
LCD_E_L();
}
void LCD_Write_Data(unsigned char d)
{
u16 f;
register unsigned char i;
GPIO_SetBits(GPIOA,GPIO_Pin_7);
LCD_RS_L();
LCD_RW_H();
do
{
LCD_E_H();
f=LCD_FLAG();
LCD_E_L();
}while(f==1);
LCD_RS_H();
LCD_RW_L();
i=d;
i&=0xf0;
GPIO_Write(GPIOA,i);
LCD_E_H();
LCD_delay();
LCD_E_L();
i=(d<<4);
i&=0xf0;
GPIO_Write(GPIOA,i);
LCD_E_H();
LCD_delay();
LCD_E_L();
}
void LCD_INIT(void)
{
LCD_delay();
LCD_Write_Com(0x28);
LCD_Write_Com(0x01);
LCD_Write_Com(0x06);
LCD_Write_Com(0x0f);
}
void LCD_PUTS(unsigned char line,unsigned char col,unsigned char *s)
{
unsigned char i,addr;
if(line==1) addr=0x80;
else if(line==2) addr=0x80+0x40;
LCD_Write_Com(addr+col);
for(i=0;i<20;i++)
{
if(s[i]!=0)
LCD_Write_Data(s[i]);
else
break;
}
}
/*****************主函数中的端口设置***********************/
void Display_GPIO_Conf(void)
{
GPIO_InitTypeDef GPIO_InitIntructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitIntructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitIntructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitIntructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_Init(GPIOC,&GPIO_InitIntructure);
GPIO_InitIntructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
GPIO_Init(GPIOA,&GPIO_InitIntructure);
GPIO_InitIntructure.GPIO_Pin=GPIO_Pin_7;
GPIO_InitIntructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_Init(GPIOA,&GPIO_InitIntructure);
}
其中最为特殊的是:A7,需要将其设置为OD模式,外接上拉电阻,将其拉到5v,目的:将其变为准双向IO口,可以读取1602的忙状态信号。
STM32 驱动1602液晶的更多相关文章
- stm32驱动12832液晶屏程序(ST7565R控制器)
LCD12832.c文件: #include"stm32f10x_lib.h" #include "OCM12232.h" void Lcd12232delay ...
- STM32驱动ILI9341控制器控制TFTLCD显示
STM32驱动ILI9341控制器控制TFTLCD显示 一.用STM32控制TFTLCD显示的编程方法,在编程驱动TFTLCD液晶显示器之前,我们先熟悉以下概念: 1.色彩深度,这是一个与TFTLCD ...
- 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...
- STM32驱动LCD实战
前段时间写了<STM32驱动LCD原理>和<STM32的FSMC外设简介>两篇文章,本文将对STM32驱动LCD进行实战应用.LCD是深圳市拓普微科技开发有限公司的LMT028 ...
- esp8266的STM32驱动
esp8266的STM32驱动,数据发送接收由DMA完成,释放CPU. 目前只能发送返回消息为成功或失败的AT命令,并判断是否成功,详见esp8266_cmd():其它返回消息不可预知的命令(如查看A ...
- STM32驱动DS18B20
DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线”接口的温度传感器.与传 统的热敏电阻等测温元件相比,它是一种新型的体积小.适用电压宽.与微处理器接口简单的 数字化温度传感器.一线 ...
- STM32驱动OV7725摄像头颜色识别
实验目的: 使用stm32驱动OV7725摄像头进行图像实时采集,在tft屏幕上实时显示并识别图像中的特定颜色,在颜色的周围画上框. 实验现象: 我的工程代码链接: http://download.c ...
- Arduino入门笔记(5):1602液晶实验(实现时钟)
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino板 https://item.taoba ...
- AMS5601的ardunio和STM32驱动开发
AMS5601的ardunio和STM32驱动开发 本文有麦粒电子撰写,并提供相应产品服务. 前言 目前ams关于磁编码芯片用的比较多的可能是ams5600,能够输出pwm信号,电压信号以及I2C通信 ...
随机推荐
- Java类锁和对象锁实践(good)
一.前言 之前对类锁和对象锁是否是互斥的不是太确定,因此决定编写相关的程序进行实践一下.编写前对相关定义约定约定如下: 1. 类锁:在代码中的方法上加了static和synchronized的锁,或者 ...
- js html 交互监听事件学习
事件处理程序(handler): HTML事件处理程序: <input type="button" value="Click Here" onclick= ...
- android 图片拍照图片旋转的处理方式
第一种:String str=path; /** * 读取图片属性:旋转的角度 * * @param path * 图片绝对路径 * @return degree旋转的角度 */ private vo ...
- 使用for循环还是foreach循环?
很多时候我们很自然的认为,for循环的时候使用foreach和原来的for循环用下标的方式遍历是相同的. 而且因为foreach循环写法简单,很容易理解,而且少去了很多麻烦的变量,所以估计在学会使用f ...
- listview的简单封装
package com.itheima.googleplay.ui.view; import android.content.Context; import android.graphics.Colo ...
- 老问题:Android子线程中更新UI的3种方法
在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 方法一:用Handler 1.主线程中定义Handler: Handle ...
- 我也谈javascript闭包的原理理解
参考原文:http://www.oschina.net/question/28_41112 前言:还是一篇入门文章.Javascript中有几个非常重要的语言特性——对象.原型继承.闭包.其中闭包 对 ...
- app每个页面都有一个相同的浮层控件 实现思路
可以创建一个window,设置其windowLevel为alert;
- string数组转化成int数组
string idsStr = "1,2,3,4,5"; int[] ids = idsStr.Split(',').Select(Int32.Parse).ToArray();
- Linux批量部署工具Expect
既然没有遇到过,做好准备总是好的.这是自己送给自己的话,现在运维做自动话越来越多,自己就学以下,记录笔记.目前主流的有puppet.Expect.pssh等等,今天就用Expect做自动部署和日常管理 ...