藍橋杯模組練習之AD DA

2021-10-10 23:57:28 字數 1505 閱讀 2542

**解釋

通過pcf8591晶元實現ad轉換。板子上ad採集主要採集滑動變阻器的電壓值和與光敏電阻串聯電阻的電壓值。ad8位精度,採集電壓0-5v對應的值為0-255。根據需要可以對讀取的值進行調整。

da也通過pcf8591輸出,對應引腳在外部引出,在20pin中19位。da8位精度輸出,輸出0-255對應電壓0-5v。

pcf8591與微控制器的通訊協議是iic。iic相關原理這裡不細說。簡單說就是主器件傳送指令,從器件應答。一般主器件先傳送位址,從器件相應後,主器件繼續傳送命令或資料。

在板子上a2,a1,a0統統接地,都是,最後一位決定是讀還是寫操作。

要操作pcf8591就要把iic協議搞明白,賽點資源包裡面給的iic.c原始檔是基於51寫的,15微控制器比51微控制器快8-12倍,可以將延遲提高10倍,當然本人經過多次驗證,不改延遲也可以實現功能。

unsigned

char

readad

(unsigned

char add)

在讀取ad值得時候我們選擇最簡單得單通道對應就行,如果要讀光敏電阻對應的,命令就是0x01,要讀滑動變阻器,命令就是0x03。這裡的命令相當於選ad採集的通道(位址)。

**裡先微控制器發出0x90這個位址,意味著寫指令,pcf8591接收到後發回應答訊號,微控制器再要讀取pcf8591相應通道的位址。之後重新來,微控制器發出0x91這個位址,意味著讀資料,pcf8591接收到後發回應答訊號,微控制器接收pcf8591傳送的資料,結束。

在da輸出時,命令為0x40。

void

writedac

(unsigned

char dat)

可以使用萬用表測量da輸出電壓。

驅動程式已給出,主函式裡呼叫獲取ad採集的電壓值再顯示在數碼管上就不再貼出來了,和以前的程式類似。

注意:程式中讀取滑動變阻器後延遲時間過短又讀取光敏電阻可能會資料錯亂,兩個會正好相反。ad和da同時進行會造成da輸出電壓不正常,可以在readad函式中將iic_sendbyte(add);改為iic_sendbyte(add|0x40);,原因可自行想想。

藍橋杯模組練習之關閉外設

本節將會介紹板子上的最簡單最基礎的部分。比賽一般上來需要關閉無關外設,藍橋杯的板子比較特殊,51上電預設p0,o1,p2,p3都是高電平,開啟電源開源的一瞬間程式還沒走上,可能會開啟板子上連線的發光二極體 led 繼電器 relay 蜂鳴器 beep 之後會根據走的程式決定是否開啟,我們現在要在程式...

藍橋杯模組練習4 溫度

main.c include include include onewire.h void xianshi void timer0init unsigned char display unsigned char shuzu unsigned int wendu extern unsigned int...

藍橋杯嵌入式模組練習之點亮LED KEY

有微控制器基礎就很簡單了,上原理圖。573鎖存器使能端為pd2,當pc8 pc15為低電平,且573鎖存時led點亮。初始化led 如下,先關閉所有led。由原理圖知按下按鍵相應埠為低電平。初始化 如下。void keyinit 按鍵檢測需要延遲函式。需要使用到stm32的滴答定時器,簡單配置即可。...