<output id="yn1pw"></output>
    <wbr id="yn1pw"></wbr>

    <form id="yn1pw"><legend id="yn1pw"></legend></form>

  1. 更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

    我來分享51單片機的DIY歷程,你來回答我軟件、硬件方向的問題!

    • 發布:一葉傾城wwq
    • 來源:嵌入式ARM
    • 時間:2018-07-16 16:50

    關鍵詞:嵌入式培訓 DIY51單片機 嵌入式發展方向

    本文是一位嵌入式新手寫的自己DIY51單片機的歷程,算是“拋磚引玉”吧,對嵌入式仍然抱有熱情,但是卻迷失在岔路口,希望走過這條路的各位前輩能夠給予良好的建議,來了解一下吧:

    寫這個帖子其實還是自己對后面的職業規劃不清晰,所以想來各位前輩交流和請教(各位前輩之前都是怎樣渡過的?)另一方面是整理下自己做的東西,將自己做的東西放到二姨家(第一次),雖然都是些小玩意,之前算是自己學的51吧,我們學校居然還上的匯編(不是說匯編不好),雖然也跟著學了些,但從來老師布置的任務都是用C,現在就是匯編指令都快忘光了,能看點,但不會寫。

    實習做了一段時間電路板維修,然后就開始做MCU開發相關的工作,公司目前使用的是PIC系列的MCU。

    寫這個帖子的初衷是想和各位前輩交流下,想聽聽前輩們的經驗或者歷程(前輩們愿意說的話),對于學習51之后應該學什么做什么,在網上也看過點篇相關文章,就是AVR、PIC和STM32等(MCU)或者ARM(上操作系統),對此確實感到了些不知怎么做...

    回憶下,這是原來第一次自己焊洞洞板時的拍的,是一個ds18b20采集和64位光刻ROM讀出的小東西:

    嵌入式培訓 DIY51單片機 嵌入式發展方向

    這是到現在做的最失敗的作品,沒有之一,用學校雕刻機雕的,也是雕刻水平和經驗值還不夠啊,本來想做個ADC轉換和485通信的,結果就這樣了:

    嵌入式培訓 DIY51單片機 嵌入式發展方向
    嵌入式培訓 DIY51單片機 嵌入式發展方向

    后來決定還是從小做起,先不要搞得復雜了,先把溫度采集做個PCB,要的是可行性和穩定性,于是也開始學習PCB畫板布線,這時我還沒有使用AD的,用的是DXP2004,之前學過點后面基本記不得了,基本也是現學現賣,好在沒犯什么很嚴重的錯誤導致整塊板子廢掉那種,錯誤也有就是把USB電源的網絡標簽放反了,導致割線,廢話不多,上圖:

    51計算器PCB:

    嵌入式培訓 DIY51單片機 嵌入式發展方向
    嵌入式培訓 DIY51單片機 嵌入式發展方向

    這是前段時間做的12864顯示詩詞可用按鍵控制和上位機發送命令控制,也是開始使用AD畫圖之后第一次用AD畫板,可以先先介紹一下,液晶屏是用的帶字庫的,顯示字符方便倒是方便,就是畫圖和反白有問題,為此我還在論壇上發帖問過呢,以后堅決不用,還是自己寫字庫好,就是我用的STC89C52撐不住啊,現在才4首詩只往里寫了3首,程序存儲空間和ROM已經放不下了;按鍵是抬起執行(顯示滾動和開背光和蜂鳴器),所有任務都交給定時器來分配,不死循,但是有一個問題:開啟串口接收中斷后顯示刷新時間被拉長了。上圖吧,完整的代碼就不放這兒了,太占地方,放個片段

    /*********************************************

    FunctionName: pomeDisplay

    FunctionInfo: 詩詞顯示函數

    Input: no

    Output: no

    注:如果想要整屏向下移動->改變行數(行++)DisplayWhere(gFlag.gKeyRow +1,gVerse1.firstVerse);

    但這種做法不好;于是想了第二種方法->不改變行數 改變顯示內容

    就可以向上翻,把下面的也顯示出來

    **********************************************/

    void pomeDisplay(void)
    
    {
    
    switch(gFlag.gKeyPage)
    
    {
    
    case 0: //第一頁->詩名
    
    {
    
    DisplayWhere(1,gTitile.firstPoetry+16*gFlag.gKeyRow); //&a+16和a+16一樣的效果
    
    if(gFlag.gKeyRow <(TITLE_NUM-1)) //若是改變詩的首數需改變這個宏
    
    {
    
    DisplayWhere(2,gTitile.secondPoetry+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-2))
    
    {
    
    DisplayWhere(3,gTitile.thirdPoetry+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-3)) //向上翻顯示時不加邊界檢查 不需要顯示那行會顯示垃圾內容
    
    { //也就是現在4首詩按下第二次下鍵后第四行便要為空移到上行
    
    DisplayWhere(4,gTitile.fourthPoetry+16*gFlag.gKeyRow);
    
    }
    
    break;
    
    }
    
    case 1: //第二頁->詩句
    
    {
    
    if(ZERO == gFlag.gTitleCnt) //第一首
    
    {
    
    DisplayWhere(1,gVerse1.firstVerse+16*gFlag.gKeyRow);
    
    if(gFlag.gKeyRow <(TITLE_NUM-1))
    
    {
    
    DisplayWhere(2,gVerse1.secondVerse+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-2))
    
    {
    
    DisplayWhere(3,gVerse1.thirdVerse+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-3))
    
    {
    
    DisplayWhere(4,gVerse1.fourthVerse+16*gFlag.gKeyRow);
    
    }
    
    break;
    
    }
    
    if(ONE == gFlag.gTitleCnt) //第二首
    
    {
    
    DisplayWhere(1,gVerse2.firstVerse+16*gFlag.gKeyRow);
    
    if(gFlag.gKeyRow <(TITLE_NUM-1))
    
    {
    
    DisplayWhere(2,gVerse2.secondVerse+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-2))
    
    {
    
    DisplayWhere(3,gVerse2.thirdVerse+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-3))
    
    {
    
    DisplayWhere(4,gVerse2.fourthVerse+16*gFlag.gKeyRow);
    
    }
    
    break;
    
    }
    
    if(TWO == gFlag.gTitleCnt) //第三首
    
    {
    
    DisplayWhere(1,gVerse3.firstVerse+16*gFlag.gKeyRow);
    
    if(gFlag.gKeyRow <(TITLE_NUM-1))
    
    {
    
    DisplayWhere(2,gVerse3.secondVerse+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-2))
    
    {
    
    DisplayWhere(3,gVerse3.thirdVerse+16*gFlag.gKeyRow);
    
    }
    
    if(gFlag.gKeyRow <(TITLE_NUM-3))
    
    {
    
    DisplayWhere(4,gVerse3.fourthVerse+16*gFlag.gKeyRow);
    
    }
    
    break;
    
    }
    
    }
    
    default:break;
    
    }
    
    }
    嵌入式培訓 DIY51單片機 嵌入式發展方向
    嵌入式培訓 DIY51單片機 嵌入式發展方向
    嵌入式培訓 DIY51單片機 嵌入式發展方向
    嵌入式培訓 DIY51單片機 嵌入式發展方向

    12864顯示詩詞并通信控制

    這就是我的DIY歷程,

    嵌入式培訓 DIY51單片機 嵌入式發展方向

    這是原來還在學校時就一直想做的計算器,現在也干脆不在實驗板上弄了,為了熟悉PCB布線也把它做成PCB吧,于是就有了下圖:

    嵌入式培訓 DIY51單片機 嵌入式發展方向

    以上就是我的51DIY歷程,雖然現在在上班了,可是還在糾結是偏軟件還是硬件....

    感謝您的閱讀,閱讀完了本文主人公的51單片機DIY歷程,您有什么好的建議給他嗎?在嵌入式中,嵌入式軟件相對嵌入式硬件來說要容易一些,可以看一下《嵌入式大佬分享嵌入式怎么學》《如何從單片機開發過度到嵌入式開發》《5年嵌入式軟件工程師的小建議》等文章,希望對你有所幫助。更多嵌入式相關的問題,歡迎你來達內嵌入式培訓機構進行咨詢。

    免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:入門嵌入式,你一定會問的幾個問題!
    下一篇:有人說做嵌入式沒有前途了,這是真的嗎?

    什么是嵌入式?嵌入式的三重境界是什么?

    嵌入式開發與單片機哪個更難?聽聽高手怎么說!

    有哪些編碼習慣有利于我們寫出漂亮的嵌入式C代碼?

    嵌入式硬件設計中需要注意什么?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    高清在线不卡一区二区_2019最新国产高清不卡a_亚洲欧洲日本aⅴ 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>