avr uart打印_AVR | 在16x2 LCD上打印HELLO WORLD

avr uart打印

We would learn the connection to the LCD first as the connections is a bit complex and here we are using an 8-bit LCD.

我们将首先学习到LCD的连接,因为连接有点复杂,这里我们使用的是8位LCD

Simulation

模拟

Simulation, AVR | Print HELLO WORLD on the 16x2 LCD

Explanation

说明

  • Search these devices from the device selection menu:

    从设备选择菜单中搜索以下设备:

    1. ATmega16
    2. LM016L (It’s a 16*2 Alphanumeric LCD)
    3. One Power Terminal
    4. One Ground terminal
  • Connect the power terminal from the VDD and VEE of the LCD.

    从LCD的VDD和VEE连接电源端子。

  • Connect the Enable pin (E) and VSS pin to the ground terminal.

    将使能引脚(E)和VSS引脚连接到接地端子。

  • Double click on the Power terminal and write +5V in its properties.

    双击电源端子,并在其属性中写入+ 5V 。

  • Connect the R/S and E pin to the PC0 and PC1 of the ATmega16.

    将R / S和E引脚连接到ATmega16的PC0和PC1 。

  • The next step would be to debug the HEX file in the ATmega16.

    下一步将是调试ATmega16中的HEX文件。

Now after all the connections are made we will move forward to the coding section. As the coding for the LCD is bit longer so I won’t be attaching the screenshots from the Atmel Studio.

现在,在完成所有连接之后,我们将前进至编码部分。 由于LCD的编码更长,因此我不会附加Atmel Studio的屏幕截图。

用C代码在LCD上打印HELLO WORLD (C code to print HELLO WORLD on the LCD)

#include <avr/io.h>
#define F_CPU 1000000
#include <util/delay.h>
#define RS0
#define EN1
void lcd_comm (char);
void lcd_data(char);
void lcd_init (void);
int main(void)
{
lcd_init();
lcd_data('H');
lcd_data('E');
lcd_data('L');
lcd_data('L');
lcd_data('O');
lcd_comm(20);
lcd_data('W');
lcd_data('O');
lcd_data('R');
lcd_data('L');
lcd_data('D');
while(1)
{
}
}
void lcd_comm(char x){
PORTD = x;
PORTC &= ~(1<<RS);
PORTC |= 1<<EN;
_delay_ms(5);
PORTC &= ~(1<<EN);
}
void lcd_data(char x){
PORTD = x;
PORTC |= 1<<RS;
PORTC |= 1<<EN;
_delay_ms(5);
PORTC &= ~(1<<EN);
}
void lcd_init(void){
DDRD = 0xFF;
DDRC = 0x03;
lcd_comm(0x38);
lcd_comm(0x06);
lcd_comm(0x0E);
lcd_comm(0x01);
lcd_comm(0x80);
}

Explanation

说明

  • Firstly we have included all the header file that is required basically

    首先,我们包含了所有基本需要的头文件

  • At the initial condition, we have defined EN=0 and RS=1.

    在初始条件下,我们已定义EN = 0和RS = 1 。

  • Next we have defined certain functions lcd_comm(char), lcd_data(char) and lcd_init(void).

    接下来,我们定义了某些函数lcd_comm(char) , lcd_data(char)和lcd_init(void) 。

  • Inside the int main(void) we have written the alphabets that need to be print in the screen.

    在int main(void)内部,我们编写了需要在屏幕上打印的字母。

  • Also here lcd_comm(20); is the command given to the LCD to create space between the two words.

    同样在这里lcd_comm(20); 是给LCD的命令,用于在两个单词之间创建空格。

  • Inside the void lcd_comm(char x) we have taken the variable as char x, which we have assigned to PORTC.

    在void lcd_comm(char x)内部,我们将变量指定为char x ,并将其分配给PORTC 。

  • In the next step we have masked the initial value of RS which was initially 1, and here we have made it 0.

    在下一步中,我们屏蔽了RS的初始值为1的初始值,在这里将其设为0。

  • Next, we have made our Enable Pin high and then low by giving the time delay of 5ms in between.

    接下来,通过在5ms之间设置时间延迟,将使能引脚设为高电平,然后设为低电平。

  • Again for the next function, we would be giving the data to LCD through this.

    再次为下一个功能,我们将通过此将数据提供给LCD。

  • We have taken a variable x, and assigned to PORTD, again made RS pin 0 and also have done similarly the Enable pin high and then low by providing the time delay of 5ms.

    我们取了一个变量x ,并将其分配给PORTD ,再次将RS引脚设置为0,并通过提供5ms的时间延迟, 将使能引脚先设置为高电平,然后设置为低电平。

  • In this function lcd_init(void) we have written all the commands that are required for the LCD at the beginning.

    在此函数lcd_init(void)中,我们在一开始就编写了LCD所需的所有命令。

  • For more detail of every command, you can check the last article that I have written about the LCD.

    有关每个命令的更多详细信息,可以查看我写的有关LCD的最后一篇文章。

  • Also, the DDRD=0xFF indicates all the data pins connected to the PORTD, and DDRC=0x03 is for the connection of the ENABLE Pin and R/S pin we connected to PORTC.

    同样, DDRD = 0xFF表示连接到PORTD的所有数据引脚,而DDRC = 0x03用于连接我们连接到PORTC的ENABLE引脚和R / S引脚。

Build the program and after this debug the Hex file in the simulation software design that we have created earlier and click on the RUN button and your HELLO WORLD will appear in the Screen.

生成程序,然后在调试之后,使用我们先前创建的仿真软件设计中的Hex文件,然后单击RUN按钮,您的HELLO WORLD将出现在屏幕中。

翻译自: https://www.includehelp.com/embedded-system/print-hello-world-on-the-16x2-lcd.aspx

avr uart打印

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

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

相关文章

linux中lvm的缩减

问题提出&#xff1a;服务器硬盘做成了lvm&#xff0c;但是/home目录空间较大&#xff0c;于是想缩减一下&#xff0c;分配给其他目录。实验环境&#xff1a;操作系统&#xff1a;redhat企业版&#xff0c;硬盘已经做成了lvm。问题解决&#xff1a;操作前的注意事项&#xff1a…

SpringBoot 过滤器、拦截器、监听器对比及使用场景!

来源 | blog.csdn.net/qq_38020915/article/details/116431612作者 | dingwen_blog一、关系图理解二、区别1.过滤器过滤器是在web应用启动的时候初始化一次, 在web应用停止的时候销毁可以对请求的URL进行过滤, 对敏感词过滤挡在拦截器的外层实现的是 javax.servlet.Filter 接口…

Jenkins Build Radiators(构建发射源)

为什么80%的码农都做不了架构师&#xff1f;>>> information radiators&#xff08;信息发射源&#xff09;的概念通常被用在敏捷的圈子里。 据敏捷专家Alistair Cockburn所说&#xff1a; 一个信息发射源是一个贴在一个地方的显示器&#xff0c;当人们工作或路过时…

线程池是如何重复利用空闲的线程来执行任务的?

来源&#xff1a;blog.csdn.net/anhenzhufeng/article/details/88870374在Java开发中&#xff0c;经常需要创建线程去执行一些任务&#xff0c;实现起来也非常方便&#xff0c;但如果并发的线程数量很多&#xff0c;并且每个线程都是执行一个时间很短的任务就结束了&#xff0c…

C# 将程序添加开机启动的三种方式

前言 最近在研究程序随系统启动&#xff0c;发现在 win7 上因为权限的问题&#xff0c;写注册表的时候总是会出现问题&#xff0c;写不进去导致的不能自动启动&#xff0c;随后决定仔细的看一看这方面的问题。 查资料过程中主要发现有三种方式可以添加到启动&#xff0c;分别…

SpringBoot 中的 3 种条件装配!

一、介绍在实际的项目开发中&#xff0c;我们往往需要根据不同的环境做出不同的配置&#xff0c;例如&#xff1a;在开发环境下&#xff0c;我们会使用内存数据库以便快速启动服务并进行开发调试&#xff0c;在test环境、生产环境&#xff0c;会使用对应环境的数据库。如果我们…

图说 mysql 事务隔离级别

转载于:https://blog.51cto.com/kingbox/1657916

@Autowired报错的4种解决方案和原因分析!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;上图的报错信息相信大部分程序员都遇到过&#xff0c;奇怪的是虽然代码报错&#xff0c;但丝毫不影响程序的正常执行&#x…

C# Winform 窗体美化(一、IrisSkin 换肤库)

IrisSkin 换肤库 IrisSkin 是为Microsoft Visual Studio dotNET开发的最易用的界面增强dotNET(WinForm)组件包。能完全自动的为应用程序添加支持换肤功能。[百度百科] 1、文件 IrisSkin4.dll - 544 KB各种 .ssk 格式的皮肤文件&#xff08;一般在网上搜的是13个皮肤的压缩包…

厉害了,Spring中bean的12种定义方法!

前言在庞大的java体系中&#xff0c;spring有着举足轻重的地位&#xff0c;它给每位开发者带来了极大的便利和惊喜。我们都知道spring是创建和管理bean的工厂&#xff0c;它提供了多种定义bean的方式&#xff0c;能够满足我们日常工作中的多种业务场景。那么问题来了&#xff0…

C# Winform 窗体美化(二、LayeredSkin 界面库)

二、LayeredSkin 界面库 概况 这部分资源是 Winform 美化最多的了&#xff0c;效果还不错&#xff0c;使用时只需引入 LayeredSkin.dll - 696 KB 即可。 网上能找到的最后 LayeredSkin 版本应该是 LayeredSkin Demo2014-12-10.zip&#xff0c;之后作者就整合成一个更加强大的…

【WebSocket初探 】

众所周知&#xff0c;socket是编写网络通信应用的基本技术&#xff0c;网络数据交换大多直接或间接通过socket进行。对于直接使用socket的client与服务端&#xff0c;一旦连接被建立则均可主动向对方传送数据&#xff0c;而对于使用更上层的HTTP/HTTPS协议的应用&#xff0c;因…

Spring Cache 实战:兼容所有缓存中间件!

作者 | 悟空聊架构来源 | 悟空聊架构&#xff08;ID&#xff1a;PassJava666&#xff09;本篇给大家介绍一种兼容所有缓存中间件的方案&#xff0c;不论我们是使用 Redis 还是 Ehcache&#xff0c;都不需要关心如何操作 Redis 或者 Ehcache&#xff0c;这套方案统统帮你搞定。这…

C# Winform 窗体美化(三、不规则窗体)

三、不规则窗体 概况 之前学习的 LayeredSkin 看到里面有个异形窗口&#xff0c;比较感兴趣&#xff0c;所以就找一下资料研究一下。不规则窗体学习有一个比较好的例子&#xff0c;叫 GoldFishProject&#xff0c;是一条鱼金鱼在屏幕上游。 不规则窗口示例代码 GoldFishProj…

Mybatis中SQL注入攻击的3种方式,真是防不胜防!

作者 | sunnyf来源 | https://www.freebuf.com/vuls/240578.html前言SQL注入漏洞作为WEB安全的最常见的漏洞之一&#xff0c;在java中随着预编译与各种ORM框架的使用&#xff0c;注入问题也越来越少。新手代码审计者往往对Java Web应用的多个框架组合而心生畏惧&#xff0c;不知…

Hadoop源代码分析(MapReduce概论)

大家都熟悉文件系统&#xff0c;在对HDFS进行分析前&#xff0c;我们并没有花很多的时间去介绍HDFS的背景&#xff0c;毕竟大家对文件系统的还是有一定的理解的&#xff0c;而且也有很好的文档。在分析Hadoop的MapReduce部分前&#xff0c;我们还是先了解系统是如何工作的&…

再有人问你MySql的隔离级别,直接把这篇文章发给他!

作者 l zyz1992来源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09;首先要明白什么是事务&#xff1f;事务是程序中一系列严密的操作&#xff0c;所有的操作必须完成&#xff0c;否则在所有的操作中所做的所有的更改都会被撤销。也就是事务的原子性&#xff0c;一…

生产环境一次诡异的NPE问题,反转了4次

前言公司为了保证系统的稳定性&#xff0c;加了很多监控&#xff0c;比如&#xff1a;接口响应时间、cpu使用率、内存使用率、错误日志等等。如果系统出现异常情况&#xff0c;会邮件通知相关人员&#xff0c;以便于大家能在第一时间解决隐藏的系统问题。此外&#xff0c;我们这…

ZooKeeper学习笔记—配置管理

为什么80%的码农都做不了架构师&#xff1f;>>> 最近在工作中&#xff0c;为了完善公司集群服务的架构&#xff0c;提高可用性&#xff0c;降低运维成本&#xff0c;因此开始学习ZooKeeper。 至于什么是ZooKeeper&#xff1f;它能做什么&#xff1f;如何安装ZooKee…

C# Winform 窗体美化(六、双层窗体)

六、双层窗体 大概情况 双层床体是为了平滑的创建异形窗体的一个解决方案&#xff0c;找了很多资料&#xff0c;整理了一下。 双层窗体的逻辑是建立在 UpdateLayeredWindow 不能绘制控件的基础上&#xff0c;上层再添加一个专门放置控件的层&#xff1b;这样就可以在上层“控…