单片机控制LCD1602显示英文句子
LCD1602简介:
1602字符型液晶也叫1602液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。字符型液晶,能够同时显示16x02即32个字符。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
--------------------------
仿真图像:
C语言程序:
/*-----------------------------------------------
内容:通过标准程序静态显示字符
引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>sbit RS = P2^4; //定义端口
sbit RW = P2^5;
sbit EN = P2^6;#define RS_CLR RS=0
#define RS_SET RS=1#define RW_CLR RW=0
#define RW_SET RW=1 #define EN_CLR EN=0
#define EN_SET EN=1#define DataPort P0
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{ while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{ while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}
}
/*------------------------------------------------
判忙函数
------------------------------------------------*/
bit LCD_Check_Busy(void)
{ DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET;return (bit)(DataPort & 0x80);
}
/*------------------------------------------------
写入命令函数
------------------------------------------------*/
void LCD_Write_Com(unsigned char com)
{ // while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR;
}
/*------------------------------------------------
写入数据函数
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
{ //while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_();EN_CLR;
}/*------------------------------------------------
清屏函数
------------------------------------------------*/
void LCD_Clear(void)
{ LCD_Write_Com(0x01); DelayMs(5);
}
/*------------------------------------------------
写入字符串函数
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{ if (y == 0) { LCD_Write_Com(0x80 + x); //表示第一行}else { LCD_Write_Com(0xC0 + x); //表示第二行} while (*s) { LCD_Write_Data( *s); s ++; }
}
/*------------------------------------------------
写入字符函数
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{ if (y == 0) { LCD_Write_Com(0x80 + x); } else { LCD_Write_Com(0xC0 + x); } LCD_Write_Data( Data);
}
/*------------------------------------------------
初始化函数
------------------------------------------------*/
void LCD_Init(void)
{LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*显示关闭*/ LCD_Write_Com(0x01); /*显示清屏*/ LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(5); LCD_Write_Com(0x0C); /*显示开及光标设置*/
}/*------------------------------------------------
主函数[上面已经把显示功能封装好了,今后再写其他显示就直接调用]
------------------------------------------------*/
void main(void)
{ LCD_Init(); LCD_Clear();//清屏while (1) { LCD_Write_Char(7,0,'o');//单引号在C语言中表示取字符的ASCII码,这一行代码也可以写为: LCD_Write_Char(7,0,0x6F);LCD_Write_Char(8,0,'k');LCD_Write_String(1,1,"I LOVE YOU!");//双引号在C语言中表示取字符串的ASCII码while(1);}
}
PROTEUS仿真工程文件、HEX文件和C语言程序文件:
所有相关文件
单片机控制LCD1602显示英文句子相关推荐
- 树莓派3B+控制LCD1602显示英文或数字
认识一下LCD1602 我手头有两种LCD1602,一种是16个引脚的,一种是4个引脚的. 正面图: 16个引脚的LCD1602: 4个引脚的LCD1602: 这里我使用的是16引脚的,4个引脚的那个 ...
- 51单片机控制LCD1602模块
51单片机控制LCD1602模块 视频播放:LCD1602视频 (1)LCD1602概述 先来看看LCD1602什么意思?Liquid Crystal Display(LCD)表示液晶显示,1602 ...
- 利用单片机控制74HC595显示图案
利用单片机控制74HC595显示图案(单片机型号STC89C52) 此文将介绍如何用74HC595自定义显示图案,需要一定的单片机学习基础,话不多说,上代码 #include "reg51. ...
- 基于51单片机的LCD1602显示温湿度
51单片机基础难点知识理解后,直接通过下面3个小项目可以更好理解51单片机.中断 定时器 串口甚至是基础的IO输入输出都有结合,再加上一些外设模块的学习(如1602显示屏,L298N电机驱动等) 项目 ...
- 【Proteus仿真】51单片机+DS1302+lcd1602显示
[Proteus仿真]51单片机+DS1302+lcd1602显示 Proteus仿真 工程架构 项目工程 文件结构 主程序代码 #include <reg52.h> #include & ...
- 【Proteus仿真】STC15单片机 + DS1302 + LCD1602显示时间
[Proteus仿真]STC15单片机 + DS1302 + LCD1602显示时间 Proteus仿真 本来想通过轮询方式读取DS1302秒时间的变化来刷新LCD1602显示的,但是这种方式在STC ...
- 40、基于51单片机收音机 LCD1602显示系统设计
摘要 本文在具体分析了STC89C52单片机的技术特点与数字FM收音机的基础上,提出了采用单片机控制收音机实现数字调频的方法,并给出了具体的软硬件设计.该系统利主要由STC89C52单片机.液晶显示器 ...
- 51单片机使用LCD1602显示DS18B20温度传感器温度
使用LCD1602显示DS18B20温度传感器温度.关于DS18B20和LCD的原理,我就不再叙述了,大家自行查找,网上可以找到好多. 使用Proteus仿真.(需要仿真和Keil工程文件的可 ...
- 【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
LCD1602显示字符和时间是最基本的实验,在综合前面所学知识并结合c语言程序设计,就可以通过独立按键,来对时间进行校准,计时等功能.或者通过矩阵键盘的按键进行输入,进而让LCD屏上显示的出我们想要的 ...
最新文章
- 浅谈 UC 国际信息流推荐
- windows 3.x编程指南_18000 MHz 可编程衰减器
- 农商互联农民丰收节交易会-万祥军:产销对接谋定功能农业
- Android(Java):jni源代码
- thinkphp 删除该表的最后一行
- kodi android 键盘,KODI按键映射,看IPTV按键设置
- node ajax validator,node/express 4:在ajax post上使用express-validator显示错误
- JavaScript使用正则表达
- Java设计模式(详细待续)(转)
- 一款用了都说好的思维导图软件:Ayoa
- GO程序设计语言学习笔记
- mysql用户和权限管理总结_【转】mysql 用户及权限管理 小结
- hilbert谱 matlab,转 matlab 信号处理——Hilbert变换及谱分析
- Java Web-----轮播图的实现
- 教小师妹学多线程,看完我写的例子,脸红成那样!
- Tomcat-幽灵猫GhostCat漏洞复现
- 公众号第三方平台开发 创建公众号第三方平台
- hello.s:15: 错误: junk at end of line, first unrecognized character valued 0x8 的解决方法
- docker设置开启机自启动
- 基于ICP算法的三维点云数据拼接算法的实现
热门文章
- 教你用身份证号查社保卡号 个人电脑号
- 用dom4j解析xml错误-Content is not allowed in prolog前言中不允许有内容
- 酷我音乐mp3歌曲URL地址提取(作背景音乐)
- 1-1 一摞有风格的纸牌之一张纸牌
- mysql后门_运用Mysql语句生成后门具体办法
- oracle 00600 kccpb,【案例】Oracle报错ORA-00600 kccpb_sanity_check_2 恢复控制文件过程
- python列表去掉逗号_python – Scrapy crawler,从字符串中删除逗号
- 【微信小程序】零基础学 | 小程序语法
- 访问www.baidu.com完整过程
- Docker系列六EPIC领游戏