1. Atmega16單片機簡介
今天我們的主題是單片機,說道單片機你可能最先想到的是51單片機,然后通過外接的數字電路和模擬電路來控制外圍的硬件,比如PWM,ADC,I2C等等。那么今天我們所說的是什么那?其實你把Atmega16單片機當成51單片機來使用即可,只不過是Atmega16單片機的外圍接口更豐富,那么它都有什么外設資源那?
ATmega16是基于增強的AVR RISC結構的低功耗8 位CMOS微控制器,由于其先進的指令集以及單時鐘周期指令執行時間,ATmega16 的數據吞吐率高達1 MIPS/MHz。ATmega16常用片上資源有定時器、PWM、外部中斷、SPI總線、兩線串行接口TWI、EEPROM、USART、模擬比較器、ADC轉換、IEEE(JTAG)邊界掃描等。如何去學習Atmega16單片機那?我們從硬件和軟件兩方面分析。
2. Atmega16單片機硬件原理圖(最小系統)
從上述的最小系統板子上們可以看到它分為如下幾個部分:
復位電路:上電復位(電容),手動按鍵復位。
晶振電路:Atmega16單片機內部自帶RC震蕩電路,但是自帶的震蕩電路不夠精確,所以這里就外接了一個8MHZ的晶振。
下載程序接口ISP:ISP串行的下載程序的接口
Atmega16單片機:8位avr單片機。
1. Atmega16單片機編程
AVR單片機的編譯軟件有GCC AVR和ICC AVR等,通常使用較多的是ICC AVR,也比較好用,本書以ICC AVR6.31版本為例介紹編譯軟件的使用。啟動ICC AVR,界面如下圖所示。如何使用avr單片機控制最小系統上的led燈那?代碼如下:
AVR ATmega16 流水燈C程序
/**************************************************************************/
#include //包含單片機型號頭文件
#include //包含“位”操作頭文件
void delay(void) //自定義延時函數
{
unsigned char i,j;
for(i=0;i《255;i++)
for(j=0;j《10;j++)
;
}
void cpu_init(void) //單片機初始化函數
{
PORTA = 0x00; //PA口輸出值都定義為0
DDRA = 0x00; //PA口輸出允許關
PORTB = 0x00; //PB口輸出值都定義為0
DDRB = 0x00; //PB口輸出允許關
PORTC = 0x00; //PC口輸出值都定義為0
DDRC = 0x00; //PC口輸出允許關
PORTD = 0x00; //PD口輸出值都定義為0
DDRD = 0x00; //PD口輸出允許關
}
void main(void)
{
cpu_init(); //初始化單片機
while(1)
{
PORTA=0X00; /*點亮led燈,由最小系統的外部電路決定單片機輸出
低電平時流水燈點亮*/
DDRA=0XFF; /*允許輸出,此時PORTA的賦值才有效,這事AVR比51高級的地方*/
//由于其他端口沒有接外圍設備先不用定義
delay();
DDRA=0X00; //關閉led燈
delay();
}
}
-
adc
+關注
關注
99文章
6640瀏覽量
548302 -
51單片機
+關注
關注
277文章
5710瀏覽量
126633 -
定時器
+關注
關注
23文章
3288瀏覽量
117254 -
ATmega16單片機
+關注
關注
1文章
26瀏覽量
20961
發布評論請先 登錄
單片機課程的教學與實驗改革
自制ATMEGA16單片機實驗板,印刷PCB,有圖有程序
Atmega16單片機實用程序Atmega16單片機實用程序
基于ATmega16單片機的實時溫度采集與分析系統

ATmega16單片機教程之ATmega16單片機定時器的分析與設計應用概述

如何實現ATMEGA16單片機與PC機的通信
AVR單片機最小系統的基本硬件線路與分析資料免費下載

評論