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

正文內容

基于單片機的數(shù)字電壓表-文庫吧

2025-05-16 16:37 本頁面


【正文】 A L EP S E NP 0P 1P 2P 3V s sV c c 圖 22 STC89C52 單片機結 STC89C52 單片機主要特性 1. 一個 8 位的微處理器 (CPU)。 2. 片內數(shù)據(jù)存儲器 RAM(128B),用以存放 可以讀/寫的數(shù)據(jù),如運算的中間結果、最終結果以及欲顯示的數(shù)據(jù)等。 3. 片內程序存儲器 ROM(4KB),用以存放程序、一些原始數(shù)據(jù)和表格。 4. 四個 8 位并行 I/ O 接口 P0~P3,每個口既可以用作輸入,也可以用 作輸出。 5. 兩個定時器/計數(shù)器,每個定時器/計數(shù)器都可以設置成計數(shù)方式,用以對外部事件進行計數(shù),也可以設置成定時方式,并可以根據(jù)計數(shù)或定時的結果實現(xiàn)計算機控制。 6. 五個中斷源的中斷控制系統(tǒng)。 7. 一個全雙工 UART(通用異步接收發(fā)送器 )的串行 I/ O 口,用于實現(xiàn)單片機之間或單機與微機之間的串行通信。 8. 片內振蕩器和時鐘產生電路,但石英晶體和微調電容需要外接。最高允許振蕩頻率為 12MHz。 STC89C52 單片機的中斷系統(tǒng) STC89C52 系列單片機的中斷系統(tǒng)有 5 個中斷源, 2 個優(yōu)先級 ,可以實現(xiàn)二級中斷服務嵌套。 8 STC89C52 單片機的定時 /計數(shù)器 89C52 單片機內集成有兩個可編程的定時 /計數(shù)器: T0 和 T1,它們既可以工作于定時模式,也可以工作于外部事件計數(shù)模式,此外, T1還可以作為串行口的波特率發(fā)生器。 選擇我所使用的單片機型號,就是 STC89C52RC 打開文件,要燒錄用戶程序,調入用戶的程序代碼( *.bin,*hex) 選擇串口,我選擇的是 1COM1。 設置是否雙倍速,我選擇的是雙倍速,也就是 Double Speed。 選擇“ Download/下載”按鈕,下載我所使用的程序進單片機內部,我是選擇“ Download/下載”按鈕,然后再給單片機上電復位。 LCD液晶顯示器簡介 液晶原理介紹 液晶顯示器 (LCD)英文全稱為 Liquid Crystal Display,它一種是采用了液晶控制透光度技術來實現(xiàn)色彩的顯示器。和 CRT 顯示器相比, LCD 的優(yōu)點是很明顯的。由于通過控制是否透光來控制亮和暗,當色彩不變時,液晶也保持不變,這樣就無須考慮刷新率的問題。本系統(tǒng)顯示部分用的是 LCD 液晶模塊, 采用一個161 的字符型液晶顯示模塊。 液晶模塊簡介 LCD1602液晶模塊采用 HD44780控制器, hd44780具有簡單而功能較強的指令集,可以實現(xiàn)字符移動,閃爍等功能, LM016L 與單片機 MCU 通訊可采用 8 位或 4位并行傳輸兩種方式, hd44780 控制器由兩個 8 位寄存器,指令寄存器( IR)和數(shù)據(jù)寄存器( DR)忙標志( BF),顯示數(shù) RAM( DDRAM),字符發(fā)生器 ROMA( CGOROM)字符發(fā)生器 RAM( CGRAM),地址計數(shù)器 RAM(AC)。 IR 用于寄存指令碼,只能寫入不能讀出, DR用于寄存 數(shù)據(jù),數(shù)據(jù)由內部操作自動寫入 DDRAM和 CGRAM,或者暫存9 從 DDRAM 和 CGRAM 讀出的數(shù)據(jù), BF 為 1 時,液晶模塊處于內部模式,不響應外部操作指令和接受數(shù)據(jù), DDTAM 用來存儲顯示的字符,能存儲 80 個字符碼 。 LCD1602 液晶模塊的引腳圖如圖 25 所示。 圖 25LCD1602 引腳圖 寄存器選擇控制如表 21。 表 21 寄存器選擇控制 RS R/W 操作說明 0 0 寫入指令寄存器(清除屏等) 0 1 讀 busy flag( DB7) 以及讀取位址計數(shù)器( DB0~DB6)值 1 0 寫入數(shù)據(jù)寄 存器(顯示各字型等) 1 1 從數(shù)據(jù)寄存器讀取數(shù)據(jù) 液晶顯示部分與 STC89C52的接口 如圖 26所示。用 STC89C52的 P2口作為數(shù)據(jù)線,用 、 、 作為 LCD 的 E、 R/W、 RS。其中 E 是下降沿觸發(fā)的片選信號, R/W 是讀寫信號, RS是寄存器選擇信號本模塊設計要點如下:顯示模塊初始化:首先清屏,再設置接口數(shù)據(jù)位為 8位,顯示行數(shù)為 1行,字型為 57 點陣,然后設置為整體顯示,取消光標和字體閃爍 ,最后設置為正向增量方式且不移位。向 LCD 的顯示緩沖區(qū)中送字符,程序中采用 2 個 字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應的數(shù)組中,完成后再統(tǒng)一顯示 .首先取一個要顯示的字符或數(shù)據(jù)送到 LCD 的顯示緩沖區(qū),程序延時 ,判斷是否夠顯示的個數(shù),不夠則地址加一取下一個要顯示的字符或數(shù)據(jù)。 10 圖 26 LCD1602 與 STC89C52 的接口 圖 27 鍵盤 模塊 電路圖 硬件電路設計圖如上圖所示。把單片機的 - 8聯(lián)撥動撥碼開關連接到“ 4*4 行列式鍵盤”,其中 作為列線, 作為行線, 系統(tǒng)首先通過 CPU 對全部鍵盤進行掃描,即把第一根行線置為“ 0”狀態(tài),其余行線置于“ 1”狀態(tài),讀入輸入緩沖器的狀態(tài),若其狀態(tài)全為“ 1” 表明該行無鍵按下,再將第二根行線置為“ 0”狀態(tài),同樣讀入輸入緩沖器的狀態(tài),如其狀態(tài)也全為“ 1”,則置第一根行線置為“ 0”狀態(tài),以此類推 [5]。如讀入輸入緩沖器的狀態(tài)不全為“ 1”,確定哪一根列線為“ 0”狀態(tài),當某個鍵的行線和列線都為“ 0”狀態(tài)時,表明該鍵按下。 AD 采集模塊設計 ADC0809 芯片簡介 ADC0809 具有 8 個通道的模擬輸入線,在程序控制下對任 意通道進行 A/D 轉換。 11 模擬輸入部分有 8 路多路開關,可由 3 位地址輸入 ADDA、 ADDB、 ADDC 的不同組合來選擇, ALE 為地址鎖存信號,高電平有效,鎖存這三條地址輸入信號。主體部分是采用逐次逼近式的 A/D 轉換電路,由 CLK 控制的內部電路的工作 ,START為啟動命令,高電平有效,啟動 ADC0809 內部的 A/D 轉換,當轉換完成,輸出信號 EOC 有效, OE 為輸出允許信號,高電平有效,打開輸出三態(tài)緩沖器 ,把轉換后的結果送 DB。 圖 ADC0809 管腳圖 轉換數(shù)據(jù)的傳送 A/D 轉換后得到的數(shù)據(jù)應及時傳送給單 片機進行處理。數(shù)據(jù)傳送的關鍵問題是如何確認 A/D 轉換的完成,因為只有確認完成后,才能進行傳送。 引腳功能說明 IN0~ IN7: 8 路模擬量輸入端。 21~ 28: 8 位數(shù)字量輸出端。 ADDA、 ADDB、 ADDC: 3 位地址輸入線,選通 8 路模擬輸入中的一路 。 ALE:地址鎖存允許信號,輸入,高電平有效。 START: A/D 轉換啟動脈沖輸入端,輸入一個正脈沖(至少 100ns 寬)使其啟動(脈沖上升沿使 0809 復位,下降沿啟動 A/D 轉換)。 EOC: A/D 轉換結束信 號,輸出,當 A/D 轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。 OE:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當 A/D 轉換結束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 CLK:時鐘脈沖輸入端。要求時鐘頻率不高于 640KHZ。 REF( +)、 REF( ):基準電壓。 12 Vcc:電源,單一電源: +5V。 GND:地。 時鐘模塊的設計 13 圖 31 系統(tǒng)流程圖 原理 軟件任務分析和硬件電路設計結合進行,哪些功能 由硬件完成,哪些任務由軟件完成,在硬件電路設計基本定型后,也就基本上決定下來了。 軟件任務分析環(huán)節(jié)是為軟件設計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實質性的功能,如測量,計算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調各執(zhí)行模塊和操作者的關系,在系統(tǒng)軟件中充當組織調度角色的軟件。 14 ADC0809 多路電壓檢測函數(shù) 程序代碼如下: void delayms(unsigned int z) //延時函數(shù), z為多少就延時多少毫秒 { unsigned int x,y。 for(x = z。 x 0 。 x) for(y = 110 。 y 0 。 y)。 } void dep_key_scan(void) //獨立鍵盤掃描子函數(shù) { // P1 |= 0x18。 //每次掃描前,先將接鍵盤的引腳口拉高 if(key_1 == 0) //如果檢測到有鍵按下 { delayms(10)。 //延時 10ms if(key_1 == 0) //再次判斷是否確實按下按鍵,進行消抖操作。 { flag = ~flag。 } } if(key_2 == 0) //同上,判斷第二個按鍵情況 { delayms(10)。 if(key_2 == 0) { ax++。 } } } void main(void) { LCDInit()。 LCDDispString(2,1,CH voltage)。 LCDDispString(9,2,V)。 TMOD=0x01。 TH0=(6553650000)/256。 TL0=(6553650000)%256。 TR0=1。 ET0=1。 15 EA=1。 while(1) { if(ax==8) ax=0。 sel_Ax(ax)。 //選擇通道 ST=0。 ST=1。 ST=0。 while(EOC==0)。 OE=1。 getdata=P2。 //獲取電壓值 cov2V(getdata,ax)。 divite_num(ax)。 OE=0。 dep_key_scan()。 if(count_time = 40) { if(flag == 0 )//輪換顯示 { LCDDispNum(4,1,ax+1)。 LCDDispString(5,2,dispbuf)。 ax++。 } if(flag == 1) { LCDDispNum(4,1,ax+1)。 LCDDispString(5,2,dispbuf)。 } count_time = 0。 } } } void t0(void) interrupt 1 using 0 { TH0=(6553650000)/256。 16 TL0=(6553650000)%256。 count_time ++。 LCD1602 程序代碼如下 void DelayN40us(unsigned int n)延時函數(shù),延時 40us 的整數(shù)倍,傳入值 n代表延時,時間到 n *40us,不能實現(xiàn)準確延時,只能實現(xiàn)大概時間的延時,利用的是指令 實現(xiàn)延時功能。 液 晶 初 始 化 函 數(shù) , 對 LCD1602 進行 初 始 化 操 作 , 在 每 一 次 實 用 液 晶 前 必 須 用 到的,外部可調用函數(shù)。 設置 8 位格式, 2 行, 5x7* 整體顯示,關光標,不閃爍 設定輸入方式,增量不移位 清除屏幕顯示 清屏延時 寫命令函數(shù),對 LCD1602 內部寄存器進 行操作。
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1