<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個ds18b20采集和64位光刻ROM讀出的小東西

GReq_mcu168 ? 來源:未知 ? 作者:李倩 ? 2018-08-29 10:32 ? 次閱讀

寫這個帖子其實還是自己對后面的職業規劃不清晰,所以想來各位前輩交流和請教(各位前輩之前都是怎樣渡過的?)另一方面是整理下自己做的東西,將自己做的東西放到二姨家(第一次),雖然都是些小玩意,之前算是自己學的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
    mcu
    +關注

    關注

    146

    文章

    16130

    瀏覽量

    344848
  • DS18B20
    +關注

    關注

    10

    文章

    765

    瀏覽量

    80261

原文標題:一位新手嵌入式er分享51單片機DIY例程 ,糾結軟件還是硬件...?

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    [原創]DS18B20智能溫度控制器

    (CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現根總線上掛接多個
    發表于 02-22 13:45

    ds18b20溫度傳感器問題[急?。?!]

    Wait_18B20();//等待程序,等待ds18b20應答bit Readbit_18B20(void);//讀取bit的數據un
    發表于 11-29 13:16

    stm32 ds18b20驅動 轉

    序列號。如果總線上存在多于的節點,則此指令不能使用。 2 )ROM匹配(指令碼0X55H):此命令后跟64
    發表于 01-16 11:29

    如何實現在同一個IO口上接多個DS18B20,進行多點溫度測量教程

    DS18B20光刻ROM是實現多點溫度采集的前提,首先初始化
    發表于 05-12 20:24

    【眾拳】基于STM8的DS18B20溫度傳感器實驗

    56的循環冗余校驗碼。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現根總
    發表于 12-15 09:49

    DS18B20單線數字溫度計詳解

    循環冗余校驗碼發生器(6)配置寄存器第64激光ROMROM操作指令 每
    發表于 01-23 21:00

    多個DS18B20測溫仿真

    請問大家DS18B20在Proteus中怎么設置ram seial number呢,仿真運行不起來 1602顯示直錯誤猜測是兩問題 是序列號設置不對(如圖
    發表于 05-07 14:45

    如何實現在同一個IO口上接多個DS18B20,進行多點溫度測量教程

    光刻ROM可以通過串口,打印到上位機上然后在上位機中可以看到這樣的數據(看不清可以放大WORD來看)要知道64光刻
    發表于 09-23 20:05

    DS18B20多點測溫方法探討

    、功耗低、性能高、抗干擾能力強、使用簡單等優點。其獨特的單總線技術使用戶可輕松地組建傳感器網絡,特別適合于構成多點溫度測控系統。每個DS18B20 都有
    發表于 11-02 16:10

    基于Linux的溫度傳感器DS18B20驅動程序設計

    就被廠家通過光刻刻錄好了64序列號。該序列號可以看作是DS18B20的地址序列碼,用來區分每一個DS1
    發表于 11-14 15:24

    DS18B20簡介

    1、DS18B20簡介DS18B20本身就是溫度傳感器,只需要將DS18B20的數據引腳和單片機的
    發表于 11-22 07:21

    DS18B20的相關資料分享

    與主機通信,只需要根線就可以完成溫度數據讀??;DS18B20內置了64產品序列號,方便識別身份,在根線上可以掛接多個
    發表于 11-30 06:22

    18b20開始轉換溫度DS18B20 的典型溫度讀取過程

    目標:目標: DS18B20數字溫度計(三)18b20開始轉換溫度DS18B20 的典型溫度讀取過程為:復位→發 SKIP ROM 命令(0XCC)→發開始轉換命令( 0X44)→延時
    發表于 01-05 06:42

    使用DS18B20實現溫度采集并在串口或液晶屏上顯示

    /1的時序圖:ROM命令總線上可以掛多個器件,通過不同的器件地址來訪問不同的器件。同樣, 1-Wire 總線也可以掛多個器件,但是它只有條線,如何區分不同的器件呢?在每個 DS18B20 內部都有
    發表于 01-05 08:06

    STM32獲取DS18B2064光刻ROM讀取程序下載

    STM32獲取DS18B2064光刻ROM讀取程序下載
    發表于 04-23 14:27 ?17次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>