寫這個帖子其實還是自己對后面的職業規劃不清晰,所以想來各位前輩交流和請教(各位前輩之前都是怎樣渡過的?)另一方面是整理下自己做的東西,將自己做的東西放到二姨家(第一次),雖然都是些小玩意,之前算是自己學的51吧,我們學校居然還上的匯編(不是說匯編不好),雖然也跟著學了些,但從來老師布置的任務都是用C,現在就是匯編指令都快忘光了,能看點,但不會寫。
實習做了一段時間電路板維修,然后就開始做MCU開發相關的工作,公司目前使用的是PIC系列的MCU。
寫這個帖子的初衷是想和各位前輩交流下,想聽聽前輩們的經驗或者歷程(前輩們愿意說的話),對于學習51之后應該學什么做什么,在網上也看過點篇相關文章,就是AVR、PIC和STM32等(MCU)或者ARM(上操作系統),對此確實感到了些不知怎么做...
回憶下,這是原來第一次自己焊洞洞板時的拍的,是一個ds18b20采集和64位光刻ROM讀出的小東西:
這是到現在做的最失敗的作品,沒有之一,用學校雕刻機雕的,也是雕刻水平和經驗值還不夠啊,本來想做個ADC轉換和485通信的,結果就這樣了:
后來決定還是從小做起,先不要搞得復雜了,先把溫度采集做個PCB,要的是可行性和穩定性,于是也開始學習PCB畫板布線,這時我還沒有使用AD的,用的是DXP2004,之前學過點后面基本記不得了,基本也是現學現賣,好在沒犯什么很嚴重的錯誤導致整塊板子廢掉那種,錯誤也有就是把USB電源的網絡標簽放反了,導致割線,廢話不多,上圖:
51計算器PCB:
這是前段時間做的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;
}
}
12864顯示詩詞并通信控制
這就是我的DIY歷程,
這是原來還在學校時就一直想做的計算器,現在也干脆不在實驗板上弄了,為了熟悉PCB布線也把它做成PCB吧,于是就有了下圖:
以上就是我的51DIY歷程,雖然現在在上班了,可是還在糾結是偏軟件還是硬件....
-
mcu
+關注
關注
146文章
17123瀏覽量
350983 -
DS18B20
+關注
關注
10文章
779瀏覽量
80823
原文標題:一位新手嵌入式er分享51單片機DIY例程 ,糾結軟件還是硬件...?
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論