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

正文內(nèi)容

基于單片機(jī)的液位控制系統(tǒng)畢業(yè)論文設(shè)計(jì)-資料下載頁(yè)

2025-06-27 19:43本頁(yè)面
  

【正文】 、1中斷,設(shè)定外部中斷觸發(fā)方式為邊沿觸發(fā),允許T0中斷,設(shè)定計(jì)數(shù)器工作于方式2,給計(jì)數(shù)器設(shè)定初值為全1,起動(dòng)計(jì)數(shù)器,中斷優(yōu)先級(jí)設(shè)定,其中設(shè)定外部中斷計(jì)數(shù)器T0為高級(jí)中斷,令K=0(用K來(lái)檢測(cè)是否有鍵按下,當(dāng)有數(shù)字鍵按下時(shí)K=1)。:該方案中由液位傳感器LM1042實(shí)現(xiàn)非電量向電量的轉(zhuǎn)化。:該部分主要由軟件完成,ADC0809的轉(zhuǎn)化結(jié)果存在8155的存儲(chǔ)器中,單片機(jī)將十六進(jìn)制的結(jié)果處理后使得要顯示液位部分的結(jié)果存在于一個(gè)數(shù)組WH[ ]中。:鍵盤采用線反轉(zhuǎn)法,掃描法需要逐列掃描查詢,根據(jù)鍵的不同位置,每次查詢的位置不一樣。如果按下的鍵位于最后一列,則要經(jīng)過(guò)多次掃描查詢才能獲得該鍵的位置。而線反轉(zhuǎn)法比較方便,無(wú)論被按的鍵位于第一列還是最后一列,都只經(jīng)過(guò)兩步就可獲得此鍵的位置。:圖42 線反轉(zhuǎn)法原理圖圖中硬件采用中斷方式工作,硬件中斷與8 I / O口,構(gòu)成了一個(gè)44鍵盤。假設(shè)圖中虛線為鑰匙,反演的步驟如下。將D3 ~ D0集上的輸入線、D7 D4將于~輸出線,使I / O輸出信號(hào)D7 ~ D4為0000。如果有一個(gè)按鍵的途徑,世界之門的輸出為低水平,CPU中斷,說(shuō)一個(gè)鍵盤鍵。與此同時(shí),D3 D0的輸入數(shù)據(jù)從存儲(chǔ)器在一個(gè)單元,其中0是一個(gè)相應(yīng)按鍵的列的位置。將第一步的方向傳輸轉(zhuǎn)過(guò)身來(lái),要將輸入行D7 ~ ~ D0 D4 D3組,輸出線。使I / O端口輸出數(shù)據(jù)單元(即N。D3的能有幾關(guān)鍵位置D0的列,然后看)的I / O。數(shù)據(jù),到內(nèi)存N + 1單位、數(shù)據(jù)存儲(chǔ)在D4 D7 ~在0級(jí)對(duì)應(yīng)一個(gè)是按下這個(gè)按鈕的位置。最后,將D0 D3 ~單位和N + 1單位D7 ~ D4拼接起來(lái)按按鈕到鍵值。單片機(jī)應(yīng)用系統(tǒng),任何的I / O口或擴(kuò)展I / O口均可構(gòu)成一個(gè)決定性的鍵盤。典型的鍵盤接口具有普遍的I / O口,擴(kuò)大延伸口和特殊的串行瞧鍵盤芯片的行列式鍵盤。鍵盤和判定應(yīng)用系統(tǒng)通常有監(jiān)視器,為了節(jié)省I / O口線,經(jīng)常顯示電路和決定性的鍵盤做一個(gè)接口電路。這個(gè)步驟:將被列為輸出線,行行行行作為輸入。所有的輸出線為0,在這個(gè)時(shí)間線的低層次的按鈕在管道上,假如不線為0,則沒(méi)有鍵。第一步,即行依次輸出線,列為輸入行線。為所有的線條為0,這次清單的低水平的關(guān)鍵在線列。到目前為止,將確定了關(guān)鍵位置(X,Y)。使用時(shí),然后在P33按鈕下設(shè)置鬧鐘的根據(jù),按等級(jí)上限后產(chǎn)生中斷。然后在一個(gè)TIME0(意思是在開(kāi)關(guān)從A到B的觸發(fā)輸出時(shí)拉上產(chǎn)生一個(gè)下降,產(chǎn)生中斷,沿著CPU中斷處理程序設(shè)置鬧鐘水平打電話的下限。這里是由計(jì)時(shí)器0內(nèi)部中斷擴(kuò)展到外部中斷。兩處中斷均調(diào)用中斷服務(wù)子程序掃描鍵盤,上限值存在數(shù)組e[ ]中,下限值存在數(shù)組f[ ]。鍵盤中斷處理子程序流程圖如下:開(kāi)始K=1鍵盤輸入值給MShi十位值存于數(shù)組中K=0K=1鍵盤輸入值給MGe個(gè)位值存于數(shù)組中輸入的上限送1602顯示NNYY結(jié)束圖43 鍵盤輸入報(bào)警上限中斷處理流程圖每次調(diào)用中斷服務(wù)子程序時(shí)均需掃描鍵盤,以獲得鍵值,鍵盤掃描子程序如下:開(kāi)始按鍵是否按下記錄行號(hào)延時(shí)10ms按鍵是否按下記錄列號(hào)獲得按鍵位置按鍵值存入數(shù)組NYYN鍵盤掃描子程序結(jié)束圖44 鍵盤掃描流程圖:當(dāng)液位低于鍵盤輸入下限時(shí)給BUZZER高電平,蜂鳴器發(fā)聲報(bào)警,給LEVEL低電平,開(kāi)閘進(jìn)水;當(dāng)液位高于鍵盤輸入上線時(shí)也給BUZZER高電平,蜂鳴器發(fā)聲報(bào)警,給LEVEL低電平,開(kāi)閘放“水”。 圖45 報(bào)警模塊電路圖:該部分由光電隔離器、固態(tài)繼電器及抽水電機(jī)或加熱電阻組成。當(dāng)液位過(guò)低時(shí)單片機(jī)給LEVEL低電平,發(fā)光二極管導(dǎo)通發(fā)光,光敏三極管導(dǎo)通,使Q1導(dǎo)通,光電隔離繼電器吸合,電機(jī)動(dòng)作。執(zhí)行機(jī)構(gòu)示意圖如下所示:圖46 執(zhí)行機(jī)構(gòu)原理圖開(kāi)始1602初始化顯示W(wǎng)aterLvel顯示液位所占百分比顯示子程序結(jié)束液晶顯示器1602顯示測(cè)得的液位,1602編程較為復(fù)雜,它要求嚴(yán)格按照時(shí)序進(jìn)行操作。 圖47 1602顯示流程圖液晶顯示器1602的初始化過(guò)程應(yīng)嚴(yán)格按照其時(shí)序進(jìn)行,1602初始化流程圖如下:開(kāi)始設(shè)置顯示模式延時(shí)關(guān)顯示延時(shí)清屏延時(shí)開(kāi)顯示延時(shí)初始化結(jié)束 圖48 1602初始化流程圖各模塊相互聯(lián)系,共同作用,測(cè)量模塊將測(cè)得數(shù)據(jù)給AD轉(zhuǎn)換模塊,轉(zhuǎn)換結(jié)果存于8155中,鍵盤模塊輸入報(bào)警液位上下限,單片機(jī)將測(cè)得液位與鍵盤輸入液位比較,以決定是否報(bào)警。AD轉(zhuǎn)化結(jié)果有單片機(jī)控制交與顯示模塊顯示。第五章 結(jié) 論 經(jīng)過(guò)幾個(gè)月的努力,畢業(yè)設(shè)計(jì)終于接近尾聲。作為大學(xué)的最后一堂課,它的工作量肯定不小。首先是課題的選定,一開(kāi)始我的題目是基于Matlab的倒立擺系統(tǒng),由于,我對(duì)單片機(jī)的興趣要大于Matlab,在爭(zhēng)取劉老師同意后,我的題目改為基于單片機(jī)的液位控制系統(tǒng)。之后便是海量搜集材料,在圖書館我翻閱了大量關(guān)于單片機(jī)的書,尤其是介紹AT89S51的課本,再者就是關(guān)于C51的書。再是方案的確定,電路圖的設(shè)計(jì),接下來(lái)一階段便是程序的編寫,由于選用了C語(yǔ)言,程序的編寫相對(duì)來(lái)說(shuō)簡(jiǎn)單了一些。 整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,我學(xué)到了很多很多知識(shí)。這些對(duì)于以后的學(xué)習(xí)、工作都有非常大的幫助。 第一,對(duì)單片機(jī)有了較為系統(tǒng)的認(rèn)識(shí)。對(duì)單片機(jī)的I/O口、中斷、定時(shí)計(jì)數(shù)器及一些外圍設(shè)備如并行接口815模數(shù)轉(zhuǎn)換器ADC0809等已能熟練運(yùn)用。 第二,重新復(fù)習(xí)了PROTEL,C語(yǔ)言等的運(yùn)用,對(duì)他們的認(rèn)識(shí)又有了新的提高。 第三,對(duì)一些輸入輸出設(shè)備如鍵盤、液晶顯示器的原理和使用有了新的認(rèn)識(shí)。第四,就是掌握了一些搜集資料的方法。畢業(yè)設(shè)計(jì)準(zhǔn)備過(guò)程中,我翻閱了大量關(guān)于單片機(jī),C語(yǔ)言,液位傳感器等的資料,掌握了一定的搜集資料方法、技巧。 該設(shè)計(jì)中除了實(shí)物沒(méi)有調(diào)試出來(lái)以外,還有其他一些小的不足。日后我一定加強(qiáng)學(xué)習(xí),不斷豐富自已的知識(shí),以期不再發(fā)生類似情況。 附錄一 程序清單 include include include define uchar unsigned char define uint unsigned int define DataPort 8155PAsbit BUZZER=P3^1。sbit LEVEL=P3^5。sbit LCM_RS=P2^2。sbit LCM_RW=P2^3。sbit LCM_EN=P2^4。int k。/********************************************************************ADC子程序********************************************************************/void adc0809(){uchar xdata *ADC。uchar i。ADC=3F00H。ADCdata=9F00H。i=1。//ADC需要1個(gè)模擬輸入通道*ADC=i。//啟動(dòng)ADC}/********************************************************************鍵盤掃描子程序********************************************************************/int KeyScan(){int hang。int lie。int m。 int num[3][4]={0,1,2,3,4,5,6,7,8,9,0,0}。long i。P1=0xf0。//列輸出全0if((P1amp。0xf0)!=0xf0)//掃描行,如果不相等,則有鍵按下{ switch(P1) { case 0xe0:hang=1。break。case 0xd0:hang=2。 break。 case 0xb0: hang=3。 break。 default: break。 } }for(i=10000。i0。i)。//延時(shí)去抖動(dòng)P1=0x8f。//只令P16,P15,P14為0,P17不能為0,行輸出全0if((P1amp。0x8f)!=0x8f)//列掃描,如果不相等,則確認(rèn)按鍵按下{switch(P1) { case 0x8e:lie=1。 break。 case 0x8d: lie=2。 break。 case 0x8b: lie=3。 break。 case 0x87: lie=4。 break。 default: break。 }m=num[hang][lie]。k=1。}else{k=0。}}/********************************************************************LCD顯示子程序********************************************************************//*******************初始化子程序*******************/void Initlcd(void){WriteCommandLcm(0x38,0)。Delay5ms()。WriteCommandLcm(0x38,0)。Delya5ms()。WriteCommandLcm(0x38,0)。Delya5ms()。WriteCommandLcm(0x38,1)。WriteCommandLcm(0x08,1)。WriteCommandLcm(0x01,1)。WriteCommandLcm(0x06,1)。WriteCommandLcm(0x0c,1)。}/*******************5ms延時(shí)子程序*******************/void Delay5ms(void){uint i=5552。while(i)。}/*******************忙檢測(cè)子程序*******************/void WaitForEnable(void){DataPort=0xff。LCM_RS=0。LCM_RW=1。nop_()。LCM_EN=1。_nop_()。_nop_()。while(DataPortamp。0x80)。LCM_EN=0。 }/********************寫數(shù)據(jù)子程序********************/void WriteDataLcm(uchar dataw){WaitForEnable()。LCM_RS=1。LCM_RW=0。_nop_()。DataPort=dataw。_nop_()。LCM_EN=1。_nop_()。_nop_()。CM_EN=0。}/*********************寫命令子程序*********************/void WriteCommandLcm(uchar CMD,uchar Attribc){if(Attribc)WaitForEnable()。LCM_RS=0。LCM_RW=0。_nop_()。DataPort=CMD。_nop_()。LCM_EN=1。_nop_()。_nop_()。LCM_EN=0。}/*********************顯示一個(gè)字符子程序*********************/void DisplayOneChar(uchar x,uchar y,uchar Wdata){LocataXY(x,y)。WriteDataLcm(Wdata)。}/*********************顯示一串字符子程序*********************/void ePutstr(uchar x,uchar code *ptr){uchar i。uchar l=0。while(ptr[l]31){l++。 }for(i=0。il。i++){DisplayOneChar(x++,y,ptr[i])。}}/*********************LCD顯示子程序*********************/void display(uchar result){uchar xdata *adcdata。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1