2008年10月7日 星期二

無聊中的興趣

這幾天在搞一個電路

一直碰到問題

不過這樣才學到東西

恩...不錯

什麼跟什麼XD


  • 轉帖



  • 燒錄89C2051(用89S51或89C2051)


    我想做一個能燒錄89C2051的89C2051

    但是我沒燒錄器,所以我沒辦法燒錄第一顆89C2051


    所以我要做一顆能燒錄89C2051的89S51,再用這顆89S51來燒錄能燒錄89C2051的89C2051(.....)

    這讓我想到一個笑話...

    某A看到某B站在某B自己家門外,問他在幹麻...

    某B:『想開車出門,但是車鑰匙放在家裡,而家的鑰匙卻放在車子裡...』




    看看89C2051的DATASHEET

    想做一個IC,功用是:


  • UART跟8bit序列互相轉換


  • 提供三個自定義的腳位供UART端控制使用


  • 提供中斷腳位以回傳值


  • 把相關的腳位做了定義

    P1.0~P1.7     輸出並列埠

    P3.7     EA腳位

    P3.3     自訂腳位A
    P3.4     自訂腳位B
    P3.5     自訂腳位C

    P3.2     中斷腳位

    剩下的就是C2051的其他腳位(RST、XTAL等等)

    因為是用串列控制,所以要一些protocol
    串列收到的資料定義如下

    00~FF 讓P1輸出00~FF的某值,然後EN送出一個脈波
    en EN送出一個脈波
    e1 EN高電位
    e0 EN低電位

    a0 自訂腳位A低電位
    a1 自訂腳位A高電位
    an 自訂腳位A反向
    ac 自訂腳位A送出一個脈波
    at 傳回自訂埠A的值

    tx 傳回P1的值



    上面的聽的霧煞煞沒關係

    再來就是結果展示啦

    我來示範怎麼燒錄C2051

    下載電腦端燒錄程式和燒錄驅動晶片HEX檔

    先把這個HEX檔燒錄進S51內,S51燒錄電路和程式能參考這裡



    再照著這個電路圖把燒錄好的S51和其他零件接出來



    這個電路的驅動IC也能適用C2051(這也是我這一次寫這一篇的目的)

    我有刻意避開P3.6,所以只要接於相對應的腳位就行了(前提是你要有辦法燒錄) ,C2051的P1有LED DRIVER,燒錄起來應該會更穩定



    再來照著程式的指示就能燒錄C2051了



    用麵包板接線的情況



    因為HIN232的電容太多了,所以偷懶一下用事先焊好的實驗版接出來。

    12V電源可以用電源供應器的大四PIN來接出來,比較省事

    注意的是同一條大四PIN別同時接風扇不然電路會不穩定


    因為希望讓電路簡單
    所以並沒有回傳值除錯的功能
    如果燒錯了就再燒一次吧(我也只有一次沒Erase燒錯而已)



    Q&A



    MAC
    提到...


    您好
    我有照你的電路接好
    試了一下燒錄89C2051
    好像有燒錄成功(有顯示燒錄成功) 又不太確定
    按偵測電路 顯示偵測不到燒錄驅動晶片
    跳過2 直接跳3按燒錄 有顯示燒錄完成
    不曉得這樣有沒有燒錄成功呢?
    附上圖片
    http://lh6.ggpht.com/jackylee3232/SOY6WMivQaI/AAAAAAAABR4/131NHUHPtCg/s800/error.jpg
    不好意思
    謝謝






    Mahdi

    提到...


    一定要偵測到晶片才能燒錄喔!!

    因為讀取需要控制電壓值。
    為了避免電路過於複雜
    所以我並沒有做讀取的動作,
    偵測晶片只是偵測燒錄驅動晶片,沒有辦法偵測被燒錄的C2051

    在燒錄時電路中的LED燈會閃爍,可以供你判斷燒錄時的狀況。

    如果接線無誤仍然偵測不到驅動晶片,就試著將驅動晶片RESET試試看






    MAC
    提到...


    您好
    我想再請問一下
    因為我早上又重接一遍
    確定S51有燒錄韌體進去
    接好要燒C2051時 就是沒辦法抓到燒錄驅動晶片
    想請問您一下 如果跳過2燒錄 您那邊也是會顯示燒錄成功嗎? 這就表示雖然顯示有燒錄成功 實際上是沒有燒錄程式進去嗎?
    我有把RS232的5pin接地
    用電表量了一下 RS232的RX pin沒接上電源是0V TX pin是-5V 接上電腦端大四pin的電源後 RX pin沒接上電源是快9V TX pin是-10V
    因為想把問題找出來 所以可能要麻煩您一下 可以看的出來 問題大概在那嗎?
    不好意思問題有點多
    謝謝






    Mahdi

    提到...


    跳過偵測也是會燒錄成功的= ="

    這算是BUG吧,我已經修正了

    照著下面的方法測測看:

    1.先把RS232 TX跟RX短路,用程式(超級終端機之類的)測測看輸出的訊號會不會傳回來

    2.把MAX232接出的TXD跟RXD短路,再測測看輸出的訊號會不會傳回來

    3.接上S51,BaudRate調(9600,n,8,1)讓程式輸出"sb",看看會不會傳回"U0"

    4.把S51的P3.7(原本接到C2051的P3.2)串接一顆LED至陽極,讓程式輸出"en",看看LED會不會閃爍


    沒有留言: