ATmega8仿真——LED 数码管的学习

1.I/O 口的结构及特点

  • Atmega8 有23 个I/O 引脚,分成3 个8 位的端口B、C 和D,其中C 口只有7 位
  • Atmega8 采用3个8位寄存器来控制I/O端口,它们分别是:方向寄存器DDRx、数据寄存器PORTx、输入引脚寄存器PINx

  x为B或C 或D,分别代表B口、C口或D 口;

  n为0~7,代表寄存器中的位置;

  其中DDRx 和PORTx 是可读写寄存器,而PINx 为只读寄存器;

  每个I/O引脚内部都有独立的上拉电阻电路,可通过程序设置内部上拉电阻是否有效。

方向寄存器DDRx中的每个位用于控制I/O口一个引脚的输入输出方向,即控制I/O口的工作模式为输出模式还是输入模式。

  • 当DDRxn=1 时,I/O 的Pxn 引脚处于输出模式。此时

    若PORTxn=1时,I/O引脚呈高电平,同时可提供输出20mA 的电流;

    若PORTxn=0时,I/O引脚呈低电平,同时可吸收20mA 的电流。

  • 当 DDRxn=0 时,I/O 的Pxn 引脚处于输入模式。此时

    引脚寄存器PINxn 中的数据就是外部引脚的实际电平;

    此时可通过PORTxn 的设置可控制内部的上拉电阻使用或不使用。

注意事项:

  1. 使用AVR的I/O 口,首先应正确设置其工作模式(输入模式还是输出模式),设置DDRx;
  2. 当I/O工作在输入模式(DDRxn=0)时,读取引脚上的电平应取PINxn的值,而不是PORTxn的值;
  3. 当I/O口工作在输入模式(DDRxn=0)时,应根据实际情况设置内部上拉电阻,利用内部上拉电阻可以节省外部上拉电阻;
  4. 将I/O空工作模式由输出模式设置为输入模式后,必须等待一个时钟周期后才能正确的读到外部引脚的值

未完待续

时间: 2024-07-30 10:11:49

ATmega8仿真——LED 数码管的学习的相关文章

MiS603 开发板1.4 建立工程及其仿真-Led

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ 1.4 建立工程及其仿真-Led 在本节,我们正式建立ISE工程,并学习Modelsim的仿真,这也是做工程的一个基本步骤,在之后的章节

【Arduino】8地点LED数码管(3461BS)

淘宝买了一块3461BS的8地点LED数码管,婴儿就迫不及待地尝试,结果看到了文件,好家伙无Arduino测试程序. 莫急~莫急~无论如何串行操作,大不了呗瞎蒙! 以下几点是在更有趣的点瞎蒙: 1.须要了解什么是"上升沿"."下降沿".否则看參考代码(文档仅仅提供51单片机的DEMO)会认为非常迷糊 2.怎样显示小数点?这个文档中提都没提到,经研究发现每一个字符(如0用0xC0表示)的最高位(即左数第一位)都是1(两进制表示).于是我试探性的将其与上0x7f(即0x

单片机编程:让led数码管显示数字0到9

led数码管在单片机系统中应用非常普遍,是由发光二极管构成的.数码管由7个发光二极管组成的一个"日"字形,如果需要显示小数点,那么就再加上一个点,就是8段数码管. 数码管显示亮度高,相应速度快,分共阴极和共阳极两种形式,常用的有单个的和4联的,还有两联的和专门用来显示时间的. /*************************************************** *程序功能:点亮一个led数码管,让它显示数字从0到9 * *日期:2015.5.11 * *******

【Arduino】8位LED数码管(3461BS)

淘宝买了一块3461BS的8位LED数码管,宝贝一到就迫不急待的想试试,结果一看文档,好家伙没有Arduino的测试程序.莫急~莫急~反正是串口操作,大不了瞎蒙呗! 以下两点是瞎蒙过程中比较有趣的两点: 1.需要了解什么是"上升沿"."下降沿",否则看参考代码(文档只提供51单片机的DEMO)会觉得很迷糊 2.如何显示小数点?这个文档中提都没提到,经研究发现每个字符(如0用0xC0表示)的最高位(即左数第一位)都是1(两进制表示),于是我试探性的将其与上0x7f(即

VK1650 LED数码显示驱动IC

VK1650 是一种带键盘扫描电路接口的 LED 驱动控制专用电路.内部集成有 MCU 输入输出控制数字 接口.数据锁存器.LED 驱动.键盘扫描.辉度调节等电路.本芯片性能稳定.质量可靠.抗干扰能力 强,可适应于 24 小时长期连续工作的应用场合. 功能特点 1.显示模式:8 段×4 位 2. 段驱动电流不小于 25mA,字驱动电流不小于 150mA 3. 提供 8 级亮度控制 4. 键盘扫描:7×4bit 5. 高速两线式串行接口 6. 内置时钟振荡电路 7. 内置上电复位电路 8. 支持

v3学院带你学习数码管

在很多初级开发板上面,数码管属于标配的外设,其基本的单元是发光二极管,一般是由八个发光二极管组成"8"字形的结构,如图1所示. 图1 数码管二极管结构 八个发光二极管中的一端会连接一起,若是阳极(正极)连到一起称为数码管共阳极,阴极(负极)连到一起称为共阴极,没有连接到一起的一端分别连接到FPGA芯片的八个引脚上.当我们想在数码管上显示所需的数字时,只需要导通对应的发光二极管即可. 一般来说在一个开发板上面可能会有多个数码管,每一个数码管需要占用FPGA芯片的八个引脚,如此FPGA芯片

bb_black_学习笔记——(3)点亮LED之shell命令

这次改变一下笔记的结构,直接上图.点亮LED永远是学习MCU,ARM,FPGA的入门例程,可以说是经典例程.这里笔者也从点亮LED开始开始ARM学习之旅. 接下来就开始点亮LED之旅,在开始之前需要向读者说明:本文作者也是一个ARM初学者,学习过程中也是在网上查找各种资料,最后总结于此.可以确定实验的过程中有好多地方笔者自己也是没有搞明白的,所以请读者原谅不能写的太透彻. 第一步:要点亮LED,首先需要了解GPIO的硬件位置,这样才能去操作相应的IO口,实现点灯目的 1.连接好bb-black之

SimMechanics/Second Generation倒立摆模型建立及初步仿真学习

笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框然后双击设置属性就可以慢慢堆建自己的模型,这一点我很中意(*^__^*) . 最近在学习一些控制理论,发现倒立摆是个不错的学习平台,开始学习肯定需要机构上面的运动学及动力学建模,一直习惯Adams进行运动仿真,但Adams安装比较繁琐...便想利用MATLAB代替仿真,顺便学习了解下传说的simul

第3讲 数码管显示

一. 数码管显示原理 我们最经常使用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其它的基本同样.所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形.数码管又分为共阴极和共阳极两种类型,事实上共阴极就是将八个LED的阴极连在一起,让其接地,这样给不论什么一个LED的还有一端高电平,它便能点亮.而共阳极就是将八个LED的阳极连在一起.其原理图例如以下. 当中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电