【Proteus仿真】【Arduino单片机】LCD1602-IIC液晶显示

news2024/10/6 1:37:56

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶等。
主要功能:
系统运行后,LCD1602液晶显示各种效果。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args)  write(args);
#else
#define printByte(args)  print(args,BYTE);
#endif

uint8_t bell[8]  = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4};
uint8_t note[8]  = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0};
uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0};
uint8_t duck[8]  = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0};
uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0};
uint8_t retarrow[8] = {	0x1,0x1,0x5,0x9,0x1f,0x8,0x4};
  
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
  
  lcd.createChar(0, bell);
  lcd.createChar(1, note);
  lcd.createChar(2, clock);
  lcd.createChar(3, heart);
  lcd.createChar(4, duck);
  lcd.createChar(5, check);
  lcd.createChar(6, cross);
  lcd.createChar(7, retarrow);
  lcd.home();
  
  lcd.print("Hello world...");
  lcd.setCursor(0, 1);
  lcd.print(" i ");
  lcd.printByte(3);
  lcd.print(" arduinos!");
  delay(2000);
  displayKeyCodes();
  
}

// display all keycodes
void displayKeyCodes(void) {
  uint8_t i = 0;
  while (1) {
    lcd.clear();
    lcd.print("Codes 0x"); lcd.print(i, HEX);
    lcd.print("-0x"); lcd.print(i+16, HEX);
    lcd.setCursor(0, 1);
    for (int j=0; j<16; j++) {
      lcd.printByte(i+j);
    }
    i+=16;
    
    delay(2000);
  }
}

void loop()
{

}




三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1191727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一个使用get_hash_value比对数据脚本

使用get_hash_value获取每个字段的值&#xff0c;再sum起来比对&#xff0c;如果表有lob字段&#xff0c;则会先排除掉lob字段再比对其它字段 这个脚本有两个问题&#xff1a; 1.如果字段所有的值长度加起来超过4000会报错&#xff0c;比对不了&#xff0c;这种情况一般比较少…

【亚马逊云科技产品测评】活动征文|AWS EC2 部署Echarts大屏展示项目

前言 Echarts简介 ECharts是一个使用JavaScript开发的&#xff0c;开源的可视化库。它可以让数据变得生动起来&#xff0c;提供直观&#xff0c;交互性强&#xff0c;可高度个性化定制的数据可视化图表。ECharts支持大部分的浏览器&#xff0c;如IE6、Chrome、Firefox、Safari等…

《QT从基础到进阶·十六》QT实现客户端和服务端的简单交互

QT版本&#xff1a;5.15.2 VS版本&#xff1a;2019 客户端程序主要包含三块&#xff1a;连接服务器&#xff0c;发送消息&#xff0c;关闭客户端 服务端程序主要包含三块&#xff1a;打开消息监听&#xff0c;接收消息并反馈&#xff0c;关闭服务端 1、先打开服务端监听功能 …

烟草5G智慧工厂数字孪生可视化平台,赋能烟草工业数字化智慧转型

随着卷烟工厂提质增效需求增强&#xff0c;信息化建设推进及生产制造系统智能化改革发展&#xff0c;各生产单元逐步升级完善数字化&#xff0c;最终实现智能制造成为必然趋势。因此&#xff0c;5G卷烟加工工厂的数字化转型迫在眉睫。中国烟草制造行业正迈向全新的市场经济时代…

vue-element-admin 集成框架设置中文语言

首先拉取中文版分支代码 https://github.com/PanJiaChen/vue-element-admin/tree/i18n &#xff08;下载卡的话&#xff0c;下载小羊的压缩包&#xff0c;已上传资源&#xff09; \src\lang\index.js 改完dangdangdang可以啦

性价比高的照明品牌,五款经济实惠的照明品牌推荐

很多家长有时候会说孩子觉得家里的台灯灯光刺眼&#xff0c;看书看久了就不舒服。这不仅要看光线亮度是否柔和&#xff0c;还要考虑台灯是不是有做遮光式设计。没有遮光式设计的台灯&#xff0c;光源外露&#xff0c;灯光会直射孩子头部&#xff0c;孩子视线较低&#xff0c;很…

Kotlin库实现多线程爬取数据

由于字数限制&#xff0c;以下是一个简化版的爬虫程序示例&#xff0c;使用了Kotlin的网络库kotlinx.coroutines和kotlinx.html。这个程序会爬取一个简单的Python多线程跑数据的网页&#xff0c;并打印出结果。 import kotlinx.coroutines.* import kotlinx.html.* import java…

Word脚注如何插入?1分钟学会!

“最近在写一些文章&#xff0c;引用了一些注释&#xff0c;想为它们增添一些脚注。有没有朋友知道在word里脚注怎么添加呀&#xff1f;” 使用word编写文章时&#xff0c;添加脚注是一项常见的任务&#xff0c;用于引用文献、添加注释或提供额外信息。但可能很多朋友不知道wor…

如何在本地运行稳定扩散模型

推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具&#xff1a; DreamTexture.js自动纹理化开发包 - NSDT 继 DALL-E 2 和 Imagen 之后&#xff0c;新的深度学习模型 Stable Diffusion 标志着文本到图像领域的巨大飞跃。本月早些时候发布的 Stable Diffusion 承诺…

Java进阶(垃圾回收GC)——理论篇:JVM内存模型 垃圾回收定位清除算法 JVM中的垃圾回收器

前言 JVM作为Java进阶的知识&#xff0c;是需要Java程序员不断深度和理解的。 本篇博客介绍JVM的内存模型&#xff0c;对比了1.7和1.8的内存模型的变化&#xff1b;介绍了垃圾回收的语言发展&#xff1b;阐述了定位垃圾的方法&#xff0c;引用计数法和可达性分析发以及垃圾清…

vue3+antv2.x的画布

报错信息&#xff1a; TypeError: Cannot destructure property component of registry_1.shapeMaps[node.shape] as it is undefined. at VueShapeView.renderVueComponent (http://192.168.10.35:9029/node_modules/.vite/deps/antv_x6-vue-shape.js?v49fbfab0:5569:19…

卷王必看。非肿瘤+WGCNA+单细胞,快来抄作业

今天给同学们分享一篇生信文章“m6A Regulators Is Differently Expressed and Correlated With Immune Response of Esophageal Cancer”&#xff0c;这篇文章发表在Dis Markers期刊上&#xff0c;影响因子为3.464。 结果解读&#xff1a; 食道癌中差异表达基因&#xff08;D…

第18章 Swing 程序设计

概述 String包的层次结构和继承关系如下 常用的Swing组件如下表 Swing常用窗体 JFrame 窗体 JFrame 类的常用构造方法包括以下两种形式&#xff1a; public JFrame&#xff08;&#xff09;&#xff1a;创建一个初始不可见、没有标题的窗体。 public JFrame(String title)…

mac录屏没有声音?这里有答案!

在mac上进行屏幕录制是一件简单的事情&#xff0c;可用于创建教程、演示、游戏录制等。然而&#xff0c;有时用户可能会遇到一个常见的问题——录制视频时没有声音。本文将介绍两种主要的方法来解决mac录屏没有声音的问题&#xff0c;以确保您的录制包含声音。 mac录屏没有声音…

【LeetCode: 54. 螺旋矩阵 | 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

微信小程序主包和分包资源相互引用规则

微信分包文档 文档中只提到了分包对于兄弟分包和主包之间的引用关系&#xff0c;但是并未提及&#xff0c;主包是否可以引用分包资源。其实只需要明白两点&#xff0c; 第一点&#xff1a;分包永远都是异步加载的 第二点&#xff1a;主包可以预加载分包 那么其实这里就已经很…

解决:AttributeError: ‘WebDriver‘ object has no attribute ‘find_element_by_id‘

解决&#xff1a;AttributeError: ‘WebDriver’ object has no attribute ‘find_element_by_id’ 背景 在使用之前的代码通过selenium定位元素时&#xff0c;报错&#xff1a;selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to loca…

聚焦千兆光模块和万兆光模块的测试技术及设备

千兆光模块和万兆光模块的测试技术涉及多个方面&#xff0c;如光学性能测试、电气性能测试、动态性能测试、温度测试、环境和耐久性测试等。不同的测试技术可以验证不同的光模块的性能和稳定性&#xff0c;从而确保光模块在各种应用场景下的可靠性&#xff0c;下面将介绍一些常…

Leetocde35-搜索插入位置

官方题解 class Solution {public int searchInsert(int[] nums, int target) {int n nums.length;int left 0, right n - 1, ans n;while (left < right) {int mid ((right - left) >> 1) left;if (target < nums[mid]) {ans mid;right mid - 1;} else {…

【数据结构】二叉树顺序存储:堆详解!(图解+源码)

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 数据结构解析 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f324;️前言&#x1f324;️堆的理论☁️二叉树的顺序存储☁️堆的概念 &#x1f324;️堆的实现…