第十節 蜂鳴器
蜂鳴器是一種常用的報警裝置,常用的蜂鳴器有無源和有源兩種型別,無源蜂鳴器需要用一定頻率的方波驅動,從而發出不同頻率的聲音。而有源蜂鳴器只需要通電就會發出固定頻率的聲音,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 匹配條件 需要匹配的資料...