當前位置:編程學習大全網 - 編程語言 - 蜂鳴器的電路原理圖

蜂鳴器的電路原理圖

如圖1-3 所示,使用SH69P43 為控制芯片,使用4MHz 晶振作為主振蕩器。

PORTC.3/T0 作為I/O 口通過三極管Q2 來驅動蜂鳴器LS1,而PORTC.2/PWM0 則作為PWM 輸出口通過三極管Q1 來驅動蜂鳴器LS2。另外在PORTA.3 和PORTA.2 分別接了兩個按鍵,壹個是PWM 按鍵,是用來控制PWM 輸出口驅動蜂鳴器使用的;另壹個是PORT 按鍵,是用來控制I/O 口驅動蜂鳴器使用的。連接按鍵的I/O 口開內部上拉電阻。

軟件設計方法

先分析壹下蜂鳴器。所使用的蜂鳴器的工作頻率是2000Hz,也就是說蜂鳴器的驅動信號波形周期是500μs,由於是1/2duty 的信號,所以壹個周期內的高電平和低電平的時間寬度都為250μs。軟件設計上,我們將根據兩種驅動方式來進行說明。

a) PWM 輸出口直接驅動蜂鳴器方式

由於PWM 只控制固定頻率的蜂鳴器,所以可以在程序的系統初始化時就對PWM 的輸出波形進行設置。

首先根據SH69P43 的PWM 輸出的周期寬度是10 位數據來選擇PWM 時鐘。系統使用4MHz 的晶振作為主振蕩器,壹個tosc 的時間就是0.25μs,若是將PWM 的時鐘設置為tosc 的話, 則蜂鳴器要求的波形周期500μs 的計數值為500μs/0.25μs=(2000)10=(7D0)16,7D0H 為11 位的數據,而SH69P43 的PWM

輸出周期寬度只是10 位數據,所以選擇PWM 的時鐘為tosc 是不能實現蜂鳴器所要的驅動波形的。

這裏我們將PWM 的時鐘設置為4tosc,這樣壹個PWM 的時鐘周期就是1μs 了,由此可以算出500μs 對應的計數值為500μs/1μs=(500)10=(1F4)16,即分別在周期寄存器的高2 位、中4 位和低4 位三個寄存器中填入1、F 和4,就完成了對輸出周期的設置。再來設置占空比寄存器,在PWM 輸出中占空比的實現是

通過設定壹個周期內電平的寬度來實現的。當輸出模式選擇為普通模式時,占空比寄存器是用來設置高電平的寬度。250μs 的寬度計數值為250μs/1μs=(250)10=(0FA)16。只需要在占空比寄存器的高2 位、中4 位和低4 位中分別填入0、F 和A 就可以完成對占空比的設置了,設置占空比為1/2duty。

以後只需要打開PWM 輸出,PWM 輸出口自然就能輸出頻率為2000Hz、占空比為1/2duty 的方波。

b) I/O 口定時翻轉電平驅動蜂鳴器方式

使用I/O 口定時翻轉電平驅動蜂鳴器方式的設置比較簡單,只需要對波形分析壹下。由於驅動的信號剛好為周期500μs,占空比為1/2duty 的方波,只需要每250μs 進行壹次電平翻轉,就可以得到驅動蜂鳴器的方波信號。在程序上,可以使用TIMER0 來定時,將TIMER0 的預分頻設置為/1,選擇TIMER0 的始終為系統時鐘(主振蕩器時鐘/4),在TIMER0 的載入/計數寄存器的高4 位和低4 位分別寫入00H 和06H,就能將TIMER0 的中斷設置為250μs。當需要I/O 口驅動的蜂鳴器鳴叫時,只需要在進入TIMER0 中斷的時候對該I/O 口的電平進行翻轉壹次,直到蜂鳴器不需要鳴叫的時候,將I/O 口的電平設置為低電平即可。不鳴叫時將I/O 口的輸出電平設置為低電平是為了防止漏電。

  • 上一篇:火影忍者寫輪眼有多少種,分別有什麽作用
  • 下一篇:北大青鳥設計培訓:學習Android開發的崗位有哪些?
  • copyright 2024編程學習大全網