第十節 蜂鳴器

2021-07-08 09:50:14 字數 2311 閱讀 5525

第十節  蜂鳴器

蜂鳴器是一種常用的報警裝置,常用的蜂鳴器有無源和有源兩種型別,無源蜂鳴器需要用一定頻率的方波驅動,從而發出不同頻率的聲音。而有源蜂鳴器只需要通電就會發出固定頻率的聲音,mt254xboard開發板上的蜂鳴器用的是無源蜂鳴器,因此我們需要用一定頻率的方波來驅動。

硬體驅動方面,我們這裡使用了pnp三極體來驅動蜂鳴器,buzz引腳為晶元的p2.0。對照io復用表可知,此io可以作為定時器4的匹配通道1輸出。所以我們需要把定時器配置為pwm匹配輸出模式:

percfg |= (0x01<<4);   // 選擇定時器4匹配功能中的第2種io口

p2dir |= 0x01; // p2.0 輸出

p2sel |= 0x01; // p2.0 復用功能

t4ctl &= ~0x10; // stop timer 3 (if it was running)

t4ctl |= 0x04; // clear timer 3

t4ctl &= ~0x08; // disable timer 3 overflow interrupts

t4ctl |= 0x03; // timer 3 mode = 3 - up/down

t4cctl0 &= ~0x40; // disable channel 0 interrupts

t4cctl0 |= 0x04; // ch0 mode = compare

t4cctl0 |= 0x10; // ch0 output compare mode = toggle on compare

這裡僅僅是配置為匹配輸出,具體輸出什麼樣的波形還需要我們再通過計算得出。

void buzzer_start(uint16 frequency)

// calculate nr of ticks required to achieve target frequency

uint32 ticks = (8000000/frequency) >> tickspddiv; // 8000000 = 32m / 4;

// fit this into an 8bit counter using the timer prescaler

while ((ticks & 0xffffff00) != 0)

// update registers

t4ctl &= ~0xe0;

t4ctl |= prescaler;

t4cc0 = (uint8)ticks;

// start timer

t4ctl |= 0x10;

}

這個函式是通過傳入引數的形式,使p2.0口發出指定頻率的方波。

void buzzer_stop(void)

這個函式是使蜂鳴器停止,主要有三個動作,停止定時器,將p2.0配置為io功能並且輸出高電平,因為我們使用的是pnp三極體。

我們在按鍵的程式上加上蜂鳴器的控制,當按下按鍵時,蜂鳴器響。鬆開後停止響。

int main(void)

; // 視訊記憶體

int keycnt = 0;

sysstartxosc();

lcd12864_init();

lcd12864_disstr(1, " buzzer test");

buzzer_init();

p0sel &= ~0x01; // 設定為io功能

p0dir &= ~0x01; // 設定為輸入功能

p0ien |= 0x01; // p0.0 設定為中斷方式

pictl |= 0x01; // 下降沿觸發

ien1 |= 0x20; // 允許p0口中斷

p0ifg = 0x00; // 清除中斷標誌位

ea = 1; // 開總中斷

sprintf(lcdbuf, " key count : %d", keycnt++); // 按鍵計數

lcd12864_disstr(3, lcdbuf);

while(1)

else}}

return 0;

}

第十節 標識列

又稱為自增長列 含義 可以不用手動的插入值,系統提供預設的序列值 特點 不一定與主鍵搭配,但要求是乙個key 乙個表至多乙個標識列 標識列的型別只能是數值型 標識列可以通過 set auto increment 3 設定步長,可以通過手動插入值,設定起始值一 建立表時設定標識列 create tab...

Servlet第十節整理

1.使用ajax和資料庫進行連線 後台傳入前台 jsp中的檔案 function queryall script head 你好,歡迎登入 p button value 查詢 onclick query p p1 p button value 列出全部使用者 onclick queryall p t...

第十節 xml re logging模組

xml模組 用到的時候再看 tree xml.parse xmltest.xml root tree.getroot print root.tag 列印物件的標籤 root.attrib 獲取物件的屬性 root.text 獲取物件的文字內容 re模組 re.findall 匹配條件 需要匹配的資料...