51單片機(jī)動(dòng)態(tài)LED顯示電路編程實(shí)例:上一節(jié)我們講述了單只LED與單片機(jī)的接口電路及編程實(shí)例,目的在于讓初學(xué)者了解LED在單片機(jī)中的應(yīng)用原理,單只LED顯示在實(shí)際應(yīng)用中并無多大用途,一般都是多位的LED顯示。現(xiàn)在我們作進(jìn)一步學(xué)習(xí),我們要講解的是8位LED的顯示原理及實(shí)際的編程方法。這里我們沒有采用多I/O口的8051系列單片機(jī),而是采用了完全兼容C51指令系統(tǒng)的質(zhì)優(yōu)價(jià)廉的AT89C2051單片機(jī),它的軟件編程與C51完全一致。 在多數(shù)的應(yīng)用場(chǎng)合中,我們并不希望使用多I/O端口的單片機(jī),原則上是使用盡量少引腳的器件。在沒有富余端口的情況下,怎樣通過擴(kuò)展電路達(dá)到預(yù)期的目的呢?我們希望通過此例使設(shè)計(jì)人員在實(shí)際應(yīng)用中了解一點(diǎn)電路擴(kuò)展的原理,對(duì)實(shí)際的應(yīng)用有所幫助。 此電路中,74LS273用于驅(qū)動(dòng)LED的8位段碼,8位LED相應(yīng)的"a"—"g"段連在一起,它們的公共端分別連至由74LS138(點(diǎn)擊芯片型號(hào)可瀏覽其詳細(xì)的技術(shù)手冊(cè))譯碼選通后經(jīng)74LS04反相驅(qū)動(dòng)的輸出端。這樣當(dāng)選通某一位LED時(shí),相應(yīng)的地址線(74LS04輸出端)輸出的是高電平,所以我們的LED選用共陽LED數(shù)碼管。 動(dòng)態(tài)掃描的頻率有一定的要求,頻率太低,LED將出現(xiàn)閃爍現(xiàn)象。如頻率太高,由于每個(gè)LED點(diǎn)亮的時(shí)間太短,LED的亮度太低,肉眼無法看清,所以一般均取幾個(gè)ms左右為宜,這就要求在編寫程序時(shí),選通某一位LED使其點(diǎn)亮并保持一定的時(shí)間,程序上常采用的是調(diào)用延時(shí)子程序。在C51指令中,延時(shí)子程序是相當(dāng)簡單的,并且延時(shí)時(shí)間也很容易更改,可參見程序清單中的DELAY延時(shí)子程序。 為簡單起見,我們只是編寫了8位LED同步顯示"00000000"—"11111111"直到"99999999"數(shù)字,并且反復(fù)循環(huán)。程序很簡單,流程圖略去。
標(biāo)簽: LED 51單片機(jī) 動(dòng)態(tài) 顯示電路
上傳時(shí)間: 2013-11-18
上傳用戶:皇族傳媒
如何使用高級(jí)觸發(fā)測(cè)量程序跑飛:LA系列邏輯分析儀內(nèi)部集成了32位的定時(shí)器、32位的計(jì)數(shù)器和高速比較模塊,高效的使用以上模塊資源可以使您的測(cè)量事半功倍。邏輯分析儀在實(shí)際應(yīng)用中主要作用有:1.觀察波形,看看測(cè)量波形中是否存在毛刺、干擾、頻率是否正確等;2.時(shí)序測(cè)量,對(duì)被測(cè)信號(hào)進(jìn)行時(shí)序校對(duì),看看操作時(shí)序是否符合要求。3.輔助分析,利用邏輯分析儀完善的協(xié)議分析功能來進(jìn)行輔助分析;4.查錯(cuò)功能,利用邏輯分析儀強(qiáng)大的觸發(fā)功能來進(jìn)行錯(cuò)誤捕獲。當(dāng)單片機(jī)的PC值(程序計(jì)數(shù)器)對(duì)沒有程序的地方進(jìn)行取指時(shí),稱為程序跑飛。程序跑飛的原因有多種,主要有以下原因:1) 客觀原因:單片機(jī)受到外界強(qiáng)干擾造成PC值寄存器改變;2)程序Bug:用戶程序調(diào)用函數(shù)指針,對(duì)非程序空間進(jìn)行對(duì)用。以80C51單片機(jī)為例子,當(dāng)程序跑到非用戶程序區(qū)時(shí),單片機(jī)使用PSEN對(duì)外部程序進(jìn)行取指,使用邏輯分析儀可以設(shè)置觸發(fā)條件,當(dāng)使用PSEN對(duì)外部程序進(jìn)行取指時(shí)進(jìn)行記錄,把出錯(cuò)情況前后的狀態(tài)記錄下來進(jìn)行分析,查找出錯(cuò)原因。如80C51的取指范圍正確為0x0000~0x3fff,則當(dāng)對(duì)0x3fff以上地址進(jìn)行取指時(shí)為程序跑飛。分析80C51對(duì)外部程序取指的時(shí)序,如圖1所示。
標(biāo)簽: 如何使用 觸發(fā) 測(cè)量程序
上傳時(shí)間: 2013-10-11
上傳用戶:panpanpan
串口調(diào)試軟件SSCOM可供免費(fèi)使用,免費(fèi)下載,本軟件可以在Win95/98、Win2000、WinNT、WinXP下面運(yùn)行.軟件功能主要為: 1.接收從串口進(jìn)來的數(shù)據(jù)并在窗口顯示. 2.所接收到的數(shù)據(jù)數(shù)據(jù)顯示方式可以選擇為字符方式或者HEX方式 4.中文顯示無亂碼,且不影響速度 5.串口波特率可以選擇為110bps-256000bps.(波特率>115200時(shí)需要硬件支持) 6.可以即時(shí)顯示存在的串口號(hào).如果您增加了usb轉(zhuǎn)串口等設(shè)備,串口號(hào)也會(huì)在列表中出現(xiàn). 7.可以選擇“5、6、7、8”四種數(shù)據(jù)長度. 8.可以選擇為“1、1.5、2”三種停止位.(1.5停止位需要硬件支持) 8.第9位數(shù)據(jù)可以選擇為“無、奇校驗(yàn)、偶校驗(yàn)、1、0”四種方式. 9.可以選擇“無流控、軟流控、硬流控、自定義”四種流控方式. 10.串口設(shè)置和字符串操作等設(shè)置在程序關(guān)閉時(shí)自動(dòng)保存,打開時(shí)自動(dòng)載入. 11.可以在接收窗口按鍵即發(fā)送該鍵值. 12.可以在字符串輸入框輸入您想發(fā)送的字符串,并發(fā)送. 13.可以在字符串輸入框輸入您想發(fā)送的HEX數(shù)據(jù)串,數(shù)據(jù)的值從00到FF,沒有任何限制. 14.可以定時(shí)重復(fù)發(fā)送數(shù)據(jù),并可以設(shè)置發(fā)送時(shí)間間隔. 15.可以在發(fā)送字符串時(shí)選擇發(fā)送新行,即自動(dòng)加上回車換行. 16.可以顯示當(dāng)前串口的CTS、DSR、RLSL(CD)信號(hào)線的狀態(tài). 17.可以自由控制當(dāng)前串口的DTR、RTS信號(hào)線的輸出狀態(tài). 18.可以打開一個(gè)文本文件或者一個(gè)二進(jìn)制文件預(yù)覽其內(nèi)容,查看方式可以是文本或者HEX方式. 19.可以打開一個(gè)文本文件或者一個(gè)二進(jìn)制文件并以當(dāng)前波特率發(fā)送到串口. 20.可以保存窗口內(nèi)容到一個(gè)文本文件,文件名取自當(dāng)前時(shí)間,保存在當(dāng)前目錄. 21.可以即時(shí)顯示發(fā)送的字節(jié)數(shù)和接收到的字節(jié)數(shù),按清除窗口將會(huì)清零. 22.帶有功能強(qiáng)大的擴(kuò)展功能:多條字符串發(fā)送定義和網(wǎng)上查找串口資料等. 23.可以定義最多32條預(yù)備發(fā)送的字符串,每條字符串可以定義為HEX數(shù)據(jù)串或者字符串方式.在每一條數(shù)據(jù)的左邊打勾就表示這是一條hex數(shù)據(jù)串. 24.點(diǎn)擊字符串右邊的標(biāo)號(hào)即可以發(fā)送這條定義好的字符串. 25.可以設(shè)置為循環(huán)發(fā)送你定義過的多條字符串,并且可以設(shè)置發(fā)送時(shí)間間隔. 26.在串口資料欄您可以從mcu51網(wǎng)站或者Google查找有關(guān)串口技術(shù)資料. 27.在串口資料欄您可以進(jìn)入技術(shù)討論bbs,在此發(fā)表您的高見或者提出您的問題和需求. 28.在產(chǎn)品信息欄您可以獲得現(xiàn)時(shí)最新的產(chǎn)品信息. 29.這是個(gè)綠色軟件,單個(gè)文件即可執(zhí)行,不會(huì)給您的機(jī)器增加任何負(fù)擔(dān). 此版本使用C++Builder編寫,相對(duì)于上一版本SSCOM2.0,主要改進(jìn)在: 1.程序更穩(wěn)定可靠,修改了一些報(bào)錯(cuò)信息.使用更加人性化。 2.修改了避免顯示漢字亂碼的算法,快了許多. 3.hex數(shù)據(jù)輸入的錯(cuò)誤兼容性. 4.發(fā)送字符串可以加發(fā)回車換行. 5.可以保存窗口內(nèi)容到文件. 6.發(fā)送和接收的字符數(shù)統(tǒng)計(jì)更準(zhǔn)確. 7.不再接收到一定數(shù)量字符數(shù)就清屏,因?yàn)榘l(fā)現(xiàn)即使收到很多內(nèi)容也不會(huì)溢出,速度仍然很快. 8,可以打開二進(jìn)制文件并發(fā)送,從前只能發(fā)文本文件. 9.打開文件后可以用asc方式或者h(yuǎn)ex方式預(yù)覽文件中前4K內(nèi)容. 10.發(fā)送文件前告訴操作者需要發(fā)送多少時(shí)間.免得久等. 11.新增功能強(qiáng)大的擴(kuò)展功能,多達(dá)32條自定義字符串操作,程序關(guān)閉時(shí)這些字符串會(huì)自動(dòng)保存,下次開機(jī)時(shí)再載入,每條可以定義為HEX數(shù)據(jù)串或者ASC字符串,按后邊的數(shù)字按鈕可以發(fā)送.也可以自動(dòng)循環(huán)發(fā)送定義過的字符串. 12.新增串口設(shè)置自動(dòng)保存. 13.加入了網(wǎng)絡(luò)支持功能,用戶很方便討論問題和找到技術(shù)支持.
標(biāo)簽: SSCOMV 3.0 串口調(diào)試 軟件
上傳時(shí)間: 2013-10-26
上傳用戶:448949
地彈的形成:芯片內(nèi)部的地和芯片外的PCB地平面之間不可避免的會(huì)有一個(gè)小電感。這個(gè)小電感正是地彈產(chǎn)生的根源,同時(shí),地彈又是與芯片的負(fù)載情況密切相關(guān)的。下面結(jié)合圖介紹一下地彈現(xiàn)象的形成。 簡單的構(gòu)造如上圖的一個(gè)小“場(chǎng)景”,芯片A為輸出芯片,芯片B為接收芯片,輸出端和輸入端很近。輸出芯片內(nèi)部的CMOS等輸入單元簡單的等效為一個(gè)單刀雙擲開關(guān),RH和RL分別為高電平輸出阻抗和低電平輸出阻抗,均設(shè)為20歐。GNDA為芯片A內(nèi)部的地。GNDPCB為芯片外PCB地平面。由于芯片內(nèi)部的地要通過芯片內(nèi)的引線和管腳才能接到GNDPCB,所以就會(huì)引入一個(gè)小電感LG,假設(shè)這個(gè)值為1nH。CR為接收端管腳電容,這個(gè)值取6pF。這個(gè)信號(hào)的頻率取200MHz。雖然這個(gè)LG和CR都是很小的值,不過,通過后面的計(jì)算我們可以看到它們對(duì)信號(hào)的影響。先假設(shè)A芯片只有一個(gè)輸出腳,現(xiàn)在Q輸出高電平,接收端的CR上積累電荷。當(dāng)Q輸出變?yōu)榈碗娖降臅r(shí)候。CR、RL、LG形成一個(gè)放電回路。自諧振周期約為490ps,頻率為2GHz,Q值約為0.0065。使用EWB建一個(gè)仿真電路。(很老的一個(gè)軟件,很多人已經(jīng)不懈于使用了。不過我個(gè)人比較依賴它,關(guān)鍵是建模,模型參數(shù)建立正確的話仿真結(jié)果還是很可靠的,這個(gè)小軟件幫我發(fā)現(xiàn)和解決過很多實(shí)際模擬電路中遇到的問題。這個(gè)軟件比較小,有比較長的歷史,也比較成熟,很容易上手。建議電子初入門的同學(xué)還是熟悉一下。)因?yàn)橹魂P(guān)注下降沿,所以簡單的構(gòu)建下面一個(gè)電路。起初輸出高電平,10納秒后輸出低電平。為方便起見,高電平輸出設(shè)為3.3V,低電平是0V。(實(shí)際200M以上芯片IO電壓會(huì)比較低,多采用1.5-2.5V。)
標(biāo)簽: 分
上傳時(shí)間: 2013-10-17
上傳用戶:zhishenglu
抽樣z變換頻率抽樣理論:我們將先闡明:(1)z變換與DFT的關(guān)系(抽樣z變換),在此基礎(chǔ)上引出抽樣z變換的概念,并進(jìn)一步深入討論頻域抽樣不失真條件。(2)頻域抽樣理論(頻域抽樣不失真條件)(3)頻域內(nèi)插公式一、z變換與DFT關(guān)系(1)引入連續(xù)傅里葉變換引出離散傅里葉變換定義式。離散傅里葉變換看作是序列的傅里葉變換在 頻 域 再 抽 樣 后 的 變 換 對(duì).在Z變換與L變換中,又可了解到序列的傅里葉 變換就是單位圓上的Z 變 換.所以對(duì)序列的傅里葉變換進(jìn)行頻域抽樣時(shí), 自 然可以看作是對(duì)單位圓上的 Z變換進(jìn)行抽樣. (2)推導(dǎo)Z 變 換 的 定 義 式 (正 變 換) 重 寫 如 下: 取z=ejw 代 入 定 義 式, 得 到 單 位 圓 上 Z 變 換 為w是 單 位 圓 上 各 點(diǎn) 的 數(shù) 字 角 頻 率.再 進(jìn) 行 抽 樣-- N 等 分.這 樣w=2kπ/N, 即w值為0,2π/N,4π/N,6π/N…, 考慮到x(n)是N點(diǎn)有限長序列, 因而n只需0~N-1即可。將w=2kπ/N代入并改變上下限, 得 則這正是離散傅里葉變換 (DFT)正變換定義式.
上傳時(shí)間: 2014-12-28
上傳用戶:zhaistone
離散傅里葉變換,(DFT)Direct Fouriet Transformer(PPT課件) 一、序列分類對(duì)一個(gè)序列長度未加以任何限制,則一個(gè)序列可分為: 無限長序列:n=-∞~∞或n=0~∞或n=-∞~ 0 有限長序列:0≤n≤N-1有限長序列在數(shù)字信號(hào)處理是很重要的一種序列。由于計(jì)算機(jī)容量的限制,只能對(duì)過程進(jìn)行逐段分析。二、DFT引入由于有限長序列,引入DFT(離散付里葉變換)。DFT它是反映了“有限長”這一特點(diǎn)的一種有用工具。DFT變換除了作為有限長序列的一種付里葉表示,在理論上重要之外,而且由于存在著計(jì)算機(jī)DFT的有效快速算法--FFT,因而使離散付里葉變換(DFT)得以實(shí)現(xiàn),它使DFT在各種數(shù)字信號(hào)處理的算法中起著核心的作用。三、本章主要討論離散付里葉變換的推導(dǎo)離散付里葉變換的有關(guān)性質(zhì)離散付里葉變換逼近連續(xù)時(shí)間信號(hào)的問題第二節(jié)付里葉變換的幾種形式傅 里 葉 變 換 : 建 立 以 時(shí) 間 t 為 自 變 量 的 “ 信 號(hào) ” 與 以 頻 率 f為 自 變 量 的 “ 頻 率 函 數(shù) ”(頻譜) 之 間 的 某 種 變 換 關(guān) 系 . 所 以 “ 時(shí) 間 ” 或 “ 頻 率 ” 取 連 續(xù) 還 是 離 散 值 , 就 形 成 各 種 不 同 形 式 的 傅 里 葉 變 換 對(duì) 。, 在 深 入 討 論 離 散 傅 里 葉 變 換 D F T 之 前 , 先 概 述 四種 不 同 形式 的 傅 里 葉 變 換 對(duì) . 一、四種不同傅里葉變換對(duì)傅 里 葉 級(jí) 數(shù)(FS):連 續(xù) 時(shí) 間 , 離 散 頻 率 的 傅 里 葉 變 換 。連 續(xù) 傅 里 葉 變 換(FT):連 續(xù) 時(shí) 間 , 連 續(xù) 頻 率 的 傅 里 葉 變 換 。序 列 的 傅 里 葉 變 換(DTFT):離 散 時(shí) 間 , 連 續(xù) 頻 率 的 傅 里 葉 變 換.離 散 傅 里 葉 變 換(DFT):離 散 時(shí) 間 , 離 散 頻 率 的 傅 里 葉 變 換1.傅 里 葉 級(jí) 數(shù)(FS)周期連續(xù)時(shí)間信號(hào) 非周期離散頻譜密度函數(shù)。 周期為Tp的周期性連續(xù)時(shí)間函數(shù) x(t) 可展成傅里葉級(jí)數(shù)X(jkΩ0) ,是離散非周期性頻譜 , 表 示為:例子通過以下 變 換 對(duì) 可 以 看 出 時(shí) 域 的 連 續(xù) 函 數(shù) 造 成 頻 域 是 非 周 期 的 頻 譜 函 數(shù) , 而 頻 域 的 離 散 頻 譜 就 與 時(shí) 域 的 周 期 時(shí) 間 函 數(shù) 對(duì) 應(yīng) . (頻域采樣,時(shí)域周期延 拓)2.連 續(xù) 傅 里 葉 變 換(FT)非周期連續(xù)時(shí)間信號(hào)通過連續(xù)付里葉變換(FT)得到非周期連續(xù)頻譜密度函數(shù)。
標(biāo)簽: Fouriet Direct DFT Tr
上傳時(shí)間: 2013-11-19
上傳用戶:fujiura
SPCE061A采用的內(nèi)核 SPCE061A采用的內(nèi)核(CPU)為μ‘nSP。 μ‘nSP(讀做micro-n-S-P)是凌陽科技推出的16位微處理器,它的突出特點(diǎn)是較高的處理速度,這就使其有能力進(jìn)行復(fù)雜的數(shù)字信號(hào)處理(DSP,Digital Signal Processing)。 μ‘nSP內(nèi)核由凌陽自主開發(fā),因而也具備它自己的指令系統(tǒng)。 指令系統(tǒng).61 3.1 指令系統(tǒng)的概述及符號(hào)約定.61 3.2 數(shù)據(jù)傳送指令62 3.3 算術(shù)運(yùn)算..66 3.3.1 加法運(yùn)算..67 3.3.2 減法運(yùn)算..68 3.3.3 帶進(jìn)位的加減運(yùn)算.70 3.3.4 取補(bǔ)運(yùn)算..70 3.3.5 SPCE061A的乘法指令.71 3.3.6 SPCE061A的n項(xiàng)內(nèi)積運(yùn)算指令.71 3.3.7 比較運(yùn)算(影響標(biāo)志位N,Z,S,C)..73 3.4 SPCE061A的邏輯運(yùn)算.74 3.4.1 邏輯與..74 3.4.2 邏輯或..75 3.4.3 邏輯異或..76 3.4.4 測(cè)試(TEST).78 3.4.5 SPCE061A的移位操作.80 3.5 SPCE061A的控制轉(zhuǎn)移類指令..83 3.6 偽指令86 3.6.1 偽指令的語法格式及特點(diǎn)..87 3.6.2 偽指令符號(hào)約定..87 3.6.3 標(biāo)準(zhǔn)偽指令.87 3.6.4 宏定義與調(diào)用98 3.6.5 段的定義與調(diào)用101 3.6.6 結(jié)構(gòu)的定義與調(diào)用..102 3.6.7 過程的定義與調(diào)用..106 3.6.8 偽指令的應(yīng)用舉例..106
標(biāo)簽: SPCE 061A 061 指令系統(tǒng)
上傳時(shí)間: 2013-10-31
上傳用戶:xuanchangri
Keil C51使用詳解:8051 系列微處理器基于簡化的嵌入式控制系統(tǒng)結(jié)構(gòu)被廣泛應(yīng)用于從軍事到自動(dòng)控制再到PC 機(jī)上的鍵盤上的各種應(yīng)用系統(tǒng)上僅次于Motorola 68HC11 在 8 位微控制器市場(chǎng)上的銷量很多制造商都可提供8051 系列單片機(jī)像Intel Philips Siemens 等這些制造商給51 系列單片機(jī)加入了大量的性能和外部功能像I2C 總線接口模擬量到數(shù)字量的轉(zhuǎn)換看門狗PWM 輸出等不少芯片的工作頻率達(dá)到40M 工作電壓下降到1.5V 基于一個(gè)內(nèi)核的這些功能使得8051 單片機(jī)很適合作為廠家產(chǎn)品的基本構(gòu)架它能夠運(yùn)行各種程序而且開發(fā)者只需要學(xué)習(xí)這一個(gè)平臺(tái)8051 系列的基本結(jié)構(gòu)如下1 一個(gè)8 位算術(shù)邏輯單元2 32 個(gè)I/O 口4 組8 位端口可單獨(dú)尋址3 兩個(gè)16 位定時(shí)計(jì)數(shù)器4 全雙工串行通信5 6 個(gè)中斷源兩個(gè)中斷優(yōu)先級(jí)6 128 字節(jié)內(nèi)置RAM7 獨(dú)立的64K 字節(jié)可尋址數(shù)據(jù)和代碼區(qū)每個(gè)8051 處理周期包括12 個(gè)振蕩周期每12 個(gè)振蕩周期用來完成一項(xiàng)操作如取指令和計(jì)算指令執(zhí)行時(shí)間可把時(shí)鐘頻率除以12 取倒數(shù)然后指令執(zhí)行所須的周期數(shù)因此如果你的系統(tǒng)時(shí)鐘是11.059MHz 除以12 后就得到了每秒執(zhí)行的指令個(gè)數(shù)為921583
上傳時(shí)間: 2014-04-05
上傳用戶:xaijhqx
用單片機(jī)AT89C51改造普通雙桶洗衣機(jī):AT89C2051作為AT89C51的簡化版雖然去掉了P0、P2等端口,使I/O口減少了,但是卻增加了一個(gè)電壓比較器,因此其功能在某些方面反而有所增強(qiáng),如能用來處理模擬量、進(jìn)行簡單的模數(shù)轉(zhuǎn)換等。本文利用這一功能設(shè)計(jì)了一個(gè)數(shù)字電容表,可測(cè)量容量小于2微法的電容器的容量,采用3位半數(shù)字顯示,最大顯示值為1999,讀數(shù)單位統(tǒng)一采用毫微法(nf),量程分四檔,讀數(shù)分別乘以相應(yīng)的倍率。電路工作原理 本數(shù)字電容表以電容器的充電規(guī)律作為測(cè)量依據(jù),測(cè)試原理見圖1。電源電路圖。 壓E+經(jīng)電阻R給被測(cè)電容CX充電,CX兩端原電壓隨充電時(shí)間的增加而上升。當(dāng)充電時(shí)間t等于RC時(shí)間常數(shù)τ時(shí),CX兩端電壓約為電源電壓的63.2%,即0.632E+。數(shù)字電容表就是以該電壓作為測(cè)試基準(zhǔn)電壓,測(cè)量電容器充電達(dá)到該電壓的時(shí)間,便能知道電容器的容量。例如,設(shè)電阻R的阻值為1千歐,CX兩端電壓上升到0.632E+所需的時(shí)間為1毫秒,那么由公式τ=RC可知CX的容量為1微法。 測(cè)量電路如圖2所示。A為AT89C2051內(nèi)部構(gòu)造的電壓比較器,AT89C2051 圖2 的P1.0和P1.1口除了作I/O口外,還有一個(gè)功能是作為電壓比較器的輸入端,P1.0為同相輸入端,P1.1為反相輸入端,電壓比較器的比較結(jié)果存入P3.6口對(duì)應(yīng)的寄存器,P3.6口在AT89C2051外部無引腳。電壓比較器的基準(zhǔn)電壓設(shè)定為0.632E+,在CX兩端電壓從0升到0.632E+的過程中,P3.6口輸出為0,當(dāng)電池電壓CX兩端電壓一旦超過0.632E+時(shí),P3.6口輸出變?yōu)?。以P3.6口的輸出電平為依據(jù),用AT89C2051內(nèi)部的定時(shí)器T0對(duì)充電時(shí)間進(jìn)行計(jì)數(shù),再將計(jì)數(shù)結(jié)果顯示出來即得出測(cè)量結(jié)果。整機(jī)電路見圖3。電路由單片機(jī)電路、電容充電測(cè)量電路和數(shù)碼顯示電路等 圖3 部分組成。AT89C2051內(nèi)部的電壓比較器和電阻R2-R7等組成測(cè)量電路,其中R2-R5為量程電阻,由波段開關(guān)S1選擇使用,電壓比較器的基準(zhǔn)電壓由5V電源電壓經(jīng)R6、RP1、R7分壓后得到,調(diào)節(jié)RP1可調(diào)整基準(zhǔn)電壓。當(dāng)P1.2口在程序的控制下輸出高電平時(shí),電容CX即開始充電。量程電阻R2-R5每檔以10倍遞減,故每檔顯示讀數(shù)以10倍遞增。由于單片機(jī)內(nèi)部P1.2口的上拉電阻經(jīng)實(shí)測(cè)約為200K,其輸出電平不能作為充電電壓用,故用R5兼作其上拉電阻,由于其它三個(gè)充電電阻和R5是串聯(lián)關(guān)系,因此R2、R3、R4應(yīng)由標(biāo)準(zhǔn)值減去1K,分別為999K、99K、9K。由于999K和1M相對(duì)誤差較小,所以R2還是取1M。數(shù)碼管DS1-DS4、電阻R8-R14等組成數(shù)碼顯示電路。本機(jī)采用動(dòng)態(tài)掃描顯示的方式,用軟件對(duì)字形碼譯碼。P3.0-P3.5、P3.7口作數(shù)碼顯示七段筆劃字形碼的輸出,P1.3-P1.6口作四個(gè)數(shù)碼管的動(dòng)態(tài)掃描位驅(qū)動(dòng)碼輸出。這里采用了共陰數(shù)碼管,由于AT89C2051的P1.3-P1.6口有25mA的下拉電流能力,所以不用三極管就能驅(qū)動(dòng)數(shù)碼管。R8-R14為P3.0-P3.5、P3.7口的上拉電阻,用以驅(qū)動(dòng)數(shù)碼管的各字段,當(dāng)P3的某一端口輸出低電平時(shí)其對(duì)應(yīng)的字段筆劃不點(diǎn)亮,而當(dāng)其輸出高電平時(shí),則對(duì)應(yīng)的上拉電阻即能點(diǎn)亮相應(yīng)的字段筆劃。
上傳時(shí)間: 2013-12-31
上傳用戶:ming529
單片機(jī)音樂中音調(diào)和節(jié)拍的確定方法:調(diào)號(hào)-音樂上指用以確定樂曲主音高度的符號(hào)。很明顯一個(gè)八度就有12個(gè)半音。A、B、C、D、E、F、G。經(jīng)過聲學(xué)家的研究,全世界都用這些字母來表示固定的音高。比如,A這個(gè)音,標(biāo)準(zhǔn)的音高為每秒鐘振動(dòng)440周。 升C調(diào):1=#C,也就是降D調(diào):1=BD;277(頻率)升D調(diào):1=#D,也就是降E調(diào):1=BE;311升F調(diào):1=#F,也就是降G調(diào):1=BG;369升G調(diào):1=#G,也就是降A(chǔ)調(diào):1=BA;415升A調(diào):1=#A,也就是降B調(diào):1=BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415A 440. #A466 B 494 所謂1=A,就是說,這首歌曲的“導(dǎo)”要唱得同A一樣高,人們也把這首歌曲叫做A調(diào)歌曲,或叫“唱A調(diào)”。1=C,就是說,這首歌曲的“導(dǎo)”要唱得同C一樣高,或者說“這歌曲唱C調(diào)”。同樣是“導(dǎo)”,不同的調(diào)唱起來的高低是不一樣的。各調(diào)的對(duì)應(yīng)的標(biāo)準(zhǔn)頻率為: 單片機(jī)演奏音樂時(shí)音調(diào)和節(jié)拍的確定方法 經(jīng)常看到一些剛學(xué)單片機(jī)的朋友對(duì)單片機(jī)演奏音樂比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識(shí)做一些簡介,但愿能對(duì)單片機(jī)演奏音樂比較有興趣而又不知其解的朋友能有所啟迪。 一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂只需弄清楚兩個(gè)概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個(gè)音符唱多高的頻率,節(jié)拍表示一個(gè)音符唱多長的時(shí)間。 在音樂中所謂“音調(diào)”,其實(shí)就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標(biāo)準(zhǔn)音高,其頻率f=440Hz。當(dāng)兩個(gè)聲音信號(hào)的頻率相差一倍時(shí),也即f2=2f1時(shí),則稱f2比f1高一個(gè)倍頻程, 在音樂中1(do)與 ,2(來)與 ……正好相差一個(gè)倍頻程,在音樂學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音內(nèi),有12個(gè)半音。以1—i八音區(qū)為例, 12個(gè)半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。這12個(gè)音階的分度基本上是以對(duì)數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個(gè)音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。 知道了一個(gè)音符的頻率后,怎樣讓單片機(jī)發(fā)出相應(yīng)頻率的聲音呢?一般說來,常采用的方法就是通過單片機(jī)的定時(shí)器定時(shí)中斷,將單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時(shí)器予置不同的定時(shí)值就可實(shí)現(xiàn)。那么怎樣確定一個(gè)頻率所對(duì)應(yīng)的定時(shí)器的定時(shí)值呢?以標(biāo)準(zhǔn)音高A為例: A的頻率f = 440 Hz,其對(duì)應(yīng)的周期為:T = 1/ f = 1/440 =2272μs 由上圖可知,單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來回取反的時(shí)間應(yīng)為:t = T/2 = 2272/2 = 1136μs這個(gè)時(shí)間t也就是單片機(jī)上定時(shí)器應(yīng)有的中斷觸發(fā)時(shí)間。一般情況下,單片機(jī)奏樂時(shí),其定時(shí)器為工作方式1,它以振蕩器的十二分頻信號(hào)為計(jì)數(shù)脈沖。設(shè)振蕩器頻率為f0,則定時(shí)器的予置初值由下式來確定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL為定時(shí)器待確定的計(jì)數(shù)初值。因此定時(shí)器的高低計(jì)數(shù)器的初值為: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256 將t=1136μs代入上面兩式(注意:計(jì)算時(shí)應(yīng)將時(shí)間和頻率的單位換算一致),即可求出標(biāo)準(zhǔn)音高A在單片機(jī)晶振頻率f0=12Mhz,定時(shí)器在工作方式1下的定時(shí)器高低計(jì)數(shù)器的予置初值為 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根據(jù)上面的求解方法,我們就可求出其他音調(diào)相應(yīng)的計(jì)數(shù)器的予置初值。 音符的節(jié)拍我們可以舉例來說明。在一張樂譜中,我們經(jīng)常會(huì)看到這樣的表達(dá)式,如1=C 、1=G …… 等等,這里1=C,1=G表示樂譜的曲調(diào),和我們前面所談的音調(diào)有很大的關(guān)聯(lián), 、 就是用來表示節(jié)拍的。以 為例加以說明,它表示樂譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。比如: 其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時(shí)長為四分音符的一半,即為八分音符長,3、4的時(shí)長為八分音符的一半,即為十六分音符長,5的時(shí)長為四分音符的一半,即為八分音符長,6的時(shí)長為四分音符長。那么一拍到底該唱多長呢?一般說來,如果樂曲沒有特殊說明,一拍的時(shí)長大約為400—500ms 。我們以一拍的時(shí)長為400ms為例,則當(dāng)以四分音符為節(jié)拍時(shí),四分音符的時(shí)長就為400ms,八分音符的時(shí)長就為200ms,十六分音符的時(shí)長就為100ms。可見,在單片機(jī)上控制一個(gè)音符唱多長可采用循環(huán)延時(shí)的方法來實(shí)現(xiàn)。首先,我們確定一個(gè)基本時(shí)長的延時(shí)程序,比如說以十六分音符的時(shí)長為基本延時(shí)時(shí)間,那么,對(duì)于一個(gè)音符,如果它為十六分音符,則只需調(diào)用一次延時(shí)程序,如果它為八分音符,則只需調(diào)用二次延時(shí)程序,如果它為四分音符,則只需調(diào)用四次延時(shí)程序,依次類推。通過上面關(guān)于一個(gè)音符音調(diào)和節(jié)拍的確定方法,我們就可以在單片機(jī)上實(shí)現(xiàn)演奏音樂了。具體的實(shí)現(xiàn)方法為:將樂譜中的每個(gè)音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍參數(shù),將他們做成數(shù)據(jù)表格,存放在存儲(chǔ)器中,通過程序取出一個(gè)音符的相關(guān)參數(shù),播放該音符,該音符唱完后,接著取出下一個(gè)音符的相關(guān)參數(shù)……,如此直到播放完畢最后一個(gè)音符,根據(jù)需要也可循環(huán)不停地播放整個(gè)樂曲。另外,對(duì)于樂曲中的休止符,一般將其音調(diào)參數(shù)設(shè)為FFH,F(xiàn)FH,其節(jié)拍參數(shù)與其他音符的節(jié)拍參數(shù)確定方法一致,樂曲結(jié)束用節(jié)拍參數(shù)為00H來表示。下面給出部分音符(三個(gè)八度音)的頻率以及以單片機(jī)晶振頻率f0=12Mhz,定時(shí)器在工作方式1下的定時(shí)器高低計(jì)數(shù)器的予置初值 : C調(diào)音符 頻率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC調(diào)音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7頻率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C調(diào)音符 頻率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
上傳時(shí)間: 2013-10-20
上傳用戶:哈哈haha
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1