簡(jiǎn)易數(shù)字直流電壓表電路及程序
設(shè)計(jì)一個(gè)簡(jiǎn)易數(shù)字直流電壓表。(量程0V-2V、測(cè)量速度為大于等于2次/秒、測(cè)量誤差在±0.05V以內(nèi),有超限報(bào)警、數(shù)碼管顯示。)
3.5.1模塊1:系統(tǒng)設(shè)計(jì)
(1)分析任務(wù)要求,寫出系統(tǒng)整體設(shè)計(jì)思路
從試題的要求分析,主要包括的內(nèi)容為ADC轉(zhuǎn)換電路的控制、采用定時(shí)器定時(shí)讀取ADC轉(zhuǎn)換器的數(shù)據(jù)、將ADC轉(zhuǎn)換器的數(shù)據(jù)計(jì)算為對(duì)應(yīng)的電壓值,最后在數(shù)碼管上顯示出來。
整體設(shè)計(jì)思路:硬件采用單片機(jī)的P0輸出數(shù)碼管的7段碼,P2口輸出數(shù)碼管的位控信號(hào)。用P1的三個(gè)I/O管腳連接ADC轉(zhuǎn)換器的接口,通過查詢定時(shí)器T0中斷標(biāo)志是否有效來啟動(dòng)ADC轉(zhuǎn)換器的工作,并讀取ADC轉(zhuǎn)換器的轉(zhuǎn)換結(jié)果。然后,根據(jù)ADC轉(zhuǎn)換器的參考電壓將ADC轉(zhuǎn)換器的轉(zhuǎn)換結(jié)果計(jì)算為對(duì)應(yīng)的電壓值,并在數(shù)碼管上顯示出來。
(2)選擇單片機(jī)型號(hào)和所需外圍器件型號(hào),設(shè)計(jì)單片機(jī)硬件電路原理圖
采用MCS51系列單片機(jī)At89S51作為主控制器,外圍電路器件包括數(shù)碼管驅(qū)動(dòng)、AD轉(zhuǎn)換器TLC549、基準(zhǔn)電壓TL431等。
數(shù)碼管驅(qū)動(dòng)采用2個(gè)四聯(lián)共陰極數(shù)碼管顯示,由于單片機(jī)驅(qū)動(dòng)能力有限,采用74HC244作為數(shù)碼管的驅(qū)動(dòng)。在74HC244的7段碼輸出線上串聯(lián)100歐姆電阻起限流作用。
AD轉(zhuǎn)換器的參考電壓由精密基準(zhǔn)電源TL431提供,標(biāo)準(zhǔn)參考電壓Vref+為2.5伏, Vref-為0伏。由于0V-2V內(nèi)的測(cè)量誤差控制在±0.05V內(nèi),因此8 位A/D轉(zhuǎn)換器即可滿足要求。AD轉(zhuǎn)換器TLC549是以8位開關(guān)電容逐次逼近A/D轉(zhuǎn)換器為基礎(chǔ)而構(gòu)造的CMOS A/D轉(zhuǎn)換器。 它們?cè)O(shè)計(jì)成能通過3態(tài)數(shù)據(jù)輸出和模擬輸入與微處理器或外圍設(shè)備串行接口。TLC549僅用輸入/輸出時(shí)鐘(I/O CLOCK)和芯片選擇 (CS)輸入作數(shù)據(jù)控制。TLC549的IO CLOCK輸入頻率最高可達(dá)1.1MHz。
TLC549提供了片內(nèi)系統(tǒng)時(shí)鐘,它通常工作在4MHz且不需要外部元件。片內(nèi)系統(tǒng)時(shí)鐘使內(nèi)部器件的操作獨(dú)立于串行輸入/輸出的時(shí)序并允許TLC548和TLC549象許多軟件和硬件所要求的 I/O CLOCK和內(nèi)部系統(tǒng)時(shí)鐘一起可以實(shí)現(xiàn)高速數(shù)據(jù)傳送以及對(duì)于TLC549為每秒40,000次轉(zhuǎn)換的轉(zhuǎn)換速度。TLC549 的引腳排列分別如圖3-17下。
如圖3-17 TLC549 的引腳排列
TLC549 的工作時(shí)序如圖3-18所示。
圖3-18 TLC549 的工作時(shí)序
轉(zhuǎn)換周期需要36個(gè)系統(tǒng)時(shí)鐘周期(最大為 17μs),它開始于CS變?yōu)榈碗娖街驣/O CLOCK的第8個(gè)下降沿,這適用于該時(shí)刻其地址存在于存儲(chǔ)器中的通道。
在CS變?yōu)榈碗娖胶?,最高有效?(A7)自動(dòng)被放置在DATA OUT總線上。其余的7 位(A6-A0)在前7個(gè)I/O CLOCK下降沿由時(shí)鐘同步輸出。
TLC549的工作原理
TLC549是在單個(gè)芯片內(nèi)的完善的數(shù)據(jù)采集系統(tǒng)。每一個(gè)器件包含內(nèi)部系統(tǒng)時(shí)鐘,采樣和保持,8位A/D轉(zhuǎn)換器,數(shù)據(jù)寄存器以及控制邏輯電路。為了提高靈活性和訪問速度,器件有兩個(gè)控制輸入:I/OCLOCK和芯片選擇(CS)。這些控制輸入和與TTL兼容的3態(tài)輸出易于與微處理器或小型計(jì)算機(jī)的串行通信。器件可在17μs或更短時(shí)間內(nèi)完成轉(zhuǎn)換。TLC549每25μs重復(fù)一次完整的輸入-轉(zhuǎn)換-輸出(input-conversion-output)周期。
內(nèi)部系統(tǒng)時(shí)鐘和I/OCLOCK獨(dú)立使用且不需要任何特定的速度或二者之間的相位關(guān)系。這種獨(dú)立性簡(jiǎn)化了器件的硬件和軟件控制任務(wù)。由于這種獨(dú)立性和系統(tǒng)時(shí)鐘的內(nèi)部產(chǎn)生,控制硬件和軟件只需關(guān)心利用I/O時(shí)鐘讀出先前轉(zhuǎn)換結(jié)果和啟動(dòng)轉(zhuǎn)換。內(nèi)部系統(tǒng)時(shí)鐘以這種方式驅(qū)動(dòng)轉(zhuǎn)換電路以便控制硬件和軟件不需要涉及此項(xiàng)任務(wù)。
當(dāng)CS為高電平時(shí),DATAOUT處于高阻狀態(tài)且I/OCLOCK(I/O時(shí)鐘)被禁止。正常控制時(shí)序?yàn)椋?br />1.CS被拉至低電平。當(dāng)CS變?yōu)榈碗娖綍r(shí),前次轉(zhuǎn)換結(jié)果的最高有效位(MSB)開始出現(xiàn)在DATAOUT端。
2.前4個(gè)I/OCLOCK周期的下降沿輸出前次轉(zhuǎn)換結(jié)果的第2、第3、第4和第5個(gè)最高有效位。在I/OCLOCK第4個(gè)高電平至低電平的跳變之后,片內(nèi)采樣和保持電路開始對(duì)模擬輸入采樣。采樣操作主要包括內(nèi)部電容器充電到模擬輸入電壓的電平。
3.其后再把三個(gè)I/OCLOCK周期加至I/OCLOCK端,在這些時(shí)鐘周期的下降沿,第6、第7和第8個(gè)轉(zhuǎn)換位被移出。
4.最后(第8個(gè))時(shí)鐘周期被加至I/OCLOCK。此時(shí)鐘周期高電平至低電平的跳變使片內(nèi)采樣和保持電路開始保持功能。保持功能在接著四個(gè)內(nèi)部系統(tǒng)時(shí)鐘周期內(nèi)繼續(xù)進(jìn)行,在此之后保持功能結(jié)束且在下面32個(gè)系統(tǒng)時(shí)鐘周期內(nèi)完成轉(zhuǎn)換,總共為36個(gè)周期。在第8個(gè)I/OCLOCK周期之后,CS必須變?yōu)楦唠娖剑駝tI/OCLOCK必須保持低電平達(dá)至少36個(gè)系統(tǒng)時(shí)鐘周期以供保持和轉(zhuǎn)換功能的完成。在多個(gè)轉(zhuǎn)換周期內(nèi)CS可保持低電平。在多個(gè)轉(zhuǎn)換周期內(nèi)使CS保持低電平時(shí)必須特別注意防止I/OCLOCK線上的噪聲閃變。如果在I/OCLOCK上發(fā)生閃變,那么在微處理器/控制器和器件之間的I/O時(shí)序?qū)⑹ネ?。此外,如果CS變?yōu)楦唠娖?,那么它必須保持高電平直至轉(zhuǎn)換結(jié)束為止。否則,CS的有效高電平至低電平跳變將引起復(fù)位,它使正在進(jìn)行的轉(zhuǎn)換失敗。
在36個(gè)系統(tǒng)時(shí)鐘周期發(fā)生之前,通過完成步驟1至4可以啟動(dòng)新的轉(zhuǎn)換,同時(shí)正在進(jìn)行的轉(zhuǎn)換中止。此操作產(chǎn)生先前的轉(zhuǎn)換結(jié)果而不是正在進(jìn)行的轉(zhuǎn)換結(jié)果。
(3)分析軟件任務(wù)要求,寫出程序設(shè)計(jì)思路,分配單片機(jī)內(nèi)部資源,畫出程序流程圖
軟件的任務(wù)包括定時(shí)器的定時(shí)功能、AD轉(zhuǎn)換器TLC549的控制與數(shù)據(jù)的讀取,數(shù)碼管的動(dòng)態(tài)掃描。程序設(shè)計(jì)思路,采用查詢定時(shí)器中斷標(biāo)志的方式來啟動(dòng)AD轉(zhuǎn)換器TLC549的工作,在讀取AD轉(zhuǎn)換器的數(shù)據(jù)之后,再對(duì)數(shù)據(jù)進(jìn)行計(jì)算換算為對(duì)應(yīng)的電壓值。
需要分配的單片機(jī)存儲(chǔ)資源包括AD轉(zhuǎn)換器數(shù)據(jù)的暫存變量(re_data)、定時(shí)器溢出次數(shù)的計(jì)數(shù)變量(T_cnt)、數(shù)據(jù)換算的系數(shù)(xishu)以及電壓值(volt)等。
主程序的流程圖如圖3-19所示。由于采用查詢中斷標(biāo)志的方式來響應(yīng)的中斷,所以主程序要循環(huán)完成如下任務(wù):中斷標(biāo)志的查詢、AD轉(zhuǎn)換器數(shù)據(jù)的讀取、電壓值的換算以及數(shù)碼管的動(dòng)態(tài)掃描顯示。
(4)設(shè)計(jì)系統(tǒng)軟件調(diào)試方案、硬件調(diào)試方案及軟硬件聯(lián)合調(diào)試方案
軟件調(diào)試方案:偉福軟件中,在“文件新建文件”中,新建C語言源程序文件,編寫相應(yīng)的程序。在“文件新建項(xiàng)目”的菜單中,新建項(xiàng)目并將C語言源程序文件包括在項(xiàng)目文件中。
在 “項(xiàng)目編譯”菜單中將C源文件編譯,檢查語法錯(cuò)誤及邏輯錯(cuò)誤。在編譯成功后,產(chǎn)生以 “*.hex”和“*.bin” 后綴的目標(biāo)文件。
硬件調(diào)試方案:在設(shè)計(jì)平臺(tái)中,將單片機(jī)的P1.0接TLC549的CLK管腳,P1.1接TLC549的DOUT管腳,P1.2接TLC549的CS管腳。
在偉福中將程序文件編譯成目標(biāo)文件后,將下載線安裝在實(shí)驗(yàn)平臺(tái)上,運(yùn)行“MCU下載程序”,選擇相應(yīng)的flash 數(shù)據(jù)文件,點(diǎn)擊“編程”按鈕,將程序文件下載到單片機(jī)的Flash中。
然后,上電重新啟動(dòng)單片機(jī),檢查所編寫的程序是否達(dá)到題目的要求,是否全面完整地完成試題的內(nèi)容。
3.6.2 模塊2 程序設(shè)計(jì)
//晶振:11.0592MHz,定時(shí)器T0每50ms中斷一次,每隔0.1秒讀ADC一次
/* AD轉(zhuǎn)換器使用 TLC549
DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY
評(píng)論