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