欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 单片机类型 >> AVR系列 >> 文章正文

AVR单片机实现键控灯的设计

    前一课中,我们学习了用AVR单片机实现流水灯的过程,下面我们将通过一个例子继续学习如何用AVR单片机的输入引脚来控制输出。
    1.硬件连接
    ATMEGA8515的PORTD引脚中的PD2、PD3、PD4、PD5四个引脚分别接有按钮,按钮按下时,这几个引脚分别接地。PB口共接有8个发光二极管。
    2.功能要求
    这个程序的要求很简单,开机后,所有灯均不亮,按下按钮后,相应的LED发光,例如:PD2上所接的按钮按下时,PB2上所接的LED发光,PD3上所接的按钮按下时,PB3上所接的LED发光,依此类推。
    3.程序实现
/**************************************************
;    平凡单片机工作室
;  http://www.mcustudio.com
;    Copyright 2004 pingfan's McuStudio
;    All rights Reserved
;作者:周坚   
;jkd.c
;键控灯程序,用于AT89S8515或者ATMEG8515,在DSB-1A型实验板上实现
**************************************************/
#include "avr/io.h"
static void io_init(void)
{
//PortB Set
PORTB = 0xff;
DDRB = 0xff;
// PortD
PORTD = 0xFF;
DDRD = 0x0;
}

int main(void)
{
io_init();
while(1)
{
PORTB=PIND; //读引脚
}
}
    4.程序分析
    ATMEGA8515的引脚既可作为输入又可作为输出,与51单片机不同,IO口作为输入或者输出时,首先设置相应的寄存器。这里将PORTB设置为输出,PORTD设置为输入。设置为输入引脚时,同时将PORTD置为0XFF,这是要求AVR向输入引脚提供一个弱上拉,这种用法与80C51的特性类似。如果此时设置PORTD=0,那么PORTD将为高阻态,必须在外电路明确地提供上拉或下拉电阻,以确定其电平,而我们的电路中并未接上拉电阻,所以不能用这种方式。
主程序非常简单,除了调用了初始化程序外,就是一行:PORTB=PIND;这是读出端口D的引脚的值,并送到端口B。注意,对于AVR单片机而言,端口有一个专门的引脚输入地址,要获得引脚的信息,必须直接读这个地址中的数据,这与80C51是不一样的。单片机之路的永久域名:www.mcuway.com

普通文章28课:单片机音乐汇编程序设计
普通文章27课:单片机的一些基本概念
普通文章26课:单片机矩阵式键盘接口技术
普通文章非常详细的51单片机引脚介绍
普通文章图解使用Keil C51软件的九个步骤
普通文章哈佛(Harvard)结构的单片机的原理图
普通文章单片机引脚及功能说明
普通文章c51单片机c语言教程介绍
普通文章第一课 建立你的第一个KeilC51项目
普通文章第二课 HEX文件的生成和MCU最小系统
普通文章第三课 C51语言的数据类型
普通文章第四课 C51常量
普通文章第五课 C51变量
普通文章第六课 C51运算符和表达式
普通文章第七课 运算符和表达式(关系运算符)
普通文章第八课 运算符和表达式(位运算符)
普通文章第九课 C51运算符和表达式(指针和地址
普通文章第十课 C51表达式语句及仿真器
普通文章第十一课 C51复合语句和条件语句
普通文章第十二课 C51开关分支语句
普通文章第十三课 C51循环语句
普通文章第十四课 C51函数
普通文章第十五课 C51数组的使用
普通文章第十六课 C51指针的使用
普通文章第十七课 C51结构、联合和枚举的使用

  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电流单位
    普通文章功率单位
    普通文章什么是达林顿管?
    普通文章晶闸管的作用与原理

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com