freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的數(shù)字頻率計的設計-資料下載頁

2025-06-27 20:33本頁面
  

【正文】 最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,本設計使用時通過一個10K的電位器調(diào)整其對比度(圖中未畫出)。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。 第15~16腳:空腳(圖中未畫出)。由于AT89S52單片機的P0口內(nèi)部沒有上拉電阻故在單片機與1602ALCD之間需加上上拉電阻(圖中未標出)。 1602ALCD基本技術(shù): 1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如表1所示,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A” 1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表所示, 它的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平) 指令1:清顯示,指令碼01H,光標復位到地址00H位置。指令2:光標復位,光標返回到地址00H。指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標的開與關(guān),高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。 指令7:字符發(fā)生器RAM地址設置。 指令8:DDRAM地址設置。 指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。 指令10:寫數(shù)據(jù) 指令11:讀數(shù)據(jù) 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,下表是DM162的內(nèi)部顯示地址. 比如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應該是01000000B(40H)+10000000B(80H)=11000000B(C0H) 3 軟件設計 系統(tǒng)工作流程圖系統(tǒng)工作流程如圖10 圖10系統(tǒng)工作流程圖 T0的1s定時本次設計選用定時器T0完成定時功能,選用方式1時最多也只能定時顯然不能滿足定時1 S的要求,可以用下面這種方法解決:采用T0定時50 ,連續(xù)循環(huán)定時20次即可完成1 定時,用一個計數(shù)單元存放循環(huán)的次數(shù),每一次循環(huán)單元自加1,當加到20次時則1S 定時到時。其程序流程圖如圖11所示。 T1的計數(shù)原理 設計中T1采用計數(shù)功能,需要注意的一個問題是,輸入的待測時鐘信號的頻率最高可以達到460800Hz,但本設計的最高頻率為計數(shù)器的最多計數(shù)65536次,顯然當所輸入的頻率大于65536Hz的時候?qū)o法顯示,所以每當計數(shù)器T1溢出回零時產(chǎn)生中斷,中斷程序執(zhí)行顯示提示錯誤信息顯示為00000Hz。其程序流程圖如圖12所示。 圖11 圖12 軟件工作原理將整形后的波形送至單片機的T1計數(shù)器輸入口,打開定時器0,初始化定時器0,將單片機的內(nèi)部定時器T0定時為1S,此時T1輸入口在1s內(nèi)所計數(shù)到的脈沖個數(shù)即為該信號的頻率。將該計數(shù)脈沖個數(shù)經(jīng)單片機處理送至LCD顯示。 軟件處理方法 本頻率計的設計以 AT89S52 單片機為核心 ,利用它內(nèi)部的定時/ 計數(shù)器完成待測信號頻率的測量 。單片機 AT89S52 內(nèi)部具有 2 個 16 位定時/計數(shù)器 ,定時/ 計數(shù)器的工作可以由編程來實現(xiàn)定時 、計數(shù)和產(chǎn)生計數(shù)溢出中斷要求的功能 。在構(gòu)成為定時器時 ,每個機器周期加 1 (使用 12M Hz 時鐘時 ,每 1us 加 1) ,這樣以機器周期為基準可以用來準確定時1S。在構(gòu)成為計數(shù)器時 ,在相應的外部引腳發(fā)生從 1 到 0 的跳變時計數(shù)器加 1 ,這樣在計數(shù)閘門的控制下可以用來測量待測信號的頻率 。外部輸入每個機器周期被采樣一次 ,這樣檢測一次從1 到 0 的跳變至少需要 2 個機器周期 (24 個振蕩周期) ,所以最大計數(shù)速率為時鐘頻率的 1/ 24 ( 使用12M Hz 時鐘時 ,最大計數(shù)速率為 500 KHz) 。定時/計數(shù)器的工作由相應的運行控制位 TR 控制 ,當 TR置 1 ,定時/ 計數(shù)器開始計數(shù) 。當 TR 清 0 ,停止計數(shù) 。設計綜合考慮了頻率測量精度和測量反應時間的要求 。[6]4 實驗結(jié)果與分析為了衡量這次設計的頻率計的工作情況和測量精度,本人對系統(tǒng)進行了多次測量。以南京電訊儀器廠生產(chǎn)的E312B型通用計數(shù)器為基準進行了測試對比。測量數(shù)據(jù)如下表[7]E312B頻率測試值(Hz)10501005001000500080001000050000本設計頻率計測量值(Hz)105099492100150037995999549973相對誤差(%)001%%%%%%% 基于單片機直接計數(shù)脈沖,受單片機晶振頻率的影響,外圍電路與外部中斷口接觸良好問題,外界環(huán)境干擾等因素,故本頻率存在一定客觀和主觀上的誤差。經(jīng)實際多次測試頻率在小于1000Hz的時候最大相對誤差達到1%,%。受本頻率計的相對誤差影響使得本頻率計適合的場合受到一定的限制。但由于本頻率計設計成本低、產(chǎn)品可模塊化設計、電源直接使用干電池、體積小、使用時可隨時隨地移動、使用起來特別的方便,比起傳統(tǒng)的頻率計還是有非常大的使用價值和使用空間。結(jié) 束 語通過本次畢業(yè)設計,不但加深我對在課程上所學到的單片機理論知識的認識和理解,重新讓自己認識到了這門學科的在應用方面的廣闊前景,并且通過知識與應用于實踐的結(jié)合更加豐富了自己的知識。擴展了知識面,不但掌握了本專業(yè)的相關(guān)知識,而且對其他專業(yè)的知識也有所了解,而且較系統(tǒng)的掌握單片機應用系統(tǒng)的開發(fā)過程,因而自身的綜合素質(zhì)有了全面的提高。 經(jīng)過這次一個較完整的產(chǎn)品設計和制作過程,對于認識到自己在知識方面存在的不足,明確今后的學習方向是非常有益的,為將來的的就業(yè)提前打了下堅實的基礎。附錄程序:include include typedef unsigned char BYTE。typedef unsigned int WORD。typedef bit BOOL 。sbit rs = P1^0。 //液晶模塊接口sbit rw = P1^1。sbit ep = P1^2。delay(BYTE ms){ // 延時子程序 BYTE i。 while(ms) { for(i = 0。 i i++) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 } }}BOOL lcd_bz(){ // 測試LCD忙碌狀態(tài) BOOL result。 rs = 0。 rw = 1。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 result = (BOOL)(P0 amp。 0x80)。 ep = 0。 return result。 }lcd_wcmd(BYTE cmd){ // 寫入指令數(shù)據(jù)到LCD while(lcd_bz())。 rs = 0。 rw = 0。 ep = 0。 _nop_()。 _nop_()。 P0 = cmd。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 }extern void lcd_pos(BYTE pos){ //設定顯示位置 lcd_wcmd(pos | 0x80)。}extern void lcd_wdat(BYTE dat) { //寫入字符顯示數(shù)據(jù)到LCD while(lcd_bz())。 rs = 1。 rw = 0。 ep = 0。 P0 = dat。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 }extern void lcd_init(){ //LCD初始化設定 lcd_wcmd(0x38)。 // 8位數(shù)據(jù)接口,2行顯示,5*7 delay(1)。 lcd_wcmd(0x0c)。 // 顯示開。關(guān)標關(guān)。閃爍關(guān) delay(1)。 lcd_wcmd(0x06)。 // 數(shù)據(jù)讀寫AC加1。畫面不移動 delay(1)。 lcd_wcmd(0x01)。 //清除LCD的顯示內(nèi)容 delay(1)。}include //typedef unsigned char BYTE。typedef unsigned int WORD。typedef bit BOOL 。//extern void lcd_init()。extern void lcd_wdat(BYTE dat)。extern void lcd_pos(BYTE pos)。//void main(){ lcd_init()。 P0=0XFF。 P1=0XFF。 TMOD=0X01。 TH0=0X3C。 TL0=0XB0。 IE=0X82。 TR0=1。 while(1)。}//void time0(void) interrupt 1 { static BYTE count=0。 TH0=0X3C。 TL0=0XB0。 // if(count==19) { count++。 } else { BYTE GE,SHI,BAI,QIAN,WAN。 WORD SHU。 //讀取數(shù)據(jù)存放在shu中 SHU=P3。 //P3高位 SHU=8。 SHU+=P2。//P2低位 SHUamp。=0XFFF9。 //關(guān)閉定時器 TR0=0。 //輸出shu到lcd中 GE=SHU%10。 SHI=SHU/10%10。 BAI=SHU/100%10。 QIAN=SHU/1000%10。 WAN=SHU/10000。 lcd_pos(0x00)。 lcd_wdat(WAN+48)。 lcd_wdat(QIAN+48)。 lcd_wdat(BAI+48)。 lcd_wdat(SHI+48)。 lcd_wdat(GE+48)。 lcd_wdat(39。 39。)。 lcd_wdat(39。H39。)。 lcd_wdat(39。Z39。)。 //初始化 count=0。 TH0=0X3C。 TL0=0XB0。 P1_3=1。 //準備新一輪的計數(shù) TR0=1。 P1_3=0。 }}16
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1