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

正文內(nèi)容

畢業(yè)設(shè)計-基于單片機的程控放大器設(shè)計(編輯修改稿)

2025-02-12 22:47 本頁面
 

【文章內(nèi)容簡介】 電( +5V~ +15V); ? 低功耗, 20mW。 DAC0832結(jié)構(gòu)框圖及引腳說明 17 圖 210 DAC0832的結(jié)構(gòu)框圖和引腳 (2)DAC0832工作過程 ① CPU執(zhí)行輸出指令,輸出 8位數(shù)據(jù)給 DAC0832; ② 在 CPU執(zhí)行輸出指令的同時,使 ILE、 /CS、 /WR1三個控制信號端都有效, 8位數(shù)據(jù)鎖存在 8位輸入寄存器中; ③ 當(dāng) /WR /XFER兩個控制信號端都有效時, 8位數(shù)據(jù)再次被鎖存到 8位 DAC寄存器 ,這時 8位 D/A 轉(zhuǎn)換器開始工作, 8位數(shù)據(jù)轉(zhuǎn)換為相對應(yīng)的模擬電流,從 Iout1和 Iout2輸出。 (3)DAC0832的工作方式 : 雙緩沖方式 ; 單緩沖方式 ; 直通方式 (4)DAC0832接口電路 圖 211 18 第三章 單片機軟件設(shè)計 主程序和子程序都存放在 AT89S52 單片機中。 該程序的主要功能是 : 開機以后負責(zé)查鍵,即做鍵盤掃描及顯示工作,然后根據(jù)用戶所按的鍵轉(zhuǎn)到相應(yīng)的子程序進行處理,利用程序控制 D/A電阻網(wǎng)絡(luò)中阻值的變化 ,并利用 LM324N 運算放大器來將其 輸出 轉(zhuǎn)換成電壓形式,以此來輸出放大或者衰減后的正弦波 , 同時在四位數(shù)碼管中顯示出所放大的倍數(shù)。 控制程序流程圖如圖 31所示 . 初 始 化按 下 獨 立鍵 盤 的 位 置按 下 獨 立鍵 盤 的 位 置撥 碼鍵 盤復(fù) 位鍵 盤步 進 以 0 . 4倍 放 大峰 值 檢 測電 路顯 示 放 大 倍 數(shù)波 形 輸 出A / D 轉(zhuǎn) 換自 動 增 益 部 分 圖 31 波形放大部分程序流程圖 本系統(tǒng)程序代碼如下。 1. 函數(shù)聲明及變量定義 為方便程序的編寫,把部分常用的變量進行偽定義,把實現(xiàn)一定功能的程序編寫為一個函數(shù),有利 于程序的編寫。 include include 19 sbit dacs=P1^0。 //端口定義 sbit dawr=P1^1。 //芯片 sbit lcdrs=P1^5。 //定義寄存器 sbit lcdrw=P1^6。 //定義是否讀寫 sbit lcde=P1^7。 //定義使能端 sbit lcd_flag=P0^7。 //定義是否忙標(biāo)志 void disp(void)。 //以下為函數(shù)聲明 void lcd_delay(unsigned int )。 void lcd_deal(unsigned char ,unsigned char ,unsigned char )。 void _1602(void)。 void lcd_init(void)。 void lcd_moveto(unsigned char ,unsigned char )。 void lcd_putchar(unsigned char )。 unsigned char code shuzi[]={0,1,2,3,4,5,6,7,8,9}。 unsigned char code lcd_Assic[12]={ //ASICII 碼 0x30,0x31,0x32,0x33,0x34,0x35, 0x36,0x37,0x38,0x39,0x56,0x2e}。 unsigned char dis[2][16]={{ //液晶初始化數(shù)據(jù) 0x20,0x20,0x20,0x20, //0x20輸出是空即空格 0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20}, {0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20}}。 unsigned char val=0。 //全局變量 2.主程序 本系統(tǒng)主程初始化并啟動 DAC0832 芯片后,進入按鍵檢測程序。當(dāng)加一鍵按下時, val變量加一。顯示屏第一行數(shù)字顯示 val的大小,第二行適時顯 示轉(zhuǎn)化后的電壓值。當(dāng)加一鍵按下超過一秒鐘后, val 以 500ms的速度增長,按鍵釋放后停止。減一鍵類似。詳細主程序見附錄 1。 3.顯示子程序 此程序為液晶顯示子程序,首先將要顯示的變量 val 的百位、十位、個位分離。然后儲存到液晶顯示緩存區(qū),最后經(jīng) _1602()函數(shù)把緩存的數(shù)據(jù)送到顯示屏上顯示出來。 /*********************顯示函數(shù)程序 ********************/ void disp(void) { P2=val。 lcd_deal(0,0,val/100)。 //分離百位 lcd_deal(0,1,val%100/10)。 //分離十位 lcd_deal(0,2,val%10)。 //分離個位 lcd_deal(1,2,(unsigned char)((float)val/256*5)%10)。 20 lcd_deal(1,3,11)。 //顯示符號“ .” lcd_deal(1,4,(unsigned char)((float)val/256*50)%10)。 lcd_deal(1,5,(unsigned int)((float)val/256*500)%10)。 lcd_deal(1,6,10)。 //顯示字符“ V” _1602()。 //輸出到 1602 } 4.延時程序 此程序為液晶顯示函數(shù)和主程序按鍵去抖延時提供毫秒級延時函數(shù)。 /*******************延時函數(shù)程序 ******************/ void lcd_delay(unsigned int k) { //延時函數(shù) unsigned int i0。 unsigned char i,j。 for(i0=0。i0k。i0++) for(i=5。i0。i) for(j=97。j0。j)。 } 5. LCD1602液晶輸出函數(shù) 此函數(shù)主要完成將液晶顯示輸出緩沖區(qū)的數(shù)據(jù)輸出到液晶顯示屏上。 /*********************液晶輸出函數(shù)程序 ********************/ void _1602(void) { unsigned char *p。 lcd_init()。 //初始化 lcd_delay(10)。 lcd_moveto(0,0)。 //指針定位到第一行第一列 for(p=dis[0]。pdis[0]+16。p++) //依次輸出到第一行 { lcd_putchar(*p)。 } lcd_moveto(1,0)。 //指針定位到第二行第一列 for(p=dis[1]。pdis[1]+16。p++) //依次輸出到第二行 { lcd_putchar(*p)。 } } 6.?dāng)?shù)據(jù)轉(zhuǎn)化函數(shù) 此函數(shù)的功能為,將要顯示的數(shù)據(jù)經(jīng)查表后得到的 ASSICII 碼傳送到液晶顯示緩存區(qū)內(nèi),以備顯示函數(shù)調(diào)用直接顯示出正確的字符。 /******************ASSICII 碼轉(zhuǎn)化函數(shù)程序 ***************/ void lcd_deal(unsigned char i,unsigned char j,unsigned char dat) { 21 dis[i][j]=lcd_Assic[dat]。 } 7.檢測 LCD忙函數(shù) 此函數(shù)主要功能 為檢測 LCD1602液晶忙標(biāo)志函數(shù),當(dāng)要向 LCD1602 內(nèi)傳輸數(shù)據(jù)時,需要先進行忙標(biāo)志檢測。當(dāng)返回函數(shù)為忙時,稍后寫數(shù)據(jù)或者命令,如遇返回為不忙就可直接向 LCD1602內(nèi)寫命令或者數(shù)據(jù)。 /******************檢測忙標(biāo)志函數(shù)程序 *****************/ bit lcd_busy() //判斷是否忙碌 RS= Low, RW= High, E= High:讀狀態(tài) { bit flag=0。 lcdrs=0。 //寄存器為 Low lcdrw=1。 // 是 否 讀 寫 為High lcde=1。 //使能端為 High if (lcd_flag==1) flag=1。 else flag=0。 lcde=0。 return flag。 //返回標(biāo)志判斷是否 LCD忙碌 } 8.寫命令函數(shù) 本函數(shù) 為向 LCD1602 內(nèi)寫命令函數(shù)。 /*******************寫命令函數(shù)程序 *****************/ void lcd_putmand(unsigned char mand) { //寫指令 RS=Low,RW=Low,E=High:寫指令 while ( lcd_busy())。 //判斷是否忙碌 lcdrs=0。 lcdrw=0。 lcde=0。 P0=mand。 lcde=1。 lcde=0。 } 9.輸出一個字符程序 此函數(shù)的功能為輸出一個字符到液晶屏上。通過本函數(shù)可以向 LCD1602 內(nèi)寫數(shù)據(jù),直接顯示到 LCD1602 液晶屏上。 /*********************輸出字符函數(shù)程序 ********************/ void lcd_putchar(unsigned char putchar) { //寫數(shù)據(jù) RS=High,RW=Low,E=High:寫數(shù)據(jù) 22 while(lcd_busy())。 //判斷是否忙碌 lcdrs=1。 lcdrw=0。 lcde=0。 P0=putchar。 lcde=1。 lcde=0。 } 10. LCD指針程序 此函數(shù)為定位 LCD 顯示位置的指針,如要 LCD的第二行中第四列上顯示字符 ,需要將指針設(shè)置為第二行第四列,如 lcd_moveto(2,4)。 /******************指針定位函數(shù)程序 ***************/ void lcd_moveto(unsigned char x,unsigned char y) { //顯示字符的位置:第 x 行 y列( X=1或 2,Y=0~15) if (x==0) lcd_putmand(0x80|y)。 //第一行,并初始化從第 y1個字符開始顯示 if (x==1) lcd_putmand(0xc0|y)。 //第二行,并 ............ } 11. LCD初始化函數(shù)程序 此函數(shù)功能為液晶屏的設(shè)置及初始化。 /*****************LCD 初始化函數(shù)程序 **************/ void lcd_init(void) { lcd_putmand(0x38)。 lcd_delay(1)。 //LCD為 2 行, 5 7字 lcd_putmand(0x0c)。 //顯數(shù)據(jù),關(guān)閉光標(biāo)比較好 lcd_delay(1)。 lcd_putmand(0x06)。 lcd_delay(1)。 //每次右移一字符 } 23 第四章 仿真分析 經(jīng)實驗驗證,以上介紹的由 DACO832構(gòu)成的程控放大器,具有良好的控制特性,線性度好,頻率響應(yīng)好,被控信號的最高工作頻率可達到達 200kHz以上,沒有零點遷移問題,其增益控制級數(shù)為 256級, 比較適中,便于與單片機接口,價格便宜。比較適合于一般的數(shù)字控制的函數(shù)發(fā)生器、音響、自動化儀表、數(shù)控電壓源、數(shù)控電流源等電路中。具有較好的推廣價值
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1