日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網! ,新用戶?[免費注冊]

當前位置:電子發(fā)燒友網 > 圖書頻道 > 電子 > 《單片機原理與應用》 > 第7章 單片機應用系統(tǒng)設計舉例

第2節(jié) 可調速加熱爐控制器

  7.2.1 總體設計

  1. 需求分析

  (1) 需求獲取

  本項目最初由湘潭大學理化實驗室提出需求,在化學實驗金屬相圖實驗中,原有的實驗儀(一臺PC機、一臺加熱爐、一臺測溫儀)要做一個完整的實驗需要四五個小時以上,并且數(shù)據要學生自己記錄并自己計算和給制圖形,往往幾個小時不能完成一個實驗,為了解決這個問題,提出開發(fā)一種新的實驗設備,新的實驗儀(PC機一臺、兩臺測溫儀,每臺測溫儀可以接六路溫度傳感器,兩臺加熱爐),這樣一臺PC機可同時采集12路數(shù)據,整個過程由PC機上軟件完成,不需學生記錄數(shù)據和繪制圖形和表格,大大提高了實驗速度,實驗結果更準確和直觀。同時一個實驗室可以省下一半PC機,節(jié)約了設備成本。本項目只是該實驗儀中一部分,也就是加熱爐的控制部分。

  (2) 設計開發(fā)任務書

  本項目開發(fā)人員如下:項目負責人一名,軟件工程師四名、硬件工程師一名、結構工程師一名、技術員一名、采購員一名。其中兩名軟件工程師負責PC軟件開發(fā)、一名軟件工程師負責測溫儀軟件開發(fā)、一名軟件工程師負責加熱爐軟件開發(fā)。

  2. 方案設計

  整個方案在這里就不詳述,這里只就加熱爐部分進行說明,由于一臺PC機同時控制兩臺加熱儀和兩臺測溫儀,所以本臺都有相應地址,與PC機通訊采用CAN總線,地址用24C01存儲,加溫速度由PC機根據當時室溫發(fā)送相應加熱功率百分比來控制加熱爐。加熱爐由89C1051控制。如接收到PC機發(fā)送的功率是80,則可通過控制加熱爐80%時間打開電源,20%時間關斷電源,具體通訊協(xié)議讀者可以自己制訂,并完整好程序,并在做實驗或實訓時調試。

  3. 測試計劃

  硬件是否正確、加熱爐在不同室溫下能不能在相同時間加熱到指定溫度。

  7.2.2 詳細設計

  1. 硬件設計:

  (1) 主要原器件:

  89C2051、24C01、雙向可控硅等。

  (2) 原理圖:

  I2C總線原理及工作時序:

 

  隨機讀時序圖

  2. I2C總線的24C02讀寫程序:

  MCU2-I2C總線AT24C02讀寫程序

  ;**********************************************

  ;*Title:AT24C02與51單片機連接讀寫程序*

  ;*Date:2005.7.7 *

  ;***************************************************************************

  ;連線:SCL—P3.4,SDA—P3.5,WP—接地

  ;(R3)=器件地址,(R4)=片內字節(jié)地址,

  ;(R5)=連續(xù)讀寫字節(jié)數(shù),(R1)=欲讀寫數(shù)據存放地址指針

  ;***************************************************************************

  SCL EQU P30

  SDA EQU P31

  ;寫24C02子程序

  I2C_WRITE:

  SETB SDA

  SETB SCL

  CLR SDA ;發(fā)開始信號

  MOV A,R3 ;發(fā)器件地址

  ACALL SEND ;調發(fā)送單字節(jié)子程序

  MOV A,R4 ;送片內字節(jié)地址

  ACALL SEND

  I2CW_AGAIN:

  MOV A,@R1

  ACALL SEND

  INC R1

  DJNZ R5,I2CW_AGAIN ;連續(xù)寫N個字節(jié)

  CLR SDA ;SDA位置0,準備送停止信號

  ACALL DELAY ;延時以滿足傳輸速率要求

  SETB SCL ;發(fā)送停止信號

  ACALL DELAY

  SETB SDA

  RET

  SEND:

  MOV R0,#08H

  I2CW_LOOP:

  CLR SCL ;開始[信號之后的]寫地址操作 SCL清'0'

  RLC A

  MOV SDA,C

  NOP

  SETB SCL ;寫完一位打操作后,SCL 置'1'

  ACALL DELAY

  DJNZ R0,I2CW_LOOP

  CLR SCL

  ACALL DELAY

  SETB SCL ;

  ACKLP: MOV C,SDA

  JC ACKLP ;判斷應答到否,未到則等待

  CLR SCL

  RET

  ;***************************************

  ;讀24C02子程序

  I2C_READ:

  SETB SDA

  SETB SCL

  CLR SDA ;發(fā)開始信號

  MOV A,R3 ;發(fā)器件地址

  ACALL SEND ;調發(fā)送單字節(jié)子程序

  MOV A,R4 ;送片內字節(jié)地址

  ACALL SEND

  SETB SDA

  SETB SCL

  CLR SDA ;發(fā)開始信號

  MOV A,R3 ;發(fā)器件地址

  SETB ACC.0 ;發(fā)讀命令

  ACALL SEND

  I2CR_AGAIN:

  ACALL READ

  MOV @R1,A

  INC R1

  DJNZ R5,I2CR_AGAIN

  CLR SDA ;SDA位置0,準備送停止信號

  ACALL DELAY ;延時以滿足傳輸速率要求

  SETB SCL ;發(fā)送停止信號

  ACALL DELAY

  SETB SDA

  RET

  READ:MOV R0,#08H

  I2CR_LOOP:

  SETB SCL

  ACALL DELAY

  MOV C,SDA

  RLC A

  CLR SCL

  ACALL DELAY

  DJNZ R0,I2CR_LOOP

  CJNE R5,#01H,LW

  SETB SDA ;若是最后一個字節(jié),置ACK=1

  AJMP SETOK

  LW: CLR SDA ;否則置ACK=0

  SETOK: ACALL DELAY

  SETB SCL

  ACALL DELAY

  CLR SCL

  ACALL DELAY

  SETB SDA ;應答完畢,SDA置1

  RET

  DELAY:

  NOP

  NOP

  RET

  END

?
临猗县| 高平市| 浑源县| 武平县| 大安市| 赤壁市| 张家港市| 永吉县| 湄潭县| 松溪县| 旌德县| 平乡县| 晋州市| 巴马| 临海市| 潮州市| 三明市| 乡宁县| 定兴县| 武邑县| 浑源县| 仙桃市| 北海市| 沈丘县| 乐山市| 井冈山市| 嫩江县| 罗定市| 蒲江县| 个旧市| 大城县| 固阳县| 兴国县| 通海县| 怀集县| 台南市| 莱州市| 临江市| 岑巩县| 庐江县| 含山县|