基於微控制器的系統設計
微處理器和微控制器可以用來設計一些工具或系統來執行一些特殊任務。使用微控制器,我們可以製作不同型別的模組或系統。以下是一些可以使用微控制器設計的系統列表:
電子投票機
基於RFID的訪問控制系統
心率監測系統
自動植物澆水系統
超聲波測距系統
水位控制系統
燃氣洩漏檢測系統
頻率計
溫度測量系統
還有許多其他可以使用微控制器製作的系統。
為了設計一個系統,我們必須遵循一些基本步驟。我們必須設計系統的概述,以及一些功能模組設計,以便輕鬆構建系統。然後,我們必須設計電路圖,並在進行一些計算後應用元件值。然後,在檢查整個電路圖之後,最後我們應該開始實際工作。在這個階段,我們將使用所需的元件來實現電路。
在本文中,我們將瞭解如何使用微控制器設計數字轉速錶。這裡我們使用的是Intel 8051微控制器。
轉速錶基本上是一個可以測量某些旋轉輪、圓盤、軸等的每秒轉數的系統。我們的轉速錶可以以每秒1轉的精度測量高達每秒255轉的轉速。
現在讓我們看看這個數字轉速錶的電路圖。

我們可以將此電路分為幾個部分。在第一部分中,我們將瞭解電路如何物理地獲取資訊。有兩個元件Q4和D4。Q4是一個光電電晶體(2N5777),D4是一個紅色LED。如果光線進入這個光電電晶體,它的集電極電流會降至0。首先,我們必須在軸上安裝一個旋轉圓盤,上面有一個衝孔。當圓盤旋轉時,LED安裝在圓盤的上部,光電電晶體安裝在下部。當圓盤處於同一條線上時,光線照射到光電電晶體上,集電極電流下降到零。下圖顯示了使用示波器觀察到的情況。

在下一部分中,我們可以看到電路中有一個運算放大器(OPAMP)。對於運算放大器,我們使用了LM234晶片。該晶片包含四個運算放大器,但這裡我們只使用了一個。在這個電路中,運算放大器連線為電壓比較器。這裡的參考電壓為3.5V。因此,如果光電電晶體的輸出電壓大於3.5V,則它將產生高脈衝,否則將產生0電平訊號。從這個比較器我們將得到前面輸出的方波脈衝。

從這個下降沿我們可以理解孔已經出現,所以有一次旋轉。這個時鐘脈衝被送入微控制器。此訊號可用於計算旋轉次數。
在第三部分,微控制器正在工作。這個微控制器同時執行兩項任務。這兩項任務是:
計算來自比較器輸出的負邊沿的數量。
進行必要的數學運算,並在七段顯示陣列上顯示計數。
為了計算轉速,我們使用了8085的兩個定時器(Timer0和Timer1)。這裡Timer1配置為自動過載8位計數器,用於將進入的零的數量儲存到Timer0中。Timer0設定為16位定時器,它為Timer1計數生成必要的1秒時間跨度。
8051數字轉速錶程式
ORG 000H MOV DPTR,#LUT ; Loads the address of LUT to DPTR MOV P1,#00000000B ; Sets P1 and P0 as an output port MOV P0,#00000000B MAIN: MOV R6,#14D SETB P3.5 MOV TMOD,#01100001B ; Sets Timer1 as Mode2 & Timer0 as Mode1 timer MOV TL1,#00000000B ; loads starting value to TL1 MOV TH1,#00000000B ; loads starting value to TH1 SETB TR1 ; starts Timer1 (counter) BACK: MOV TH0,#00000000B ; loads starting value to TH0 MOV TL0,#00000000B ; loads starting value to TL0 SETB TR0 ; starts Timer0 HERE: JNB TF0,HERE ; checks for Timer 0 roll over CLR TR0 ; stops Timer0 CLR TF0 ; clears Timer Flag 0 DJNZ R6,BACK CLR TR1 ; stops Timer1 (counter) CLR TF0 ; clears Timer Flag 0 CLR TF1 ; clears Timer Flag 1 ACALL DLOOP ; Calls subroutine DLOOP for displaying the count SJMP MAIN ; jumps back to the main loop DLOOP: MOV R5,#100D BACK1: MOV A,TL1 ; loads the count to the accumulator MOV B,#100D DIV AB ; isolates the first digit of the count SETB P1.0 ACALL DISPLAY ; converts the 1st digit to 7 seg-display pattern MOV P0,A ; puts the pattern to Port 0 ACALL DELAY ; 1mS delay ACALL DELAY MOV A,B MOV B,#10D DIV AB ; isolates the second digit of the count CLR P1.0 SETB P1.1 ACALL DISPLAY ; converts the 2nd digit to 7 seg-display pattern MOV P0,A ACALL DELAY ACALL DELAY MOV A,B ; Loads the last digit of the count to accumulator CLR P1.1 SETB P1.2 ACALL DISPLAY ; converts the 3rd digit to 7 seg-display pattern MOV P0,A ACALL DELAY ACALL DELAY CLR P1.2 DJNZ R5,BACK1 ; repeats the subroutine DLOOP 100 times RET DELAY: MOV R7,#250D ; Subroutine to generate 1mS delay DEL1: DJNZ R7,DEL1 RET DISPLAY: MOVC A,@A+DPTR ; gets 7 seg digit drive pattern for current value in A CPL A RET LUT: DB 3FH ; Look up table for 7-seg-display DB 06H DB 5BH DB 4FH DB 66H DB 6DH DB 7DH DB 07H DB 7FH DB 6FH END
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP