電子發燒友網 > 音視頻及家電 > 音頻技術 > 正文

可編程定時/計數器8253在揚聲器中的應用技術

2020年02月05日 18:42 ? 次閱讀

定時/計數器都有定時或對外部事件計數的功能。通常,定時/計數器歸納起來一般有3種類型:??

硬件計數器 可在簡單軟件控制下計數,特點是成本低,使用方便,但是專用性強,使用不廣泛。??

軟件定時/計數器 特點是幾乎沒有硬件費用,但他占用CPU的運行時間,降低了CPU的工作效率。??

可編程定時/計數器 特點是工作靈活,而且不占用CPU的運行時問,缺點是成本較高。其中可編程定時/計數器8253是一種使用較為普遍的可編程定時/計數器。??

可編程定時/計數器8253通過軟件設定,可以產生各種時間延遲信號,他的使用非常廣泛,通常被用于定時控制、延時、計數等場合,如定時刷新RAM、系統時鐘的、揚聲器的發音長短的控制。在使用的時候,需要進行嚴密的計算和精確的,以滿足不同的要求。??

1 可編程定時/計數器8253的工作原理??

可編程定時/計數器8253是NMOS工藝制成的大規模,通過簡單編程可實現不同的功能,圖1為可編程定時/計數器8253的基本原理圖。??



從圖1可以看出,芯片內有3個獨立的計數器,分別為計數器0,計數器1,計數器2,每一個計數器都是16位的,可以分別對他們設定工作方式(通過控制字設定)。??

圖2為封裝后的8253引腳圖。

可編程定時/計數器8253可以應用在兩種情況下:定時、計數。當用作時,可以循環計數,信號來源一般為系統本身;當用作計數器時,信號來源一般為系統文件。在揚聲器驅動系統中,可編程定時/計數器8253是作定時器來使用的。??

圖2中對應引腳的含義如下:??

CLK0,CLK1,CLK2:對應計數器的時鐘輸入。??
GATE0,GATE1,GATE2:對應計數器輸出信號。??
OUT0,OUT1,OUT2:對應計數器輸出信號。??
RD:讀信號。低電平有效,讀出計數器的計數值送入緩沖器。??
WR:寫信號。低電平有效,接收由緩沖器送來的數據。??
CS:片選信號。低電平有效。只有在CS信號低電平時8253才能產生讀寫操作,否則不會讀寫。??
A1~A0:對3個計數器和1個控制寄存器端口進行尋址。??
D7~D0:方式控制字。可編程定時/計數器能正確工作與否,與方式控制字密切相關。方式控制字格式如下:

方式控制字對應位的含義見數據手冊。??


VCC:+5 V電源。??
GND:接地引腳。? ?

2 可編程定時/計數器8253在揚聲器中的應用??

揚聲器驅動系統的硬件組成如圖3所示。利用8253驅動揚聲器發聲是由系統插件上8255的外圍來發出驅動信號的。如圖3中的SPK DATA和TIM GATESPK就是接在8255的輸出端口上。其中M GATESPK控制8253定時器來驅動揚聲器,SPK DATA來控制揚聲器的門電路。直接由門電路驅動發出的聲音比較難聽,通過濾波器濾掉雜波之后會更動聽一些,所以最好如圖3所示加一個濾波器。??

??
(1)首先以流程圖的方式說明使用揚聲器發聲的過程,如圖4所示。

(2)可編程定時/計數器8253在揚聲器中應用的編程。一般情況下,8255的輸出端口地址為61H,分配給8253的控制口地址為46H,3個計數器端口地址分別為40H,42H,44H,讓計數器2工作在模式3下,可使8253作為定時器驅動揚聲器發聲。??

則編寫程序如下:?


從程序中可以看到利用可編程定時/計數器8253可以發出各種頻率的聲音,只要在程序中稍微更改一下輸入時鐘頻率或計數初值即可實現。??

下載發燒友APP

打造屬于您的人脈電子圈

關注電子發燒友微信

有趣有料的資訊及技術干貨

關注發燒友課堂

鎖定最新課程活動及技術直播

電子發燒友觀察

一線報道 · 深度觀察 · 最新資訊
收藏 人收藏
分享:

評論

相關推薦

課程目標本課程是《朱有鵬老師單片機完全學習系列課程》第3季第8個課程,本課程詳細講解STM32的定時器,尤其是SYSTI
發表于 2017-07-07 00:00? 15863次閱讀

在應用程序中使定時器或計數器改善微控制器的應用功...

定時器和計數器也許在MCU設計中最普遍的外設。幾乎任何應用程序可以使用一個定時器或計數器,以提高性能....
發表于 2020-02-04 13:49? 133次閱讀
在應用程序中使定時器或計數器改善微控制器的應用功...

那個神奇的555定時器,你知道它功能有多強大嗎?

那個神奇的555定時器,你知道它的功能有多強大嗎?
發表于 2020-02-03 14:56? 105次閱讀
那個神奇的555定時器,你知道它功能有多強大嗎?

計數器的LED顯示電路

如下圖所示,圖a中采用十進制七段存儲-譯碼-驅動單元74143,此單元對所有段都有恒流輸出。在電壓為....
發表于 2020-01-29 16:40? 44次閱讀
計數器的LED顯示電路

如何確保單片機精確定時控制有哪些編程方法詳細說明

MCS-51單片機的中斷響應延遲時間,取決于其它中斷服務程序是否在進行,或取決于正在執行的是什么樣的....
發表于 2020-01-26 09:04? 167次閱讀
如何確保單片機精確定時控制有哪些編程方法詳細說明

七段計數器電路圖

這里是一個七段在柜臺上的IC CD 4033.這電路計數器的電路圖可以在其中一個計數器來顯示進度增加....
發表于 2020-01-24 14:59? 125次閱讀
七段計數器電路圖

簡易的通用計數器電路圖

ICM7216A或者ICM7216B可用作一個最少元件的完整的通用計數器。該電路的A輸入頻率可達10....
發表于 2020-01-24 14:55? 204次閱讀
簡易的通用計數器電路圖

計數繼電器如何代替

計數繼電器,以下我們簡稱計數器,在電氣回路中可以根據電壓的升降實現統計通斷次數的繼電器。
發表于 2020-01-22 14:51? 171次閱讀
計數繼電器如何代替

關于STM32定時器觸發SPI逐字收發之應用示例

STM32定時器觸發SPI逐字收發之應用示例
發表于 2020-01-14 16:35? 389次閱讀
關于STM32定時器觸發SPI逐字收發之應用示例

用CD4017組成的l~17進制計數器

十進制計數器是人們最常用的計數器,但在某些特殊的計數場合下,也需要其他進制的計數器。
發表于 2020-01-14 09:46? 413次閱讀
用CD4017組成的l~17進制計數器

光電計數電路圖

當光敏三極管VT1接收到紅外發光二極管射來的紅外光線時,VT1導通,比較器IC2-B的反相輸入端6腳....
發表于 2020-01-10 14:46? 323次閱讀
光電計數電路圖

程序中第一個always塊中的9位計數器ref_timer計數到0之后,會重新回到511,等到再被調用的時候,從設定計數值遞減。而...
發表于 2020-01-06 20:06? 348次閱讀

如何理解單片機中的定時器和計數器

定時器實際上也是工作在計數方式下,只是計數的是固定周期的脈沖,由于脈沖周期固定,由計數值可以計算時間....
發表于 2019-12-31 16:19? 301次閱讀
如何理解單片機中的定時器和計數器

可調定時器電路圖

本定時器是一種通用性定時控制器,定時時間可在15分至3小時范圍內自由設定。
發表于 2019-12-31 14:02? 257次閱讀
可調定時器電路圖

以前就糾結過能不能一個定時器進行多路的輸入捕獲,因為畢竟輸出四路的PWM是輕松隨意的,當時大概想了一下覺得可能...
發表于 2019-12-29 07:00? 749次閱讀

在之前的工程里加入定時器 配置: 定時器3通道1:(當然直接復用其他的定時器通道都可以) 重映射PC6、復用推挽...
發表于 2019-12-26 19:41? 440次閱讀

51單片機的定時器與計數器是如何工作的

定時器/計數器T0工作在方式0時,16位計數器只用了13位,即TH0的高8位和TL0的低5位,組成一....
發表于 2019-12-19 15:51? 273次閱讀
51單片機的定時器與計數器是如何工作的

模擬PLC的定時器功能 已轉換成10版本 與PLC定時器功能一模一樣,在循環中使用并不會使循環暫停,循環依舊正常...
發表于 2019-12-13 02:24? 253次閱讀

上一篇講了滴答定時器在內核什么位置,這篇講講滴答定時器結構體和地址的聯系 不知道大家搜滴答定時地址的時候有沒有注...
發表于 2019-12-10 10:52? 2245次閱讀

之所以要講這個滴答定時器,是因為它很特殊,stm32的定時器有內部也有外部的,而滴答定時器是在cortex內核里面的,明白...
發表于 2019-12-10 10:46? 562次閱讀

RTC實時時鐘特征與原理

第二個是32位的可編程計數器,可被初始化為當前時間。系統時間按TR_CLK周期累加并與存儲在RTC_....
發表于 2019-12-08 10:36? 1494次閱讀
RTC實時時鐘特征與原理

單片機定時器中斷中,如果定時器T0.T1同時打開,當T1時間到執行里面的程序時,在執行過程中,T0時間到了,程序應該...
發表于 2019-11-20 21:28? 445次閱讀

最近做了個定時器,電路如圖所示,電源用的阻容降壓,24V繼電器驅動電流15mA,STC15W101單片機,正常工作電流5-6...
發表于 2019-11-15 22:40? 707次閱讀

信號處理機的同步器及DDS板上使用的計數器54F193DMQB(單機用兩只)已經停產,該器件是將輸入的92M時鐘進行二...
發表于 2019-11-13 23:18? 279次閱讀

可逆計數器的應用
發表于 2019-11-11 02:32? 111次閱讀
'+data.username+'
';*/ var login_content = ' 寫文章
' + data.username + '
'; $('#login_area').html(login_content); var win_width = $(window).width(); if (win_width > 1000) { $("#mine").mouseDelay(200).hover(function () { $("#mymenu").show(); }, function () { $("#mymenu").hide(); }); } } else { var content = '登錄'; $('#login_area').html(content); $(".special-login").click(function (e) { $.tActivityLogin(); return false; }); } }); } (function () { /* * 插入單點登錄JS */ var setHost = 'https://passport.elecfans.com'; //設置域名 var script = document.createElement('script'); script.type = 'text/javascript'; script.src = setHost + '/public/pc/js/t.passport.js'; script.setAttribute("id", "sso_script"); script.setAttribute("data-ssoSite", setHost); script.setAttribute("data-ssoReferer", encodeURIComponent(location.href)); script.setAttribute("data-ssoSiteid", "11"); var body = document.getElementsByTagName("body").item(0); body.appendChild(script); })() /* * 推薦文章無圖時樣式修改 * */ $(".article .thumb").each(function () { if ($(this).find('img').attr('src') == "") { $(this).find('img').remove(); $(this).parent().css('padding-left', '0px'); } }); /*百度分享*/ window._bd_share_config = { common: { bdText: '',//自定義分享內容 bdDesc: '',//自定義分享摘要 bdUrl: window.location.href,//自定義分享url地址 bdPic: '' }, share: [{ "bdSize": 60 }] } with (document)0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?cdnversion=' + ~(-new Date() / 36e5)]; var add_url = '/d/article/write/'; // var check_allow = "{:U('Api/iscantalk')}"; var check_allow = "/d/api/iscantalk"; var click_items_length = $('.art_click_count').length; if (click_items_length > 0) { var id_str = ''; $('.art_click_count').each(function () { id_str += $(this).attr('data-id') + ','; }) // var url = "{:U('Api/getclickbyids')}"; var url = "/d/api/getclickbyids"; var id_data = 'id_str=' + id_str; $.ajax({ url: url, data: id_data, type: 'post', dataType: 'json', success: function (re) { if (re.list.length >= 1) { var list = re.list; for (var i in list) { var temp_id = list[i]['id']; var temp_span = $(".art_click_count[data-id=" + temp_id + "]") temp_span.html(list[i]['click']); } } } }) } $("#comContent").click(function () { if (now_uid == '') { $.tActivityLogin(); return false; } }); $("#comSubmit").click(function () { if (now_uid == '') { $.tActivityLogin(); return false; } }); $(function () { var follow_wrap = $(".author-collect"); var now_uid = "{$_super['uid']}"; var face_src = "{$_super['uface']}"; var getFollowNum = $(".followNum strong").html(); //關注 $(window).on('click', '.author-collect', function () { if (now_uid == '') { $.tActivityLogin(); return false; } if ($(this).attr('id') == 'follow') { $.post('/d/user/follow', { tuid: article_user_id }, function (data) { //返回的數據格式: if (data.status == "successed") { $(".followNum strong").html(++getFollowNum); follow_wrap.html('已關注').attr('id', 'cancelFollow').css('background', '#999'); var follow_user = ''; $('#follow_list').append(follow_user); } if (data.status == "failed") { alert(data.msg); } } ); } else { //取消關注 if ($(this).attr('id') == 'cancelFollow') { $.post('/d/user/cancelFollow', { tuid: article_user_id }, function (data) { //返回的數據格式: if (data.status == "successed") { follow_wrap.html('關注').attr('id', 'follow').css('background', '#f90'); $(".followNum strong").html(--getFollowNum); $('#follow_list .face').each(function () { var target_uid = $(this).attr('data-uid'); if (target_uid == now_uid) { $(this).remove(); } }) } if (data.status == "failed") { alert(data.msg); } } ); return false; } } }); });