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

正文內(nèi)容

基于單片機的數(shù)字電壓表的設(shè)計畢業(yè)論文設(shè)計(編輯修改稿)

2025-04-03 10:22 本頁面
 

【文章內(nèi)容簡介】 輪流顯示過程中,每位元數(shù)碼管的點亮?xí)r間為 1~ 2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),雖然實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,達到和靜態(tài)顯示同樣的顯示效果。動態(tài)顯示能夠節(jié)省大量的 I/O 口,而且功耗更低。 設(shè)計的數(shù)字電壓表要求可以同時測量 8路 05V 的直流電壓,測量最大分辨率為,并要求最高位用于顯示測量電壓的地址范圍,所以要求數(shù)碼管至少采用 4位顯示的數(shù)碼管。 圖 4 位共陽數(shù)碼管內(nèi)部引腳分布圖 畢業(yè)設(shè)計 10 為了方便和 減少設(shè)計的復(fù)雜度,設(shè)計采用的是 4位共陽數(shù)碼管 來 進行測量結(jié)果的顯示,數(shù)碼管的內(nèi)部結(jié)構(gòu)及引腳分布如圖 所示。數(shù)碼管 每 位 的 8 個 LED 陽極連接到一個公共端口 COM,分別為 COM1, COM2,COM3,COM4, 把每位相同位置 LED 段的陰極連接到一個公共端口,分別為 a,b,c,d,e,f,g,dp 口。 如果采用靜態(tài)顯示方式,則需要 4 8=32 個 I/O 口, 應(yīng)用時必須增加擴展芯片和較多驅(qū)動器進行驅(qū)動,這將很大程度上增加了硬體電路設(shè)計的復(fù)雜性 。若采用靜態(tài)顯示的方式,只需要 12 個 I/O,其中 8 個 I/O 用于連接每位數(shù)碼管 的 8 位顯示段,作為數(shù)據(jù) 端口;另外 4 個 I/O 口用于連接每位數(shù)碼管顯示段的公共端,作為掃描端口,控制數(shù)字顯示。數(shù)碼顯示電路如圖 。 圖 數(shù)碼管動態(tài)顯示電路 四、系統(tǒng)的程序設(shè)計 (一)軟件設(shè)計思想框圖 系統(tǒng)上電時,初始化程序主要用來執(zhí)行 70H77H 內(nèi)存單元清 0和 P2 口置 0等準備工作。 初始化后,單片機片選 A/D 轉(zhuǎn)換器,然后發(fā)出信號啟動 A/D 轉(zhuǎn)換,此時單片機內(nèi)部定時器 /計數(shù)器也開始工作,不斷掃描 A/D 轉(zhuǎn)換器結(jié)束端口有無結(jié)束信號。如果存在,則啟動信號采集,對 A/D轉(zhuǎn)換器數(shù)據(jù)輸出口輸出的數(shù)值進行 存儲,定時器 /計數(shù)器重新置零,準備下一次的采集,如果沒有,則繼續(xù)掃描等待。掃描結(jié)束后,進行數(shù)據(jù)處理,同時進行下一次掃描。數(shù)據(jù)處理完之后,利用查表法將電壓數(shù)值送到數(shù)碼管顯示器進行顯示。 在剛上電時,系統(tǒng)默認為循環(huán)顯示 8 個通道的電壓值狀態(tài)。當進行一次測量后,將顯示每一通道的 A/D轉(zhuǎn)換值,每個通道的數(shù)據(jù)顯示時間在 1s 左右。主程序在調(diào)用顯示 畢業(yè)設(shè)計 11 子程序與測量子程序之間循環(huán)。程序的流程框圖如圖 。 圖 主程序框圖 (二)子程序原理和框圖 顯示子程序采用動態(tài)掃描法實現(xiàn) 4位 7段數(shù)碼管的數(shù)值顯示。測量所得的 A/D 轉(zhuǎn)換數(shù)據(jù)放在 70H77H 內(nèi)存單元中,測量數(shù)據(jù)在顯示時須經(jīng)過轉(zhuǎn)換成為十進制 BCD 碼放在78H7BH 單元中,其中 7BH 存放通道標志數(shù)。寄存器 R3 用作 8路循環(huán)控制, R0 用作顯示數(shù)據(jù)地址指針。顯示子程序流程圖如圖 所示。 圖 顯示子程序流程圖 顯示掃描子 程序分析如下 void scan() 初始化 調(diào)用 A/D 轉(zhuǎn)換測量子程序 調(diào)用顯示子程序 開 始 結(jié) 束 畢業(yè)設(shè)計 12 { uchar k,n。 int h。 dis[3]=0x01。 //通道初值為 1 for(n=0。n8。n++) //每次顯示 8個數(shù)據(jù) { dis[2]=ad_data[n]/51。 //測得值轉(zhuǎn)換為 3位 BCD 碼,最大為 dis[4]=ad_data[n]%51。 //余數(shù)暫存 dis[4]=dis[4]*10。 //計算小數(shù)第一位 dis[1]=dis[4]/51。 dis[4]=dis[4]%51。 dis[4]=dis[4]*10。 //計算小數(shù)第二位 dis[0]=dis[4]/51。 if(dis[2]=4amp。amp。dis[1]6amp。amp。dis[0]=0) A=1。 else A=0。 for(h=0。h500。h++) //每個通道顯示時間控制約為一秒 { for(k=0。k4。k++) //4 位 LED 掃描控制 { Disdata=dis_7[dis[k]]。 if(k==2) { DISX=0。 } P3=scan_con[k]。 // 控制數(shù)碼管輸出電平的高低 delaylms(1)。 P3=0xff。 } } dis[3]++。 //通道值加 1 } } 2. A/D 轉(zhuǎn)換測量子程序 畢業(yè)設(shè)計 13 A/D 轉(zhuǎn)換測量子程序用來控制對 ADC0809 的 8 路模擬輸入電壓的 A/D 轉(zhuǎn)換,并將對應(yīng)的數(shù)值移入單片機 70H77H內(nèi)存單元。 A/D 轉(zhuǎn)換測量子程序流程圖如圖 所示。 圖 A/D 轉(zhuǎn)換測量子程序流程圖 A/D 轉(zhuǎn)換子程序分析如下: void test() { uchar m。 uchar s=0x00。 ad_con=s。 for(m=0。m8。m++) { ALE=1。 _nop_()。 _nop_()。 ALE=0。 //轉(zhuǎn)換通道地址鎖存 START=1。 _nop_()。 _nop_()。 START=0。 //開始轉(zhuǎn)換命令 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //延時 4US 畢業(yè)設(shè)計 14 while(EOC==0)。 //等待 轉(zhuǎn)換結(jié)束 OE=1。 ad_data[m]=addata。 OE=0。 s++。 ad_con=s。 //取 A/D 值,地址加 1 } ad_con=0x00。 //控制復(fù)位 } 五、調(diào)試及性能分析 (一)測量與調(diào)試 采用 Keil 和 Proteus 軟件進行程序編譯及電路仿真調(diào)試,利用 Protel 軟件進行硬件電路板的制作設(shè)計,通過 STC_ISP 軟件將 Keil 程序編譯時生成的 hex 文件燒錄到單片機內(nèi),組裝好電路后進行硬件和軟件的綜合 調(diào)試。調(diào)試無誤后,進行測量,將測量電壓與標準電壓表的測量結(jié)果進行對比分析。測量對比分析的結(jié)果如表 51 所示。 表 51 數(shù)字電壓表與“標準”數(shù)字電壓表測量對比 標準電壓值 /V 數(shù)字電壓表測得值 /V 絕對誤差 /V + + + + + + + 注:表中標準電壓值采用 UT30B 數(shù)字萬用表測得。 (二)性能分析 由于單片機為 8位處理器,當輸入電壓為 , ADC0809輸出數(shù)據(jù)值為 255( FFH) ,因此單片機最高的數(shù)值分辨率為 ( 5/255)。這就決定了該電壓表的最高分辨率(精度)只能達到 V,測試時電壓一般以 的幅度變化。如果要獲得更高精度的測量要求,則應(yīng)采用更高位的 A/D 轉(zhuǎn)換器件。 從表 51中可以看出,設(shè)計的數(shù)字電壓表與 UT30B 數(shù)字萬用表測得的絕對誤差均在 以內(nèi),這與采用 8位 A/D 轉(zhuǎn)換器所能 到達的理論誤差精度相一致,在一般的應(yīng)用 畢業(yè)設(shè)計 15 場合可以滿足使用要求。 另外,設(shè)計的數(shù)字電壓表測得的值基本上比用 UT30B 數(shù)字萬用表測得的標準電壓值偏大 V。這可以通過校正 ADC0809 的基準電壓來解決。因為該電壓表設(shè)計時的直接供電電源也同時作為 ADC0809 的基準電壓,所以電壓有可能有偏差。另外,還可以根據(jù)測量誤差,用軟件編程方式校正測量值。 當要測量大于 5V 的直流電壓時,可在測量信號的輸入口使用分壓電阻,通過計算間接得到測量結(jié)果。也可以在程序中將計算程序的除數(shù)進行調(diào)整。但是隨著量程增大,測量的 精度會降低。 畢業(yè)設(shè)計 16 總結(jié) 通過本次畢業(yè)設(shè)計,使我從實踐中學(xué)到了更多的專業(yè)知識和加強了自身的能力培養(yǎng),鞏固了我所學(xué)習(xí)的理論知識,使得我對單片機知識及應(yīng)用有了更為深層的了解。此外,更重要的是,鍛煉了實踐工作的能力,提高工程素養(yǎng),學(xué)會將理論與實踐相結(jié)合,用理論指導(dǎo)實踐,通過實踐來驗證和加深對理論的理解,使得自己在理論和實踐上有新的認識和提高,使綜合應(yīng)用能力和分析解決問題的能力得到提高。這些都是自己努力贏得的寶貴財富,將會為以后的學(xué)習(xí)和工作打下了更加堅實的基礎(chǔ)。 畢業(yè)設(shè)計 17 附錄一 數(shù)字電壓表原理圖 畢業(yè)設(shè)計 18 附錄二 程序清單 include include //延時函數(shù)用 define ad_con P2 //A/D 控制口 define addata P0 //A/D 數(shù)據(jù)記入讀入口 define Disdata P1 //顯示數(shù)據(jù)段碼輸出口 define uchar unsigned char define uint unsigned int sbit ALE=P2^3。 //鎖存地址控制位 sbit START=P2^4。 //啟動一次轉(zhuǎn)換位 sbit OE=P2^5。 //0809 輸出數(shù)據(jù) 控制位 sbit EOC=P3^7。 //轉(zhuǎn)換結(jié)束標志位 sbit DISX=Disdata^7。 //LED 小數(shù)點 sbit A=P2^7。 sbit BO=P3^5。 sbit CO=P3^6。 uchar code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}。 //共陽 7段 LED段碼表 uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}。 //4 位列掃描控制字 //11111110 //11111101 //11111011 //11110111 uchar data ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}。 //定義 8個數(shù)據(jù)內(nèi)存單元 uint data dis[5]={0x00,0x00,0x00,0x00,0x00}。 //定義 4個顯示數(shù)據(jù)單元和 1 個數(shù)據(jù)存儲單元 //*****1ms 延時子函數(shù) *****// void delaylms(uint t) //t=1 { uint i,j。 for(i=0。it。i++) for(j=0。j120。j++) 畢業(yè)設(shè)計 19 。 } //*****顯示掃描子函數(shù) *****// voi
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1