AVRmega16 LED 例程

本文档详细介绍了如何使用AVRmega16微控制器进行1位8段数码管的驱动,涵盖了从硬件连接到C/C++代码实现的全过程,是嵌入式开发中的一个基础实例。
摘要由CSDN通过智能技术生成
 
                                                                                    AVRmega16 LED  例程
 
例程1:点亮一个灯
#include<mega16.h>
#include<delay.h>
void main(void)
{
DDRA=0xff;
while(1)
{
PORTA=0x01;
};
}
 
例程2:运用8个LED显示出流水灯的效果(运用for语句)
#include<mega16.h>
#include<delay.h>
void main(void)
{
unsignedchar i;
PORTA=0x00;
DDRA=0xFF;
while(1)
{
for(i=0;i<8;i++)
{
PORTA=1<<i ;
delay_ms(200);
}
}
}

 

或者(运用if语句,用位移 << 操作实现)
 
例程
#include<mega16.h>
#include<delay.h>
void main(void)
{
unsignedchar a;
PORTA=0x00;
DDRA=0xFF;
a=0b00000001;
while(1)
{
if(a==0b00000000)
a=0b00000001;
PORTA=a;
a=a<<1;
delay_ms(200);
}
}
 
或者用一维数组
 
#include<mega161.h>
#include<delay.h>
void main()
{
unsignedchar display1[]={
      0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsignedchar display2[]={
      0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsignedchar k,b;
DDRA=0xff;
while(1)
{
for(k=0;k<8;k++)
{
PORTA=display1[k];
delay_ms(150);
}
for(b=0;b<8;b++)
{
PORTA=display2[b];
delay_ms(150);
}
}
}

 

例程3:用独立按键控制一个灯(运用if与else语句)
#include<mega16.h>
#include<delay.h>
void main(void)
{
DDRA=0xff;
DDRB=0x00;
PORTB=0xff;
while(1)
{
if(PINB.0==0)
{
PORTA=0x01;
//delay_ms(1000);
}
else
{
PORTA=0x00;
// delay_ms(1000);
}
};
}

 

  
 
  
例程4:用独立按键控制8个灯(运用switch语句)
 
牛刀小试:自己用switch编写:
 
 
#include<mega16.h>
#include<delay.h>
void main(void)
{
DDRA=0xff;
DDRB=0x00;
while(1)
{
switch(PINB)
{
case(0xfe):
PORTA=0x01;break;
case(0xfd):
PORTA=0x02;break;
case(0xfb):
PORTA=0x04;break;
case(0xf7):
PORTA=0x08;break;
case(0xef):
PORTA=0x10;break;
case(0xdf):
PORTA=0x20;break;
case(0xbf):
PORTA=0x40;break;
case(0x7f):
PORTA=0x80;break;
}
};
}

                     

1位8段数码管

例程1:使数码管从0-F跳动(运用一维数组)
 
 
#include<mega16.h>
#include<delay.h>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值