ello,大家好,歡迎大家來到LIUSE網(wǎng)絡(luò)。
說到單片機(jī)大家肯定都不陌生,用來做個(gè)小型自動(dòng)化控制啊,解決個(gè)小問題啊,都是非常省事的辦法。
現(xiàn)在市面上流行的諸如80C51系列ARM系列STM32等等實(shí)在不少。雖然原理都是差不多,但是在編程環(huán)境上卻有差異。對(duì)于只是偶爾玩玩的朋友來講,鄙人不推薦大家去玩(當(dāng)然如果你果真是從頭開始學(xué),而不是玩玩,那推薦從80C51學(xué)起,效果會(huì)比較好一些)。
那如何用最低的成本,并且還適合小白寫代碼,去做出一個(gè)最小系統(tǒng)呢?那今天我們就來說一下。
考慮到以上因素,我們會(huì)選擇arduino平臺(tái)(好處太多,創(chuàng)客必備,簡(jiǎn)單輕便,更多有點(diǎn)請(qǐng)自行百度)。用的單片機(jī)呢型號(hào)是ATmega8A-PU,編程IED為arduino1.0接下來我們開始進(jìn)行裝箱。
ATmega8A-PU X1(某寶價(jià)格4-10元不等)
8MHz晶振 X1(幾毛錢)
22pF電容 X2(幾毛錢)
10K歐電阻
150歐電阻
USBASP燒錄器 X1(15-35元不等)
LED小燈泡
面包版或者洞洞板一塊
先來放一張ATmega8A-PU的引腳圖,看一下各個(gè)引腳的作用:
(ATmega8A-PU示意圖)
接下來我們開始進(jìn)行接線:
1先做一個(gè)震蕩電路,將晶振連接ATM8A-PU的Pin9、Pin10也就是對(duì)應(yīng)上圖的PB6跟PB7,然后在此的基礎(chǔ)上Pin9跟Pin10分別連接一個(gè)22pF的電容,最后引出一條線接地。請(qǐng)看下圖:
(震蕩電路接線)
2進(jìn)行系統(tǒng)的下載與供電,將ICSP的D11/D12/D13分解接單片機(jī)的Pin17/Pin18/Pin19 5V接Pin7(VCC) GND接Pin22(GND)rest接Pin1。請(qǐng)看下圖:
(ICSP示意圖)
(總電路原理圖)
+5V → pin7(VCC)
GND → ping22(GND)
D11 → pin17(PB3)
D12 → pin18(PB4)
D13 → pin19(PB5)
reset → pin1(reset)
連接好線之后大概就是下圖的樣子啦(鄙人目前在老家,沒辦法上自己的實(shí)物圖,先從網(wǎng)上找一張吧)
(實(shí)物接線圖)
以上的硬件環(huán)境搭建好之后,我們就開始來進(jìn)行燒錄了。
打開我們的arduino IDE編寫環(huán)境,這里我們測(cè)試LED燈閃爍所以直接打開官方給我們提供的示例就行(文件->示例->Basics->Blink)
(Blink示例)
然后找到文件->參數(shù)設(shè)置(首選項(xiàng))輸出顯示詳細(xì)信息打勾(后面有用到路徑)
然后找到工具-選擇開發(fā)板-選擇ATmega8_8MHz這個(gè)板子(注意,IDE一定要用1.x的不然有些版本是找不到的)
(選擇板卡)
然后點(diǎn)擊左上角的“√”按鈕開始進(jìn)行編譯。編譯完成之后,IDE會(huì)生成一個(gè)HEX文件,并且會(huì)輸出HEX文件所在的路徑,你可以復(fù)制出來找到它。
(hex文件路徑)
做完上面的工作后,我們開始上傳到我們的最小系統(tǒng)。在上傳之前,我們還需要做一些準(zhǔn)備工作,這包括配置一下文件、安裝USBasp驅(qū)動(dòng)、做一下熔絲位等。
1.打開arduino的boards.txt這個(gè)文件做一下改動(dòng)(路徑為arduino安裝路徑]\hardware\arduino\avr\boards.txt)
注:有的版本沒有avr這個(gè)文件夾 boards.txt直接在arduino下
在最后一行加入下面的代碼:
##############################################################
atmega8_8M.name=ATMega8L (8MHz, without external crystal)
atmega8_8M.upload.protocol=arduino
atmega8_8M.upload.maximum_size=7168
atmega8_8M.upload.speed=115200
atmega8_8M.bootloader.low_fuses=0xa4
atmega8_8M.bootloader.high_fuses=0xdc
atmega8_8M.bootloader.path=optiboot
atmega8_8M.bootloader.file=optiboot_atmega8_8M.hex
atmega8_8M.bootloader.unlock_bits=0x3F
atmega8_8M.bootloader.lock_bits=0x0F
atmega8_8M.build.mcu=atmega8
atmega8_8M.build.f_cpu=8000000L
atmega8_8M.build.core=arduino
atmega8_8M.build.variant=standard
2.我們將剛才編譯生成的兩個(gè)文件復(fù)制到arduino根路徑\hardware\arduino\avr\bootloaders\optiboot文件夾下。
3.安裝USBasp驅(qū)動(dòng)(這個(gè)沒啥可說的驅(qū)動(dòng)隨便搜一下就OK)安裝完計(jì)算機(jī)管理里面的串口里面會(huì)有顯示
(驅(qū)動(dòng)安裝完成)
4.打開客服給我們提供的燒寫軟件(推薦用智峰的progisp1.72,隨便百度一下都可以下載)選擇我們要燒錄芯片的型號(hào)(ATmega8A)
(對(duì)應(yīng)我們芯片型號(hào))
然后確認(rèn)選擇是否正確,正確的話右邊的PRG會(huì)點(diǎn)亮。
(配置正確)
然后點(diǎn)右下角的...按鈕進(jìn)入熔絲位設(shè)置。然后點(diǎn)三個(gè)"讀出"按鈕,可讀出當(dāng)前芯片的熔絲設(shè)置,點(diǎn)擊"向?qū)Х绞?,彈出向?qū)?duì)話框。
之后,點(diǎn)向?qū)Х绞絹碓O(shè)置熔絲向?qū)В赏ㄟ^直接勾選選項(xiàng)來設(shè)置熔絲,其它選項(xiàng)我們先不做說明,先看看晶振相關(guān)的選項(xiàng),我們可以看到芯片默認(rèn)是使用"內(nèi)部RC振蕩器(1MHz)",現(xiàn)在我們要用外部8M的晶振,我們可以選倒數(shù)第三個(gè)選項(xiàng)。點(diǎn)寫入。
(繼續(xù)寫入)
5.最后點(diǎn)擊右上角的調(diào)入Flash,然后選擇我們編譯好的.hex文件 點(diǎn)自動(dòng)就開始寫入啦。
然后給你的系統(tǒng)通上電試試效果吧~
Hello,大家好,歡迎大家來到LIUSE網(wǎng)絡(luò)。
說到單片機(jī)大家肯定都不陌生,用來做個(gè)小型自動(dòng)化控制啊,解決個(gè)小問題啊,都是非常省事的辦法。
現(xiàn)在市面上流行的諸如80C51系列ARM系列STM32等等實(shí)在不少。雖然原理都是差不多,但是在編程環(huán)境上卻有差異。對(duì)于只是偶爾玩玩的朋友來講,鄙人不推薦大家去玩(當(dāng)然如果你果真是從頭開始學(xué),而不是玩玩,那推薦從80C51學(xué)起,效果會(huì)比較好一些)。
那如何用最低的成本,并且還適合小白寫代碼,去做出一個(gè)最小系統(tǒng)呢?那今天我們就來說一下。
考慮到以上因素,我們會(huì)選擇arduino平臺(tái)(好處太多,創(chuàng)客必備,簡(jiǎn)單輕便,更多有點(diǎn)請(qǐng)自行百度)。用的單片機(jī)呢型號(hào)是ATmega8A-PU,編程IED為arduino1.0接下來我們開始進(jìn)行裝箱。
ATmega8A-PU X1(某寶價(jià)格4-10元不等)
8MHz晶振 X1(幾毛錢)
22pF電容 X2(幾毛錢)
10K歐電阻
150歐電阻
USBASP燒錄器 X1(15-35元不等)
LED小燈泡
面包版或者洞洞板一塊
先來放一張ATmega8A-PU的引腳圖,看一下各個(gè)引腳的作用:
(ATmega8A-PU示意圖)
接下來我們開始進(jìn)行接線:
1先做一個(gè)震蕩電路,將晶振連接ATM8A-PU的Pin9、Pin10也就是對(duì)應(yīng)上圖的PB6跟PB7,然后在此的基礎(chǔ)上Pin9跟Pin10分別連接一個(gè)22pF的電容,最后引出一條線接地。請(qǐng)看下圖:
(震蕩電路接線)
2進(jìn)行系統(tǒng)的下載與供電,將ICSP的D11/D12/D13分解接單片機(jī)的Pin17/Pin18/Pin19 5V接Pin7(VCC) GND接Pin22(GND)rest接Pin1。請(qǐng)看下圖:
(ICSP示意圖)
(總電路原理圖)
+5V → pin7(VCC)
GND → ping22(GND)
D11 → pin17(PB3)
D12 → pin18(PB4)
D13 → pin19(PB5)
reset → pin1(reset)
連接好線之后大概就是下圖的樣子啦(鄙人目前在老家,沒辦法上自己的實(shí)物圖,先從網(wǎng)上找一張吧)
(實(shí)物接線圖)
以上的硬件環(huán)境搭建好之后,我們就開始來進(jìn)行燒錄了。
打開我們的arduino IDE編寫環(huán)境,這里我們測(cè)試LED燈閃爍所以直接打開官方給我們提供的示例就行(文件->示例->Basics->Blink)
(Blink示例)
然后找到文件->參數(shù)設(shè)置(首選項(xiàng))輸出顯示詳細(xì)信息打勾(后面有用到路徑)
然后找到工具-選擇開發(fā)板-選擇ATmega8_8MHz這個(gè)板子(注意,IDE一定要用1.x的不然有些版本是找不到的)
(選擇板卡)
然后點(diǎn)擊左上角的“√”按鈕開始進(jìn)行編譯。編譯完成之后,IDE會(huì)生成一個(gè)HEX文件,并且會(huì)輸出HEX文件所在的路徑,你可以復(fù)制出來找到它。
(hex文件路徑)
做完上面的工作后,我們開始上傳到我們的最小系統(tǒng)。在上傳之前,我們還需要做一些準(zhǔn)備工作,這包括配置一下文件、安裝USBasp驅(qū)動(dòng)、做一下熔絲位等。
1.打開arduino的boards.txt這個(gè)文件做一下改動(dòng)(路徑為arduino安裝路徑]\hardware\arduino\avr\boards.txt)
注:有的版本沒有avr這個(gè)文件夾 boards.txt直接在arduino下
在最后一行加入下面的代碼:
##############################################################
atmega8_8M.name=ATMega8L (8MHz, without external crystal)
atmega8_8M.upload.protocol=arduino
atmega8_8M.upload.maximum_size=7168
atmega8_8M.upload.speed=115200
atmega8_8M.bootloader.low_fuses=0xa4
atmega8_8M.bootloader.high_fuses=0xdc
atmega8_8M.bootloader.path=optiboot
atmega8_8M.bootloader.file=optiboot_atmega8_8M.hex
atmega8_8M.bootloader.unlock_bits=0x3F
atmega8_8M.bootloader.lock_bits=0x0F
atmega8_8M.build.mcu=atmega8
atmega8_8M.build.f_cpu=8000000L
atmega8_8M.build.core=arduino
atmega8_8M.build.variant=standard
2.我們將剛才編譯生成的兩個(gè)文件復(fù)制到arduino根路徑\hardware\arduino\avr\bootloaders\optiboot文件夾下。
3.安裝USBasp驅(qū)動(dòng)(這個(gè)沒啥可說的驅(qū)動(dòng)隨便搜一下就OK)安裝完計(jì)算機(jī)管理里面的串口里面會(huì)有顯示
(驅(qū)動(dòng)安裝完成)
4.打開客服給我們提供的燒寫軟件(推薦用智峰的progisp1.72,隨便百度一下都可以下載)選擇我們要燒錄芯片的型號(hào)(ATmega8A)
(對(duì)應(yīng)我們芯片型號(hào))
然后確認(rèn)選擇是否正確,正確的話右邊的PRG會(huì)點(diǎn)亮。
(配置正確)
然后點(diǎn)右下角的...按鈕進(jìn)入熔絲位設(shè)置。然后點(diǎn)三個(gè)"讀出"按鈕,可讀出當(dāng)前芯片的熔絲設(shè)置,點(diǎn)擊"向?qū)Х绞?,彈出向?qū)?duì)話框。
之后,點(diǎn)向?qū)Х绞絹碓O(shè)置熔絲向?qū)В赏ㄟ^直接勾選選項(xiàng)來設(shè)置熔絲,其它選項(xiàng)我們先不做說明,先看看晶振相關(guān)的選項(xiàng),我們可以看到芯片默認(rèn)是使用"內(nèi)部RC振蕩器(1MHz)",現(xiàn)在我們要用外部8M的晶振,我們可以選倒數(shù)第三個(gè)選項(xiàng)。點(diǎn)寫入。
(繼續(xù)寫入)
5.最后點(diǎn)擊右上角的調(diào)入Flash,然后選擇我們編譯好的.hex文件 點(diǎn)自動(dòng)就開始寫入啦。
然后給你的系統(tǒng)通上電試試效果吧~