版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
?單片機(jī)應(yīng)用技術(shù)?工程9調(diào)壓電路設(shè)計(jì)瀘州職業(yè)技術(shù)學(xué)院機(jī)電工程系?單片機(jī)應(yīng)用技術(shù)?精品課程組本講主要內(nèi)容4相關(guān)知識(shí)1教學(xué)目標(biāo)2工作任務(wù)3工程實(shí)踐6工程考核1、終極目標(biāo):制作一個(gè)基于單片機(jī)控制的調(diào)壓電路系統(tǒng)。2、促成目標(biāo):(1)了解D/A轉(zhuǎn)換芯片的根本工作原理及特性;(2)了解D/A轉(zhuǎn)換器的技術(shù)指標(biāo);(3)掌握常用D/A芯片與單片機(jī)的接口方法;(3)掌握D/A轉(zhuǎn)換程序設(shè)計(jì)方法;【教學(xué)目標(biāo)】采用8位的D/A轉(zhuǎn)換芯片DAC0832來完成數(shù)模轉(zhuǎn)換過程,DAC0832是電流輸出型D/A轉(zhuǎn)換芯片,因此,后面接有集成運(yùn)放LM358來完成電流到電壓的轉(zhuǎn)換。其中的數(shù)字信號(hào)的輸入從“D0-D7〞端口輸入,控制DAC0832工作的控制信號(hào)由“WR-CS〞端口輸入,模擬量的輸出從“DA輸出〞端口輸出,由于LM358工作在雙電源條件下,因此要給LM358參加±12V電壓,從+12,-12V的電源的由MAX232來產(chǎn)生。通過按鍵K1、K2實(shí)現(xiàn)DAC值的加減,并且在LCD1602上顯示出來。DAC轉(zhuǎn)換的模擬電壓值從DA輸出座子輸出(用萬用表測量)?!竟ぷ魅蝿?wù)】【活動(dòng)一】總體設(shè)計(jì)
本系統(tǒng)功能由硬件和軟件兩大部份協(xié)調(diào)完成,硬件局部主要完成信息的顯示;軟件主要完成信號(hào)的處理及控制功能等。本系統(tǒng)的硬件采用模塊化設(shè)計(jì),以AT89S52單片機(jī)為核心,與LCD顯示電路、鍵盤電路、D/A轉(zhuǎn)換電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個(gè)模塊:AT89S52主控模塊、LCD顯示模塊、鍵盤輸入模塊、D/A模塊等。其中AT89S52主要完成外圍硬件的控制以及一些運(yùn)算功能;LCD顯示模塊完成字符、數(shù)字的顯示功能;鍵盤電路主要實(shí)現(xiàn)DAC值的加減;D/A模塊由D/A芯片和放大電路組成,DAC轉(zhuǎn)換的模擬電壓值從DA輸出座子輸出,可用萬用表測量?!竟こ虒?shí)踐】系統(tǒng)組成方框圖如下圖。
單片機(jī)LCD顯示電路復(fù)位電路時(shí)鐘電路電源電路D/A轉(zhuǎn)換電路鍵盤電路串口通信電路圖9.1D/A轉(zhuǎn)換控制系統(tǒng)組成方框圖【工程實(shí)踐】應(yīng)用軟件采用模塊化設(shè)計(jì)方法。該系統(tǒng)軟件主要由主程序、定時(shí)器T0中斷效勞子程序、D/A轉(zhuǎn)換子程序、計(jì)算D/A轉(zhuǎn)換值子程序、按鍵掃描子程序、串口中斷效勞子程序、LCD顯示子程序、LCD顯示A/D轉(zhuǎn)換值子程序等模塊組成,系統(tǒng)軟件結(jié)構(gòu)框圖如下圖。LCD顯示子程序定時(shí)器T0中斷服務(wù)子程序主程序計(jì)算D/A轉(zhuǎn)換值子程序D/A轉(zhuǎn)換子程序LCD顯示D/A轉(zhuǎn)換值子程序按鍵掃描子程序串口中斷服務(wù)子程序圖9.2系統(tǒng)軟件結(jié)構(gòu)框圖【工程實(shí)踐】1.主控模塊設(shè)計(jì)本工程采用ATMEL公司生產(chǎn)的AT89S52單片機(jī),主控模塊的具體設(shè)計(jì)參見工程1。2.LCD顯示模塊設(shè)計(jì)LCD顯示模塊選用1602字符型LCD模塊,具體設(shè)計(jì)請參見工程6。3.鍵盤輸入模塊設(shè)計(jì)鍵盤輸入使用獨(dú)立式按鍵K1、K2,具體設(shè)計(jì)請參見工程3。4.串口通信電路模塊設(shè)計(jì)串口通信電路模塊的具體設(shè)計(jì)請參見工程7。5.D/A轉(zhuǎn)換模塊設(shè)計(jì)D/A模塊由D/A芯片和放大電路組成,通過按鍵K1、K2實(shí)現(xiàn)DAC值的加減,范圍在0~255之間,并且在LCD1602上顯示出來。DAC轉(zhuǎn)換的模擬電壓值從DA輸出座子輸出,可用萬用表測量?!竟こ虒?shí)踐】【活動(dòng)二】硬件設(shè)計(jì)在本工程中,D/A芯片選用DAC0832芯片來完成數(shù)模轉(zhuǎn)換過程,該芯片的詳細(xì)介紹請參考本工程的“相關(guān)知識(shí)〞局部。DAC0832是電流輸出型D/A轉(zhuǎn)換芯片,因此,后面接有集成運(yùn)放LM358來完成電流到電壓的轉(zhuǎn)換。其中的數(shù)字信號(hào)的輸入從“D0-D7〞端口輸入,控制DAC0832工作的控制信號(hào)由“WR-CS〞端口輸入,模擬量的輸出從“DA輸出〞端口輸出,由于LM358工作在雙電源條件下,因此要給LM358參加±12V電壓,從+12,-12V的電源的由MAX232來產(chǎn)生。D/A模塊與單片機(jī)的接口電路如下圖?!竟こ虒?shí)踐】圖9.3D/A模塊與單片機(jī)的接口電路原理圖【工程實(shí)踐】1.算法設(shè)計(jì)由PC機(jī)發(fā)送到單片機(jī)串口的值作為數(shù)字量初始值,通過按鍵K1、K2實(shí)現(xiàn)DAC值的加減,按鍵K1實(shí)現(xiàn)數(shù)字量初始值加1,按鍵K2實(shí)現(xiàn)數(shù)字量初始值減1,使數(shù)字量在20~200的范圍內(nèi)變化,從而模擬數(shù)字信號(hào)的輸入。根據(jù)D/A轉(zhuǎn)換芯片DAC0832的工作時(shí)序,20ms進(jìn)行一次D/A轉(zhuǎn)換,可以利用定時(shí)器T0定時(shí),根本定時(shí)時(shí)間為5ms,控制軟計(jì)數(shù)器的累計(jì)次數(shù)為4次,20ms〔4*5ms〕定時(shí)到時(shí),產(chǎn)生定時(shí)器T0中斷,在定時(shí)器T0中斷效勞子程序中調(diào)用DA轉(zhuǎn)換子程序進(jìn)行D/A采樣轉(zhuǎn)換,然后調(diào)用計(jì)算D/A轉(zhuǎn)換值子程序把DA轉(zhuǎn)換值轉(zhuǎn)換成相應(yīng)的ASCII碼,最后通過LCD顯示D/A轉(zhuǎn)換值子程序把DAC轉(zhuǎn)換的模擬電壓值〔0V~5V〕顯示在液晶LCD1602上,并從DA輸出座子輸出DAC轉(zhuǎn)換的模擬電壓,可用萬用表測量?!竟こ虒?shí)踐】【活動(dòng)三】軟件設(shè)計(jì)2.?dāng)?shù)據(jù)結(jié)構(gòu)設(shè)計(jì)1602LCD使能信號(hào)E定義為P2口線的;1602LCD讀/寫選擇信號(hào)R/W定義為P2口線的,0為寫數(shù)據(jù)信號(hào),1為讀數(shù)據(jù)信號(hào);1602LCD數(shù)據(jù)/命令選擇信號(hào)RS定義為P2口線的,0為命令信號(hào);1為數(shù)據(jù)信號(hào);1602LCD的8位雙向數(shù)據(jù)線DB7~DB0信號(hào)LCDPORT定義為P0口線;1602LCD寫命令入口參數(shù)CMD_BYTE定義為片內(nèi)數(shù)據(jù)存儲(chǔ)器的2EH單元;1602LCD寫顯示數(shù)據(jù)入口參數(shù)DAT_BYTE定義為片內(nèi)數(shù)據(jù)存儲(chǔ)器的2FH單元;D/A芯片DAC0832的片選信號(hào)DAC_CS定義為P3口線的;D/A芯片DAC0832的寫信號(hào)DAC_WR定義為P3口線的;【工程實(shí)踐】當(dāng)前的DA變量DABL定義為片內(nèi)數(shù)據(jù)存儲(chǔ)器的30H單元;輸出值顯示的百位LEDBAI定義為片內(nèi)數(shù)據(jù)存儲(chǔ)器的31H單元;輸出值顯示的十位LEDSHI定義為片內(nèi)數(shù)據(jù)存儲(chǔ)器的32H單元;輸出值顯示的個(gè)位LEDGE定義為片內(nèi)數(shù)據(jù)存儲(chǔ)器的33H單元;3.程序設(shè)計(jì)(1)主程序設(shè)計(jì)主程序主要完成硬件初始化、子程序調(diào)用等功能。①初始化首先調(diào)用LCD子程序,設(shè)置LCD的DDRAM地址,在LCD上顯示字符數(shù)據(jù)“DAC:〞。將DA轉(zhuǎn)換值DABL設(shè)置為初值20,設(shè)置定時(shí)軟計(jì)數(shù)器KEYTIME初值為4。設(shè)置串口成功接收數(shù)據(jù)標(biāo)志位RECOKBIT為1。②定時(shí)初值計(jì)算定時(shí)器T0定時(shí)時(shí)間為5ms,系統(tǒng)所用的石英晶體振蕩頻率為,因此,1個(gè)機(jī)器周期=1/石英頻率*12,即為微秒,定時(shí)器工作方式設(shè)置為方式1,計(jì)算初值如下:【工程實(shí)踐】x=216-t*fosc/12=65536-5*10-3*11.0592*106/12=60928=EE00H所以TH0=0EEH,TL0=00H③定時(shí)器與串口設(shè)置設(shè)置存放器SCON的SM0、SM1位,定義串口工作方式,選擇波特率發(fā)生器為定時(shí)器T1;設(shè)定定時(shí)器T1工作方式為方式2;設(shè)置波特率參數(shù)為9600bps;允許串行中斷及總中斷;允許串口接收數(shù)據(jù),定義REN=1;啟動(dòng)定時(shí)/計(jì)數(shù)器T1工作,定義TR1=1。設(shè)定定時(shí)器T0的工作方式為方式1;啟動(dòng)定時(shí)器T0,即TR0=1,開放定時(shí)器T0中斷及總中斷。綜述,設(shè)置TMOD=21H,IE=92H。④等待中斷定時(shí)器T0啟動(dòng)計(jì)時(shí)后,CPU等待定時(shí)中斷的到來。當(dāng)定時(shí)器T0定時(shí)5ms后,進(jìn)入定時(shí)器T0中斷效勞子程序?!竟こ虒?shí)踐】主程序設(shè)計(jì)流程圖如下圖?!竟こ虒?shí)踐】圖9.4主程序設(shè)計(jì)流程圖【工程實(shí)踐】(2)定時(shí)器T0中斷效勞子程序當(dāng)定時(shí)器T0定時(shí)5ms后,進(jìn)入定時(shí)器T0中斷效勞子程序。重裝定時(shí)器T0初值,即TH0=0EEH,TL0=00H。判斷軟計(jì)數(shù)器KEYTIME值是否為0,假設(shè)KEYTIME值不為0,說明20ms計(jì)時(shí)未到,這時(shí)中斷子程序返回主程序,繼續(xù)計(jì)時(shí);假設(shè)KEYTIME值為0,說明20ms計(jì)時(shí)已到,重置軟計(jì)數(shù)器KEYTIME初值為4,為下次定時(shí)做準(zhǔn)備。設(shè)置按鍵輸入口P1口的值為0DFH,調(diào)用按鍵掃描子程序。接著調(diào)用D/A轉(zhuǎn)換子程序進(jìn)行D/A轉(zhuǎn)換,得到DA轉(zhuǎn)值值DABL,然后換調(diào)用計(jì)算D/A轉(zhuǎn)換值子程序計(jì)算DA轉(zhuǎn)值DABL相應(yīng)的ASCII碼,再調(diào)用LCD顯示D/A轉(zhuǎn)換值子程序把數(shù)字量輸入值進(jìn)行轉(zhuǎn)換后的模擬量顯示在液晶LCD1602上。最后T0中斷子程序返回主程序進(jìn)行下一次DA轉(zhuǎn)換。【工程實(shí)踐】【工程實(shí)踐】圖9.5定時(shí)器T0中斷效勞子程序設(shè)計(jì)流程圖【工程實(shí)踐】(3)D/A轉(zhuǎn)換子程序模塊設(shè)計(jì)根據(jù)D/A轉(zhuǎn)換芯片DAC0832的工作時(shí)序,片選信號(hào)低電平有效。把芯片DAC0832片選信號(hào)置低電平,選中該芯片。把數(shù)字量D/A轉(zhuǎn)換值DABL送給P0口,準(zhǔn)備送入芯片DAC0832進(jìn)行轉(zhuǎn)換處理。芯片DAC0832寫信號(hào)置低電平后再過兩個(gè)時(shí)鐘周期至高電平,產(chǎn)生一個(gè)上升沿信號(hào),進(jìn)行數(shù)據(jù)轉(zhuǎn)換處理。模擬量DABL從Iout1、Iout2引腳輸出送到運(yùn)算放大器進(jìn)行處理,最后從DA輸出座子輸出,可用萬用表測量到輸出電壓。數(shù)據(jù)轉(zhuǎn)換完畢,把芯片DAC0832片選信號(hào)置高電平。子程序返回。D/A轉(zhuǎn)換子程序設(shè)計(jì)流程圖如下圖?!竟こ虒?shí)踐】芯片DAC0832片選信號(hào)置低電平,選中該芯片開始把D/A轉(zhuǎn)換值DABL送給P0口,準(zhǔn)備送入芯片DAC0832芯片DAC0832寫信號(hào)置低電平后再過兩個(gè)時(shí)鐘周期至高電平,產(chǎn)生一個(gè)上升沿信號(hào)子程序返回芯片DAC0832片選信號(hào)置高電平圖9.6D/A轉(zhuǎn)換值子程序設(shè)計(jì)流程圖【工程實(shí)踐】(4)計(jì)算D/A轉(zhuǎn)換值子程序要把DA轉(zhuǎn)換值DABL顯示在LCD上,需要把它轉(zhuǎn)換為相應(yīng)的ASCII碼。先把D/A轉(zhuǎn)換值A(chǔ)DBL送給累加器A,除以100,商即為百位計(jì)數(shù)單元值,該值加上30H,得到百位數(shù)的ASCII碼,將它送給LCD百位計(jì)數(shù)單元顯示值LEDBAI。將第一次除法運(yùn)算得到的余數(shù)送給累加器A,再除以10,商為十位計(jì)數(shù)單元值,該值加上30H,得到十位計(jì)數(shù)單元的ASCII碼,將它送給LCD十位計(jì)數(shù)單元顯示值LEDSHI。將第二次除法運(yùn)算得到的余數(shù)送給累加器A,為個(gè)位計(jì)數(shù)單元值,該值加上30H,得到個(gè)位計(jì)數(shù)單元的ASCII碼,將它送給LCD個(gè)位計(jì)數(shù)單元顯示值LEDGE。最后子程序返回。計(jì)算D/A轉(zhuǎn)換值子程序設(shè)計(jì)流程圖如下圖?!竟こ虒?shí)踐】把D/A轉(zhuǎn)換值DABL送給累加器A,除以100,商為百位計(jì)數(shù)單元值;加30H,得到百位數(shù)的ASCII碼;送給LCD百位計(jì)數(shù)單元顯示值LEDBAI開始子程序返回將第一次除法運(yùn)算的余數(shù)送給累加器A,再除以10,商為十位計(jì)數(shù)單元值;加30H,得到十位計(jì)數(shù)單元的ASCII碼;送給LCD十位計(jì)數(shù)單元顯示值LEDSHI將第二次除法運(yùn)算的余數(shù)送給累加器A,為個(gè)位計(jì)數(shù)單元值;加30H,得到個(gè)位計(jì)數(shù)單元的ASCII碼;送給LCD個(gè)位計(jì)數(shù)單元顯示值LEDGE圖9.7計(jì)算D/A轉(zhuǎn)換值子程序設(shè)計(jì)流程圖【工程實(shí)踐】(5)按鍵掃描子程序模塊設(shè)計(jì)通過按鍵K1、K2實(shí)現(xiàn)DAC值的加減。程序通過、的值來判斷是否有鍵按下。假設(shè)P1.0=0,說明K1鍵按下,使DAC值加1,但不能大于201,否那么使DAC值返回為20。假設(shè)P1.0=1,說明K2鍵按下,使DAC值減1,但不能小于19,否那么使DAC值返回為200。按鍵掃描子程序設(shè)計(jì)流程圖如下圖?!竟こ虒?shí)踐】【工程實(shí)踐】圖9.8按鍵掃描子程序設(shè)計(jì)流程圖【工程實(shí)踐】(6)串口中斷效勞子程序設(shè)計(jì)當(dāng)串口中斷標(biāo)志位RI為1時(shí),進(jìn)入串口接收數(shù)據(jù)中斷效勞子程序,開始接收數(shù)據(jù)。把串口中斷標(biāo)志位RI復(fù)位置0,把串口接收緩沖器SBUF中的數(shù)據(jù)寫入累加器A,再把累加器A的值傳給DA轉(zhuǎn)換值變量DABL作為數(shù)模轉(zhuǎn)換的初始值,同時(shí)設(shè)置串口成功接收數(shù)據(jù)標(biāo)志位RECOKBIT為1,說明串口成功接收數(shù)據(jù),最后中斷子程序返回。串口中斷效勞子程序設(shè)計(jì)流程圖如下圖。接收標(biāo)志位RI清零從PC機(jī)串口接收數(shù)據(jù),把接收緩沖器SBUF中的數(shù)據(jù)寫到單片機(jī)的累加器A,再送給D/A變量單元DABL設(shè)置串口成功接收數(shù)據(jù)標(biāo)志位RECOKBIT中斷子程序返回開始圖9.9串口中斷效勞子程序設(shè)計(jì)流程圖【工程實(shí)踐】(7)LCD顯示子程序模塊設(shè)計(jì)LCD顯示子程序模塊包括LCD初始化子程序、寫入指令數(shù)據(jù)到LCD子程序、寫入顯示數(shù)據(jù)到LCD子程序、LCD顯示D/A轉(zhuǎn)換值子程序、延時(shí)子程序等模塊組成,詳細(xì)設(shè)計(jì)請參見工程6“LCD顯示技術(shù)〞。4.匯編語言源程序;*******************************************************************;工程名稱:DA轉(zhuǎn)換;功能:串口發(fā)送一個(gè)要輸出的電壓(00--FF),模數(shù)轉(zhuǎn)換輸出一個(gè)當(dāng)前串口發(fā)出;的電壓;輸出的電壓為V=5*KK/255。其中KK為串口接收到的二進(jìn)制數(shù);*******************************************************************;*******************************************************************;功能:LCD口線的定義;*******************************************************************【工程實(shí)踐】LCDPORTEQUP0CMD_BYTEEQU2EHDAT_BYTEEQU2FH;*******************************************************************;功能:DAC0832的引腳定義;*******************************************************************;*******************************************************************;功能:;*******************************************************************DABLEQU30H;當(dāng)前DA的變量(00到255間),從串口接收LEDBAIEQU31H;顯示的百位LEDSHIEQU32H;顯示的十位LEDGEEQU33H;顯示的個(gè)位KEYTIMEEQU35H;KEYBITBIT00H;RECOKBITBIT01H;串口成功接收數(shù)據(jù)標(biāo)志位【工程實(shí)踐】ORG0000HAJMPMAIN;*******************************************************************;功能:定時(shí)器T0中斷效勞入口地址;*******************************************************************ORG000BH;T0中斷效勞入口地址AJMPTIME0_1;*******************************************************************;功能:串口接收數(shù)據(jù)中斷效勞子程序;*******************************************************************ORG0023H;串口中斷效勞入口地址;RS232:CLRRIMOVA,SBUF;單片機(jī)從PC串口接收數(shù)據(jù)MOVDABL,A;PC串口發(fā)送的數(shù)據(jù)送給D/A轉(zhuǎn)換值SETBRECOKBITRETI【工程實(shí)踐】;*******************************************************************;功能:主程序;*******************************************************************ORG0030HMAIN:MOV20H,#00HLCALLINITLCDMOVDABL,#20MOVKEYTIME,#04HMOVCMD_BYTE,#80H;設(shè)置DDRAM的地址LCALLWRITE_CMDLCALLDELAY0MOVDAT_BYTE,#"D"LCALLWRITE_DATMOVDAT_BYTE,#"A"LCALLWRITE_DATMOVDAT_BYTE,#"C"LCALLWRITE_DAT【工程實(shí)踐】MOVDAT_BYTE,#":"LCALLWRITE_DATMOVTH0,#0EEH;定時(shí)器T0,定時(shí)5ms,D/A轉(zhuǎn)換時(shí)間MOVTL0,#00HMOVTMOD,#21HMOVTH1,#0FDH;T1位波特率發(fā)生器,波特率9600MOVTL1,#0FDHMOVSCON,#50H;設(shè)置串口工作方式SETBTR1;啟動(dòng)定時(shí)器T1SETBREN;允許串行口接收數(shù)據(jù)SETBTR0;啟動(dòng)定時(shí)器T0MOVIE,#92H;允許定時(shí)器0中斷,允許串口中斷SETBRECOKBITSJMP$;等待中斷【工程實(shí)踐】;*******************************************************************;功能:定時(shí)器T0中斷效勞子程序;*******************************************************************ORG0100HTIME0_1:MOVTH0,#0EEHMOVTL0,#00HDJNZKEYTIME,TIME0_REMOVKEYTIME,#04HMOVP1,#0DFHLCALLKEYSCANLCALLDAC0832;調(diào)用D/A轉(zhuǎn)換子程序LCALLJSDPBL;調(diào)用計(jì)算D/A轉(zhuǎn)換值子程序LCALLDISPDPBL;調(diào)用LCD顯示D/A轉(zhuǎn)換值子程序TIME0_RE:RETI;*******************************************************************;功能:;按鍵掃描子程序;*******************************************************************KEYSCAN:MOVP1,#0FFH【工程實(shí)踐】;*******************************************************************;功能:;D/A轉(zhuǎn)換子程序;*******************************************************************DAC0832:CLRDAC_CSMOVA,DABLMOVP0,ACLRDAC_WRNOPNOPSETBDAC_WRSETBDAC_CSRET;***********************************************************;功能:LCD1602要用到的一些子程序;***********************************************************;***********************************************************;功能:寫入指令數(shù)據(jù)到LCD子程序(入口參數(shù)CMD_BYTE);***********************************************************WRITE_CMD:CLRRSCLRRW【工程實(shí)踐】MOVA,CMD_BYTE
MOVLCDPORT,ASETBENOPNOPCLRELCALLDELAY0RET;***********************************************************;功能:寫入顯示數(shù)據(jù)到LCD子程序(入口參數(shù)DAT_BYTE);***********************************************************WRITE_DAT:SETBRSCLRRWMOVA,DAT_BYTEMOVLCDPORT,ASETBENOPNOP【工程實(shí)踐】CLRELCALLDELAY0RET
***********************************************************;功能:LCD顯示初始化子程序;***********************************************************INITLCD:MOVCMD_BYTE,#30HLCALLWRITE_CMDMOVCMD_BYTE,#30HLCALLWRITE_CMDMOVCMD_BYTE,#30HLCALLWRITE_CMDMOVCMD_BYTE,#38H;設(shè)定工作方式LCALLWRITE_CMDMOVCMD_BYTE,#0CH;顯示狀態(tài)設(shè)置LCALLWRITE_CMDMOVCMD_BYTE,#01H;清屏【工程實(shí)踐】LCALLWRITE_CMDMOVCMD_BYTE,#06H;輸入方式設(shè)置LCALLWRITE_CMDRET
;***********************************************************;功能:延時(shí)子程序;***********************************************************DELAY0:MOVR5,#0A0HDELAY1:NOPDJNZR5,DELAY1RET;***********************************************************;功能:計(jì)算D/A轉(zhuǎn)換值子程序;***********************************************************JSDPBL:MOVA,DABL;取得A/D轉(zhuǎn)換值MOVB,#64H;除以100,得到百位【工程實(shí)踐】DIVABORLA,#30H;加30H,變換成相應(yīng)的ASCIIMOVLEDBAI,A;送到LCD顯示MOVA,BMOVB,#0AH;除以10,得到十位DIVABORLA,#30H;加30H,變換成相應(yīng)的ASCIIMOVLEDSHI,A;送到LCD顯示MOVA,B;余數(shù)為個(gè)位ORLA,#30H;加30H,變換成相應(yīng)的ASCIIMOVLEDGE,A;送到LCD顯示RET【工程實(shí)踐】;*******************************************************************;功能:LCD顯示D/A轉(zhuǎn)換值子程序;*******************************************************************DISPDPBL:MOVCMD_BYTE,#85H;設(shè)置DDRAM的地址LCALLWRITE_CMD;MOVDAT_BYTE,LEDBAI;百位顯示LCALLWRITE_DATMOVDAT_BYTE,LEDSHI;十位顯示LCALLWRITE_DATMOVDAT_BYTE,LEDGE;個(gè)位顯示LCALLWRITE_DATRETEND【工程實(shí)踐】【活動(dòng)四】系統(tǒng)仿真調(diào)試【工程實(shí)踐】系統(tǒng)仿真調(diào)試過程參見工程1。1、D/A轉(zhuǎn)換器的根本原理D/A轉(zhuǎn)換器的根本功能是將一個(gè)用二進(jìn)制表示的數(shù)字量轉(zhuǎn)換成相應(yīng)的模擬量。實(shí)現(xiàn)這種轉(zhuǎn)換的根本方法是對應(yīng)于二進(jìn)制數(shù)的每一位,產(chǎn)生一個(gè)相應(yīng)的電壓〔電流〕,而這個(gè)電壓〔電流〕的大小那么正比于相應(yīng)的二進(jìn)制位的權(quán)。具體電路較復(fù)雜,這里就不多述,有興趣的同學(xué)請看有關(guān)書籍。2、主要技術(shù)指標(biāo)〔1〕分辯率。通常用數(shù)字量的數(shù)位表示,一般為8位,12位,16位等。分辯率10位,表示它可能對滿量程的1/210=1/1024的增量作出反響?!?〕輸入編碼形式。如二進(jìn)制碼,BCD碼等?!?〕轉(zhuǎn)換線性。通常給出在一定溫度下的最大非線性度,一般為~0.03%。〔4〕轉(zhuǎn)換時(shí)間。通常為幾十納秒~幾微秒?!?〕輸出電平。不同型號(hào)的輸出電平相差很大。大局部是電壓型輸出,一般為5~10伏;也有高壓輸出型的,為24~30伏。也有一些是電流型的輸出,低者為20毫安左右,高者可達(dá)3安培?!鞠嚓P(guān)知識(shí)】3、集成D/A轉(zhuǎn)換器——DAC0832DAC0832是目前國內(nèi)用得較普遍的D/A轉(zhuǎn)換器。⑴、DAC0832主要特性DAC0832是采用CMOS/Si-Cr工藝制成的雙列直插式單片8位D/A轉(zhuǎn)換器。它可直接與Z80,8085,8080等CPU相連,也可同8031相連,以電流形式輸出;當(dāng)轉(zhuǎn)換為電壓輸出時(shí),可外接運(yùn)算放大器。其主要特性有:1〕出電流線性度可在滿量程下調(diào)節(jié)。2〕轉(zhuǎn)換時(shí)間為1μS。3〕數(shù)據(jù)輸入可采用雙緩沖、單緩沖或直通方式。4〕增益溫度補(bǔ)償為0.02%FS/℃。5〕每次輸入數(shù)字為8位二進(jìn)制數(shù)。6〕功耗20mW。7〕邏輯電平輸入與TTL兼容。8〕供電電源為單一電源,可在5~15V內(nèi)。【相關(guān)知識(shí)】⑵DAC0832內(nèi)部結(jié)構(gòu)及外部引腳DAC0832D/A轉(zhuǎn)換器,其內(nèi)部結(jié)構(gòu)由一個(gè)數(shù)據(jù)存放器、DAC存放器和D/A轉(zhuǎn)換器三大局部組成。DAC0832內(nèi)部采用R-2R梯形電阻網(wǎng)絡(luò)。兩個(gè)存放器輸入數(shù)據(jù)存放器和DAC存放器用以實(shí)現(xiàn)兩次緩沖,故在輸出的同時(shí),尚可集一個(gè)數(shù)字,這就提高了轉(zhuǎn)換速度。當(dāng)多芯片同時(shí)工作時(shí),可用同步信號(hào)實(shí)現(xiàn)各模擬量同時(shí)輸出。圖示出了DAC0832的外部引腳【相關(guān)知識(shí)】圖9.11DAC0832引腳圖【相關(guān)知識(shí)】片選信號(hào),低電平有效。與ILE相配合,可對寫信號(hào)是否有效起到控制作用。ILE允許輸入鎖存信號(hào),高電平有效,輸入存放器的鎖存信號(hào)由ILE,,的邏輯組合產(chǎn)生。當(dāng)ILE為高電平,為低電平,輸入負(fù)脈沖時(shí),輸入存放器的鎖存信號(hào)產(chǎn)生正脈沖。當(dāng)輸入存放器的鎖存信號(hào)為高電平時(shí)輸入線的狀態(tài)變化,輸入存放器的鎖存信號(hào)的負(fù)跳變將輸入在數(shù)據(jù)線上的信息打入輸入鎖存器。寫信號(hào)1,低電平有效。當(dāng),,ILE均有效時(shí),可將數(shù)據(jù)寫入8位輸入存放器。寫信號(hào)2,低電平有效。當(dāng)有效時(shí),在傳送控制信號(hào)作用下,可將鎖存在輸入存放器的8位數(shù)據(jù)送到DAC存放器。數(shù)據(jù)傳送信號(hào),低電平有效。當(dāng),均有效時(shí),那么在DAC存放器的鎖存信號(hào)產(chǎn)生正脈沖,當(dāng)DAC存放器的鎖存信號(hào)為高電平時(shí),DAC存放器的輸出和輸入存放器的狀態(tài)一致,DAC存放器的鎖存信號(hào)負(fù)跳變,輸入存放器的內(nèi)容打入DAC存放器。【相關(guān)知識(shí)】Vref基準(zhǔn)電源輸入端,它與DAC內(nèi)的R-2R梯形網(wǎng)絡(luò)相接,Vref可在±10V范圍內(nèi)調(diào)節(jié)。DI0~DI78位數(shù)字量輸入端,ID7為最高位,DI0為最低位。Iout1:DAC的電流輸出1,當(dāng)DAC存放器各位為1時(shí),輸出電流為最大。當(dāng)DAC存放器各位為0時(shí),輸出電流為0。Iout2:DAC的電流輸出2,它使Iout1+Iout2恒為一常數(shù)。一般在單極性輸出時(shí)Iout2接地,在雙極性輸出時(shí)接運(yùn)放〔詳見圖9-46〕Rfb反響電阻。在DAC0832芯片內(nèi)有一個(gè)反響電阻,可用作外部運(yùn)放的分路反響電阻。Vcc:電源輸入線:DGND為數(shù)字地,AGND為模擬信號(hào)地。4、DAC0832和MCS-51的接口DAC0832可工作在單、雙緩沖器方式。單緩沖器方式即輸入存放器的信號(hào)和DAC存放器的信號(hào)同時(shí)控制,使一個(gè)數(shù)據(jù)直接寫入DAC存放器。這種方式適用于只有一路模擬量輸出或幾路模擬量不需要同步輸出的系統(tǒng);雙緩沖器方式,即輸入存放順的信號(hào)和DAC存放器信號(hào)分開控制,這種方式適用于幾個(gè)模擬量需同時(shí)輸出的系統(tǒng)。下面我們分別討論上述兩種方式時(shí)的接口方法?!鞠嚓P(guān)知識(shí)】1、單緩沖器方式圖9.12單極性單緩沖器電路接口圖【相關(guān)知識(shí)】圖為具有單極性一路模擬量的8031系統(tǒng)。圖中ILE接+5V,Iout2接地,Iout1輸出電流經(jīng)運(yùn)放器741輸出一個(gè)單極性電壓范圍為0~5V。片選信號(hào)和傳送信號(hào)都連到地址線A15,輸入存放器和DAC存放器地址都可選為7FFFH,寫選通輸入線,都和8031的寫信號(hào)連接,CPU對0832
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《chap會(huì)計(jì)憑證》課件
- 《服裝行業(yè)櫥窗展示》課件
- 《建設(shè)項(xiàng)目質(zhì)量管理》課件
- 2024-2025學(xué)年天津市第三中學(xué)高三上學(xué)期10月月考?xì)v史試題(解析版)
- 單位管理制度集合大全【員工管理】十篇
- 單位管理制度集粹選集【人員管理】十篇
- 《中國心力衰竭診斷和治療指南(2024)》解讀完整版
- 單位管理制度匯編大全【職工管理】
- 單位管理制度合并選集職員管理
- 《電阻的串聯(lián)和并聯(lián)》課件
- 手衛(wèi)生知識(shí)答題及答案
- GB/T 11017.1-2024額定電壓66 kV(Um=72.5 kV)和110 kV(Um=126 kV)交聯(lián)聚乙烯絕緣電力電纜及其附件第1部分:試驗(yàn)方法和要求
- 華為任職資格體系介紹
- 專題06手拉手模型(原卷版+解析)
- 《珍愛生命拒絕毒品》主題班會(huì)課件
- 儲(chǔ)能鋰離子電池 液冷熱管理系統(tǒng)運(yùn)行和維護(hù)規(guī)范
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 2024AI Agent行業(yè)研究報(bào)告
- 宮腔鏡手術(shù)并發(fā)癥及處理
- 安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)方案2024~2026(工貿(mào))
- 2024版內(nèi)蒙古自治區(qū)勞動(dòng)合同書(臨時(shí)工、季節(jié)工、農(nóng)民輪換工)
評論
0/150
提交評論