去年夏天在家養(yǎng)病的時候,閑著無聊,把過去的愛好(其實是工作)撿了起來,迫不及待地上網(wǎng)買了一個51的開發(fā)板(890RMB,代價不菲),功能挺全,使用挺方便,樣子挺好看,可就是沒用過幾次...等手頭的兩個小玩意兒做好了,也就到了該去正經(jīng)上班的時候了,于是這個開發(fā)板就閑置了下來。后來又迷上了AVR,它被再次啟用的可能性就更小了,直到最近做那個溫控器的時候又想起了它,因為我絕對不是個焊機(jī)派,也懶得設(shè)計電路板,一般就是用萬能板做永久的電路板,電路試驗和最終產(chǎn)品是同一個東西,如果剛開始設(shè)計思路就是對的,那很好,很節(jié)約時間,如果一開始就是錯的話,估計我是不會在重新拆下來焊接過了,那么這個東西基本上算是終結(jié)了。
如此看來,有一個開發(fā)板還是個不錯的選擇,但是重新買個開放板顯然不太合算,因為我也不知道玩這個能玩多久。記憶中應(yīng)該有個51轉(zhuǎn)AVR的轉(zhuǎn)換板,可以把AVR引腳轉(zhuǎn)換成51的引腳排列方式,如果把它放到51開發(fā)板上用,豈不省了很多錢么?于是上網(wǎng)一搜,還真不少,最后選擇了一家?guī)Э烧{(diào)基準(zhǔn)電壓的轉(zhuǎn)換板。其實這個板子用到開發(fā)板上還是有問題的,因為51是高電平復(fù)位,AVR正相反,所謂可以同時用在51和AVR上的說法的前提是板上帶51/AVR切換功能,顯然我手頭的開發(fā)板是沒有這個開關(guān)的,不過這個東西也不貴,買回來再慢慢研究。 東西到手后,大致的分析了引腳轉(zhuǎn)換的情況,發(fā)現(xiàn)端口轉(zhuǎn)換還是挺人性的,PA~PD對應(yīng)了P0~P3,這樣連線的時候不至于考慮個半天端口順序的問題,ISP端口也是一一對應(yīng)的,似乎可以直接使用開發(fā)板上的ISP接口和燒錄軟件,不過最后試驗證明,還是因為復(fù)位電平的不同,無法使用原有的ISP接口(至少我沒有實現(xiàn)),在幾乎放棄的時候,AVR的一個特性救了我,就是AVR的RESET腳可以直接接高電平,復(fù)位的穩(wěn)定時間由熔絲決定,延時最多65MS,所以只要在RESET腳接一個合適電阻,保證ISP的可靠性,以及不和原有的復(fù)位電路沖突就可以了,我的做法是在在轉(zhuǎn)換板上焊一個22歐的電阻,而ISP單獨引出來,程序的下載由USBASP來完成。編寫了一個小小程序(入門的LED閃爍程序)測試了一下,ISP下載正常,程序運行正常,端口順序正確,51開發(fā)板正式救活! 51開發(fā)板模塊還是很豐富的,其中很重要的一個就是LCD1602液晶顯示模塊,不過這個模塊的連線是固定的,不能更改,要改只能改程序,正好手頭有一個LCD1602 4位數(shù)據(jù)線的驅(qū)動程序(已經(jīng)在一個MINI開發(fā)板上測試過了,可以運行的),按板上的接線示意圖修改好程序,原來的程序使用了一個PA口,高4位做數(shù)據(jù)線,低2位做RS和EN,RW直接接地,現(xiàn)在改成4位數(shù)據(jù)線還是用PA口,RS使用PC0,EN使用PC2,RW使用PC1,由于不能將開發(fā)板的RW腳接地,所以改為由程序拉低到低電平。整個測試過程看是簡單,只不過是改幾個端口號而已,其實花了差不多一個晚上,直到今天的凌晨1點才發(fā)現(xiàn)了問題所在。期間改過程序?qū)懛,用MINI開發(fā)板驗證等等手段,程序就是無法運行,后來實在沒轍,隨手改了一下EN的端口,由PC2改成PC1,這才運行正常,而且改其他端口都可以,就是不能用PC2,于是自然想到是否是PC2有什么特別之處,查了資料得知,PC2是JTAG的測試時鐘接口,在JTAG使能的情況下是不能用作IO口,于是在熔絲位里把JTAG使能改成了禁止,程序運行成功!接下來就是移植到51開發(fā)板上測試,測試也是成功,只是程序只有在ISP下載后才能運行,上電的時候不能運行,很顯然是復(fù)位不好,再在熔絲位里將復(fù)位等待時間改成65ms,成功! 至此,已經(jīng)能51開發(fā)板開發(fā)AVR單片機(jī)了,拿下轉(zhuǎn)換板,照樣可以開發(fā)51芯片,隨便還學(xué)習(xí)了一把熔絲位的某些用法(比如這個JTAG使能位),昨天測試轉(zhuǎn)換板的時候由于失誤手頭兩片M16被鎖死,后來是借用了51開發(fā)板上的晶振解了鎖,這樣又學(xué)會了解鎖AVR芯片,總之收獲很大!
|