新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR IO輸出之LED顯示程序

AVR IO輸出之LED顯示程序

作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
系統(tǒng)功能:

   使用AVR控制8位LED,做到想閃就閃,不想閃就不閃,左閃右閃,拚命閃,演示AVR單片機之“點燈術”。

硬件設計

本文引用地址:http://butianyuan.cn/article/201611/320352.htm

  關于AVR的I/O結構及相關介紹詳見Datasheet,這里僅對作部分簡單介紹,下面是AVR的I/O引腳配置表:

AVR I/O 口引腳配置表

DDRXn

PORTXn

PUD

I/O 方式

內(nèi)部上拉電阻

引腳狀態(tài)說明

0

0

X

輸入

無效

三態(tài)(高阻)

0

1

0

輸入

有效

外部引腳拉低時輸出電流 (uA)

0

1

1

輸入

無效

三態(tài)(高阻)

1

0

X

輸出

無效

推挽 0 輸出,吸收電流 (20mA)

1

1

X

輸出

無效

推挽 1 輸出,輸出電流 (20mA)

雖然AVR的I/O口單獨輸出“1”時,可輸出較大電流足已點亮一盞燈,但AVR總的I/O輸出畢竟是有限的,所以,有經(jīng)驗的點燈者考慮到除了點燈外可能還有其它費勁的活兒要干,會將AVR的I/O口設計為輸出“0”時點燈,輸出“1”時熄燈。這種接法亦叫“灌電流接法”。


AVR主控電路原理

LED控制電路原理圖

軟件設計:
下面部分從TXT拷出,拷到網(wǎng)頁,代碼部分缺省了很多空格,比較凌亂,請諒解!

//目標系統(tǒng): 基于AVR單片機
//應用軟件: ICC AVR



#include
#include "D:ICC_HCmmICC.H"

#define LED_DDR DDRD
#define LED_PORT PORTD


void main(void)
{
uint8 i,j;

LED_DDR=0XFF;

while(1)
{
for(i=0;i<4;i++)
{
LED_PORT^=0xFF;//我閃!拚命閃!
delay50ms(10);
}
j=0x01;
for(i=0;i<8;i++)
{
j<<=1;
LED_PORT=j;//我左閃!
delay50ms(10);
}
j=0x80;
for(i=0;i<8;i++)
{
j>>=1;
LED_PORT=j;//我右閃!
delay50ms(10);
}
}
}




評論


技術專區(qū)

關閉