寫這個帖子其實還是自己對后面的職業(yè)規(guī)劃不清晰,所以想來各位前輩交流和請教(各位前輩之前都是怎樣渡過的?)另一方面是整理下自己做的東西,將自己做的東西放到二姨家(第一次),雖然都是些小玩意,之前算是自己學的51吧,我們學校居然還上的匯編(不是說匯編不好),雖然也跟著學了些,但從來老師布置的任務都是用C,現(xiàn)在就是匯編指令都快忘光了,能看點,但不會寫。
實習做了一段時間電路板維修,然后就開始做MCU開發(fā)相關(guān)的工作,公司目前使用的是PIC系列的MCU。
寫這個帖子的初衷是想和各位前輩交流下,想聽聽前輩們的經(jīng)驗或者歷程(前輩們愿意說的話),對于學習51之后應該學什么做什么,在網(wǎng)上也看過點篇相關(guān)文章,就是AVR、PIC和STM32等(MCU)或者ARM(上操作系統(tǒng)),對此確實感到了些不知怎么做...
回憶下,這是原來第一次自己焊洞洞板時的拍的,是一個ds18b20采集和64位光刻ROM讀出的小東西:
這是到現(xiàn)在做的最失敗的作品,沒有之一,用學校雕刻機雕的,也是雕刻水平和經(jīng)驗值還不夠啊,本來想做個ADC轉(zhuǎn)換和485通信的,結(jié)果就這樣了:
后來決定還是從小做起,先不要搞得復雜了,先把溫度采集做個PCB,要的是可行性和穩(wěn)定性,于是也開始學習PCB畫板布線,這時我還沒有使用AD的,用的是DXP2004,之前學過點后面基本記不得了,基本也是現(xiàn)學現(xiàn)賣,好在沒犯什么很嚴重的錯誤導致整塊板子廢掉那種,錯誤也有就是把USB電源的網(wǎng)絡標簽放反了,導致割線,廢話不多,上圖:
51計算器PCB:
這是前段時間做的12864顯示詩詞可用按鍵控制和上位機發(fā)送命令控制,也是開始使用AD畫圖之后第一次用AD畫板,可以先先介紹一下,液晶屏是用的帶字庫的,顯示字符方便倒是方便,就是畫圖和反白有問題,為此我還在論壇上發(fā)帖問過呢,以后堅決不用,還是自己寫字庫好,就是我用的STC89C52撐不住啊,現(xiàn)在才4首詩只往里寫了3首,程序存儲空間和ROM已經(jīng)放不下了;按鍵是抬起執(zhí)行(顯示滾動和開背光和蜂鳴器),所有任務都交給定時器來分配,不死循,但是有一個問題:開啟串口接收中斷后顯示刷新時間被拉長了。上圖吧,完整的代碼就不放這兒了,太占地方,放個片段
/*********************************************
FunctionName: pomeDisplay
FunctionInfo: 詩詞顯示函數(shù)
Input: no
Output: no
注:如果想要整屏向下移動->改變行數(shù)(行++)DisplayWhere(gFlag.gKeyRow +1,gVerse1.firstVerse);
但這種做法不好;于是想了第二種方法->不改變行數(shù) 改變顯示內(nèi)容
就可以向上翻,把下面的也顯示出來
**********************************************/
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)) //若是改變詩的首數(shù)需改變這個宏
{
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)) //向上翻顯示時不加邊界檢查 不需要顯示那行會顯示垃圾內(nèi)容
{ //也就是現(xiàn)在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歷程,
這是原來還在學校時就一直想做的計算器,現(xiàn)在也干脆不在實驗板上弄了,為了熟悉PCB布線也把它做成PCB吧,于是就有了下圖:
以上就是我的51DIY歷程,雖然現(xiàn)在在上班了,可是還在糾結(jié)是偏軟件還是硬件....
-
mcu
+關(guān)注
關(guān)注
146文章
17324瀏覽量
352655 -
DS18B20
+關(guān)注
關(guān)注
10文章
780瀏覽量
81120
原文標題:一位新手嵌入式er分享51單片機DIY例程 ,糾結(jié)軟件還是硬件...?
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
DS18B20 數(shù)字溫度計特點
![<b class='flag-5'>DS18B20</b> 數(shù)字溫度計特點](https://file1.elecfans.com/web2/M00/A2/6C/wKgZomT-hueAJxSGAAAsUY5NbTE639.jpg)
stm32 ds18b20驅(qū)動 轉(zhuǎn)
【眾拳】基于STM8的DS18B20溫度傳感器實驗
多個DS18B20測溫仿真
如何實現(xiàn)在同一個IO口上接多個DS18B20,進行多點溫度測量教程
DS18B20的相關(guān)資料分享
使用DS18B20實現(xiàn)溫度采集并在串口或液晶屏上顯示
DS18B20串行通信誤碼的解決辦法
DS18B20的組成以及工作過程
STM32F407入門開發(fā): DS18B20溫度傳感器應用
![STM32F407入門開發(fā): <b class='flag-5'>DS18B20</b>溫度傳感器應用](https://file.elecfans.com//web2/M00/46/3F/pYYBAGKRthaAFwxTAAB2aItcYUg194.png)
評論