巡回檢測(cè)報(bào)警系統(tǒng)控制設(shè)計(jì)_第1頁
巡回檢測(cè)報(bào)警系統(tǒng)控制設(shè)計(jì)_第2頁
巡回檢測(cè)報(bào)警系統(tǒng)控制設(shè)計(jì)_第3頁
巡回檢測(cè)報(bào)警系統(tǒng)控制設(shè)計(jì)_第4頁
巡回檢測(cè)報(bào)警系統(tǒng)控制設(shè)計(jì)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精選優(yōu)質(zhì)文檔-----傾情為你奉上精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)專心---專注---專業(yè)精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)巡回檢測(cè)報(bào)警控制系統(tǒng)設(shè)計(jì)序隨著電子測(cè)量技術(shù)與計(jì)算機(jī)技術(shù)的發(fā)展,而對(duì)各種檢測(cè)對(duì)象和大量的測(cè)試點(diǎn),需要利用數(shù)據(jù)采集系統(tǒng)將多路被測(cè)量轉(zhuǎn)換成數(shù)字量,在經(jīng)過單片機(jī)或微型計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理,實(shí)現(xiàn)實(shí)時(shí)測(cè)控。在工業(yè)生產(chǎn)中,往往也需要對(duì)各種生產(chǎn)過程參數(shù)進(jìn)行控制,而要進(jìn)行控制的前提條件是必須對(duì)各參數(shù)進(jìn)行數(shù)據(jù)采集。數(shù)據(jù)采集系統(tǒng)一般具有定時(shí)采樣(A/D轉(zhuǎn)換)、數(shù)據(jù)轉(zhuǎn)換、參數(shù)顯示、超限報(bào)警等功能。在本次課設(shè)中,將設(shè)計(jì)一個(gè)多路數(shù)據(jù)采集測(cè)控系統(tǒng),采用單片機(jī)為核心器件,配合相應(yīng)的外圍電路、ADC0809模/數(shù)轉(zhuǎn)換器、LED數(shù)碼管及發(fā)光二極管等組成單片機(jī)數(shù)據(jù)采集系統(tǒng)。第一部分系統(tǒng)設(shè)計(jì)要求一、設(shè)計(jì)的性質(zhì)與目的該設(shè)計(jì)是在我們學(xué)完《單片機(jī)原理及應(yīng)用》和電子學(xué)相關(guān)課程的基礎(chǔ)上,綜合運(yùn)用所學(xué)知識(shí),進(jìn)行單片機(jī)測(cè)控系統(tǒng)設(shè)計(jì),進(jìn)一步加強(qiáng)對(duì)所學(xué)知識(shí)的理解,使學(xué)生掌握單片機(jī)測(cè)控系統(tǒng)開發(fā)的方法、步驟,具備一定的設(shè)計(jì)能力、動(dòng)手能力。二、設(shè)計(jì)任務(wù)和要求根據(jù)題目要求,設(shè)計(jì)一個(gè)單片機(jī)應(yīng)用系統(tǒng),完成相應(yīng)的控制和顯示功能。完成該單片機(jī)應(yīng)用系統(tǒng)的硬件原理圖,設(shè)計(jì)相應(yīng)的控制軟件,實(shí)現(xiàn)硬件及軟件的調(diào)試。三、巡回檢測(cè)報(bào)警控制系統(tǒng)設(shè)計(jì)要求設(shè)計(jì)一個(gè)多路數(shù)據(jù)采集測(cè)控系統(tǒng),具有控制及顯示功能:1、對(duì)多路模擬信號(hào)進(jìn)行采集,將采集到的電壓值通過LED顯示出來。2、設(shè)置被測(cè)量的閾值,對(duì)被測(cè)量進(jìn)行臨控,當(dāng)達(dá)到閾值時(shí),啟動(dòng)報(bào)警(如指示燈)或啟動(dòng)相應(yīng)的設(shè)備(如直流電機(jī))。3、鍵盤可以控制在LED上顯示哪一路被測(cè)量的值。第二部分系統(tǒng)設(shè)計(jì)一、設(shè)計(jì)思路根據(jù)題目要求,程序需要實(shí)現(xiàn)以下幾個(gè)功能:1、可以通過LED顯示電壓值。2、可以通過鍵盤控制當(dāng)前顯示何路電壓。。3、對(duì)采集來的電壓值進(jìn)行閾值判斷,在超出范圍的情況下啟動(dòng)相應(yīng)的報(bào)警程序。4、可以實(shí)時(shí)監(jiān)控電壓的變化。有以上幾種功能,可以知道程序中需要包括以下幾個(gè)子程序及對(duì)應(yīng)的功能:1、A/D轉(zhuǎn)換子程序,對(duì)四路模擬電壓作循環(huán)轉(zhuǎn)換。2、閾值判斷子程序,分別對(duì)四路電壓進(jìn)行對(duì)應(yīng)的閾值判斷。3、報(bào)警子程序,當(dāng)輸入電壓超出閾值范圍時(shí)調(diào)用此程序,使程序可以輸出不同的報(bào)警信號(hào)。4、顯示通道選擇子程序,用于判斷當(dāng)前需要顯示何路電壓值。5、電壓值轉(zhuǎn)換至顯示用BCD碼子程序,用于將A/D轉(zhuǎn)換所得的電壓值轉(zhuǎn)換所得的電壓值轉(zhuǎn)換為對(duì)應(yīng)BCD碼,以使得LED顯示的電壓值更直觀。6、顯示子程序,用于將轉(zhuǎn)換后的BCD碼在LED上顯示出來,同時(shí)顯示所選擇的通道數(shù)。根據(jù)程序設(shè)計(jì)思路,可知需要用到的器件除8051外,還需要用A/D轉(zhuǎn)換器件AD0809,可編程鍵盤顯示接口HD7279,小鍵盤,LED數(shù)碼管,LED發(fā)光二極管,以及其它附屬器件。各器件間需要進(jìn)行I/O擴(kuò)展及硬件的聯(lián)接。二、硬件系統(tǒng)框圖系統(tǒng)核心是89C51與ADC0809組成的數(shù)據(jù)采集系統(tǒng),外部控制輸入與顯示主要是通過HD7279來與8051進(jìn)行數(shù)據(jù)的輸入與輸出,HD7279相當(dāng)于一個(gè)外部中斷,當(dāng)有鍵按下時(shí)。HD7279向CPU提出中斷,80C51響應(yīng)中斷,讀入鍵盤數(shù)據(jù),做出相應(yīng)的控制反應(yīng)。實(shí)現(xiàn)了鍵盤間接控制和向CPU輸入信號(hào)的目的。同時(shí)也會(huì)輸出顯示指令,讓HD7279控制各數(shù)碼管,從而得到所要的顯示。三、軟件系統(tǒng)組成框圖四、硬件原理圖(連線圖)注:P3.4接LED10作為高電平報(bào)燈,P3.5接LED9作為低電平報(bào)警燈。注:在實(shí)驗(yàn)之前,應(yīng)將8單元的U7(7406)和U6(74LS245)芯片取下,因7279已經(jīng)有直接驅(qū)動(dòng)數(shù)碼管的能力,如果另外放置驅(qū)動(dòng)芯片,反而會(huì)影響數(shù)碼管的顯示效果。五、子程序設(shè)計(jì)與調(diào)試1、A/D轉(zhuǎn)換子程序(帶報(bào)警)[IN0]=1\*GB3①.相關(guān)知識(shí)模/數(shù)轉(zhuǎn)換器ADC0809的認(rèn)識(shí)雖然單片機(jī)可以對(duì)各種數(shù)字?jǐn)?shù)據(jù)做快速而精確的處理,但是人類在日常生活中所遇到的各種物理量(例如溫度、亮度、質(zhì)量)都是模擬的,因此若令單片機(jī)處理模擬信號(hào),必須將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)再送入單片機(jī)。A/D轉(zhuǎn)換器(analogtodigitalconverter)的功能是將輸入的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)輸出。本次課設(shè)采用ADC0809.8位A/D轉(zhuǎn)換器芯片ADC0809ADC0809是典型的8位8通道逐次逼近式A/D轉(zhuǎn)換器,采用CMOS工藝制造。ADC0809芯片為28引腳雙列直插式封裝,其引腳排列見下圖。(1)IN7~IN0:模擬量輸入通道。(2)ADDA、ADDB、ADDC:模擬通道地址線。(3)ALE:地址鎖存信號(hào)。(4)START:轉(zhuǎn)換啟動(dòng)信號(hào)。(5)D7~D0:數(shù)據(jù)輸出線。(6)OE:輸出允許信號(hào)。(7)CLK:時(shí)鐘信號(hào)。ADC0809的內(nèi)部邏輯結(jié)構(gòu)如下圖所示。=3\*GB3③.程序流程圖=4\*GB3④.程序調(diào)試及說明ADC0809是8位逐次逼近型A/D轉(zhuǎn)換器,帶8個(gè)模擬量輸入通道,芯片內(nèi)帶通道地址譯碼鎖存器,輸出帶三態(tài)數(shù)據(jù)鎖存器,啟動(dòng)信號(hào)為脈沖啟動(dòng)方式,每一通道的轉(zhuǎn)換大約100us。因此模擬量轉(zhuǎn)化為數(shù)字量不能馬上輸出,轉(zhuǎn)換過程要延時(shí)。如:delay(10)voiddelay(unsignedintt){unsignedinti;for(i=0;i<t;i++);}結(jié)果說明:模擬電壓值可以通過數(shù)字萬用表測(cè)出,然后與LED顯示經(jīng)轉(zhuǎn)換后的值做比較,誤差小于0.2伏即可。如果某一路電壓超過4伏,則顯示高報(bào)警(P3.4)如果某一路電壓低于1伏,則顯示低報(bào)警(P3.5)。2、鍵盤顯示子程序=1\*GB3①.相關(guān)知識(shí)=2\*GB3②.電路原理圖=3\*GB3③.程序結(jié)果說明初始顯示為;按下“1”時(shí),顯示;按下“2”時(shí),顯示;按下“3”時(shí),顯示;按下“4”時(shí),顯示;按下“5”時(shí),顯示;按下“6”時(shí),顯示;按下“7”時(shí),顯示;按下“8”時(shí),顯示;按下“9”時(shí),顯示;按下“0”時(shí),顯示;=4\*GB3④.程序流程圖五、總程序1、程序軟件流程圖2、總程序調(diào)試及說明數(shù)碼顯示不能實(shí)時(shí)跟隨模擬電壓的變化,當(dāng)電壓改變時(shí),需要重新運(yùn)行程序才能顯示變化后的電壓值,解決辦法是改變主函數(shù)中程序的運(yùn)行方式,改為無條件的死循環(huán)。而鎖程序的死循環(huán)必需嵌套在主函數(shù)中的無條件的死循環(huán)內(nèi),只有這樣才能實(shí)現(xiàn)功能。程序運(yùn)行結(jié)果說明如下:按下1時(shí),顯示1通道、A、-及其電壓值;按下2時(shí),顯示2通道、b、-及其電壓值;按下3時(shí),顯示3通道、C、-及其電壓值;按下4時(shí),顯示4通道、d、-及其電壓值;按下0時(shí),鎖程序;按下#時(shí),解鎖程序,并保持上一個(gè)按鍵狀態(tài);如果電壓值超過4伏特,則LED10亮;如果電壓值低于1伏特,則LED9亮;改變輸入電壓的值,電壓顯示能實(shí)時(shí)跟蹤輸入電壓的值而變化,并在LED上顯示。第三部分收獲、體會(huì)及改進(jìn)建議通過本次的單片機(jī)課程設(shè)計(jì),使我們第一次把硬件與軟件結(jié)合起來開發(fā)一個(gè)完整的系統(tǒng),不但把書本上的理論知識(shí)與實(shí)際操作相結(jié)合,而且也提高了我們的動(dòng)手能力,是一次非常好的寶貴的鍛煉機(jī)會(huì)。本次課程設(shè)計(jì),使我對(duì)單片機(jī)系統(tǒng)有了更深的了解,并能將所學(xué)到的知識(shí)用于實(shí)踐,靈活應(yīng)用單片機(jī)中斷,包括定時(shí)器中斷和外部中斷。對(duì)A/D轉(zhuǎn)換的應(yīng)用——ADC0809芯片,以及HD7279控制鍵盤的顯示,基本掌握并熟悉。對(duì)于單片機(jī)學(xué)習(xí)的收獲與體會(huì)具體如下:1.在程序設(shè)計(jì)之前,要對(duì)所用單片機(jī)的內(nèi)部結(jié)構(gòu)有一個(gè)系統(tǒng)的了解,知道該單片機(jī)片內(nèi)有哪些資源及其能實(shí)現(xiàn)的功能。2.設(shè)計(jì)程序采要有一個(gè)清晰的思路和一個(gè)完整的軟件流程圖.3.設(shè)計(jì)程序時(shí),不能企圖一次就將整個(gè)程序設(shè)計(jì)好,“由子程序到總程序,反復(fù)修改,不斷改進(jìn)"是程序設(shè)計(jì)的必經(jīng)之路.采用子程序設(shè)計(jì),可以使程序有條理,簡(jiǎn)潔清楚。4.要養(yǎng)成注釋程序的好習(xí)慣,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,還應(yīng)該直觀,便于理解,同時(shí)也為資料的保存和交流提供了方便.5.在設(shè)計(jì)程序過程中會(huì)遇到很多問題,我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。建議如下:該系統(tǒng)是對(duì)四路模擬電壓進(jìn)行采樣監(jiān)控,如果要是硬件條件允許的條件下,可在此基礎(chǔ)上擴(kuò)展至八路模擬電壓的采樣監(jiān)控;還可以加入變閾值電壓的子程序及循環(huán)顯示四路模擬電壓值的子程序;還有當(dāng)高報(bào)警時(shí),將數(shù)據(jù)鎖存一定時(shí)間讓人們知道便于采取防備措施;在顯示上也可以采用hd61202液晶顯示。第四部分參考書目一、《單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)》馬忠梅、籍順心、張凱、馬巖編著北京航空航天大學(xué)出版社二、《單片機(jī)C語言編程與實(shí)例》趙亮、侯國銳著人民郵電出版社三、《C程序設(shè)計(jì)》譚浩強(qiáng)著清華大學(xué)出版社附錄:1、A/D轉(zhuǎn)換子程序(帶報(bào)警)[IN0]#include<reg51.h>#include<absacc.h>unsignedcharchADData[20];unsignedcharADC(unsignedcharchannel);voidAD();voiddelay(unsignedintt);voidinit();sbitP3_4=P3^4;sbitP3_5=P3^5;unsignedinttimecount=0;unsignedcharxdata*pADAdrr;voidtime0int();main(){init();AD();}voidAD(){inti;do{for(i=0;i<1;i++){chADData[i]=ADC(i); P1=chADData[i];if(chADData[i]>0xcc)P3_4=0;elseP3_4=1;if(chADData[i]<0x33)P3_5=0;elseP3_5=1;}}while(1);}voidinit(){TMOD=0x01;TH0=0x3C;TL0=0xB0;ET0=1;TR0=1;EA=1;}voidtime0int()interrupt1using1{TH0=0x3C;TL0=0xB0;timecount++;}unsignedcharADC(unsignedcharchannel){unsignedcharchADResult;pADAdrr=0x0800+channel;*pADAdrr=0;delay(10);chADResult=*pADAdrr;return(chADResult);}voiddelay(unsignedintt){unsignedinti;for(i=0;i<t;i++);}2、鍵盤顯示子程序#include<reg51.h>#defineCMD_RESET0xa4#defineCMD_TEST0xbf#defineDECODE00x80#defineDECODE10xc8#defineCMD_READ0x15#defineUNDECODE0x90#defineRTL_CYCLE0xa3#defineRTR_CYCLE0xa2#defineRTL_UNCYL0xa1#defineRTR_UNCYL0xa0#defineACTCTL0x98#defineSEGON0xe0#defineSEGOFF0xc0#defineBLINKCTL0x88voidinit();voidkeyint();voidlong_delay(void);voidshort_delay(void);voidwrite7279(unsignedcharcmd,unsignedchardta);unsignedcharread7279(unsignedcharcommand);voidsend_byte(unsignedcharout_byte);unsignedcharreceive_byte(void);voiddisplay();//***I/O***sbitcs=P1^0;sbitdat=P1^1;sbitclk=P1^2;sbitkey=P3^2;//******HD7279A******unsignedcharchKey;bitbNewKey;unsignedchardispdata[6]={7,8,0,0,0,0};main(){unsignedchari;bitbt; bt=dat;init();bNewKey=0; display(); while(1) { if(bNewKey) { for(i=0;i<6;i++) { dispdata[i]=chKey; } display(); bNewKey=0; } }}voidinit(){ PX0=0;/*外部中斷0優(yōu)先級(jí)*/ IT0=0;/*外部中斷0,低電平觸發(fā)*/ IE0=0;/*外部中斷0中斷申請(qǐng)標(biāo)志位*/ EX0=1;/*允許外部中斷0*/ EA=1;send_byte(CMD_RESET);}//1:0x04;2:0x05;3:0x06;4:0x0c;5:0x0d;6:0x0e;7:0x14;8:0x15;9:0x0x16;*:0x1c;0:0x1d;#:0x1evoidkeyint()interrupt0using1{ unsignedchartemp;temp=read7279(0x15); switch(temp) { case0x04: chKey=3; break; case0x05: chKey=2; break; case0x06: chKey=1; break; case0x0c: chKey=6; break;case0x0d: chKey=5; break; case0x0e: chKey=4; break; case0x14: chKey=9; break; case0x15: chKey=8; break; case0x16: chKey=7; break; case0x1d: chKey=0; break; case0x1c: chKey=10; break; case0x1e: chKey=11; break; }bNewKey=1;}voiddisplay(){unsignedcharj; for(j=0;j<6;j++) { write7279((0x80+j),dispdata[j]); }}voidsend_byte(unsignedcharout_byte){unsignedchari;//EA=0; clk=0;long_delay();for(i=0;i<8;i++){if(out_byte&0x80){dat=1;}else{dat=0;}clk=1;short_delay();clk=0;short_delay();out_byte=out_byte*2;}dat=0;//EA=1;}unsignedcharreceive_byte(void){unsignedchari,in_byte;dat=1;//long_delay();for(i=0;i<8;i++){clk=1;short_delay();in_byte=in_byte*2;if(dat){in_byte=in_byte|0x01;}clk=0;short_delay();}dat=0;return(in_byte);}voidlong_delay(void){unsignedchari;for(i=0;i<0x30;i++);}voidshort_delay(void){unsignedchari;for(i=0;i<8;i++);}voidwrite7279(unsignedcharcmd,unsignedchardta){cs=0; long_delay();send_byte(cmd);send_byte(dta); cs=1;}unsignedcharread7279(unsignedcharcommand){cs=0;send_byte(command);return(receive_byte()); cs=1;}3、總程序及注釋#include<reg51.h>#include<absacc.h>//絕對(duì)地址訪問頭文件unsignedcharchADData[8];//存放轉(zhuǎn)換結(jié)果的數(shù)組unsignedcharADC(unsignedcharchannel);//轉(zhuǎn)換程序voidAD();//開啟轉(zhuǎn)換及報(bào)警程序voiddelay(unsignedintt);//短延時(shí)程序unsignedcharxdata*pADAdrr;#defineCMD_RESET0xa4//復(fù)位命令#defineCMD_TEST0xbf//測(cè)試命令#defineDECODE00x80//譯碼方式0#defineDECODE10xc8//譯碼方式1#defineCMD_READ0x15//讀鍵盤命令#defineUNDECODE0x90//非譯碼方式#defineRTL_CYCLE0xa3//循環(huán)左移#defineRTR_CYCLE0xa2//循環(huán)右移#defineRTL_UNCYL0xa1//左移#defineRTR_UNCYL0xa0 //右移#defineACTCTL0x98//消隱控制#defineSEGON0xe0//段點(diǎn)亮#defineSEGOFF0xc0//段關(guān)閉#defineBLINKCTL0x88//閃爍控制voidinit();//初始化程序voidkeyint();//鍵盤中斷服務(wù)程序voidlong_delay(void);//長延時(shí)程序voidshort_delay(void);//短延時(shí)程序voidwrite7279(unsignedcharcmd,unsignedchardta);//往HD7279A中寫命令unsignedcharread7279(unsignedcharcommand);//從HD7279A中讀鍵值voidsend_byte(unsignedcharout_byte);//往HD7279A中寫入一個(gè)字節(jié)unsignedcharreceive_byte(void);//從HD7279A中讀出一個(gè)字節(jié)voiddisplay();//顯示程序voiddispcode(unsignedcharchData);//形成顯示代碼//***I/O***sbitcs=P1^0;//片選信號(hào)接P1.0sbitdat=P1^1;//DATA信號(hào)接P1.1sbitclk=P1^2;//CLK信號(hào)接P1.2sbitkey=P3^2;//鍵盤中斷信號(hào)接P3.2sbitP3_4=P3^4;sbitP3_5=P3^5;//******HD7279A******unsignedintchtemp[6]={0,0,0,0,0,0},chKey,keep,in;unsignedchardispdata[6];main(){unsignedchari;init();display(); while(1) { AD();while(in){};//死循環(huán)switch(chKey) { case1: chtemp[5]=chKey;chtemp[4]=0x0a;//顯示A(譯碼方式1) chtemp[3]=0x0a;//顯示-(譯碼方式0)dispcode(chADData[0]); break;case2:chtemp[5]=chKey;chtemp[4]=0x0b;//顯示b chtemp[3]=0x0a; dispcode(chADData[1]); break; case3:chtemp[5]=chKey;chtemp[4]=0x0c;//顯示C chtemp[3]=0x0a; dispcode(chADData[2]); break; case4:chtemp[5]=chKey;chtemp[4]=0x0d;//顯示d chtemp[3]=0x0a; dispcode(chADData[3]); break; }for(i=0;i<6;i++)//在顯示器中顯示出鍵值 { dispdata[i]=chtemp[i]; } display();//顯示}}voidinit(){ PX0=0;/*外部中斷0優(yōu)先級(jí)*/ IT0=0;/*外部中斷0,低電平觸發(fā)*/ IE0=0;/*外部中斷0中斷申請(qǐng)標(biāo)志位*/ EX0=1;/*允許外部中斷0*/ EA=1;/*開總中斷*/send_byte(CMD_RESET);//HD7279A復(fù)位}//顯示程序voiddisplay(){unsignedcharj; for(j=0;j<6;j++) { if((j<3||j==4)||(j==5))write7279((0xc8+j),dispdata[j]);//譯碼方式1 elsewrite7279((0x80+j),dispdata[j]);//譯碼方式0 }}//1:0x06;2:0x05;3:0x04;4:0x0e;5:0x0d;6:0x0c;7:0x16;8:0x15;9:0x14;*:0x1e;0:0x1d;#:0x1cvoidkeyint()interrupt0using1{ unsignedchartemp;temp=read7279(0x15); //讀出鍵值 switch(temp){ case0x06: chKey=1; break;case0x05: chKey=2; break; case0x04: chKey=3; break; case0x0e: chKey=4; break;case0x1d://鎖 in=1; keep=chKey; break;case0x1c: in=0;//解鎖 chKey=keep;//保持上一個(gè)按鍵狀態(tài) break;}}//顯示一個(gè)3位數(shù),將8位數(shù)據(jù)轉(zhuǎn)換成AD采樣電壓值顯示出來。參數(shù)為AD采樣值voiddispcode(unsignedcharchData){unsignedintnTemp,t;floatfAdreault;fAdreault=((float)chData/255)*5;//將AD采樣值轉(zhuǎn)換成對(duì)應(yīng)的電壓值nTemp=fAdreault*100;//先轉(zhuǎn)換成整數(shù),變成0~500之間chtemp[2]=nTemp/100|0x80;//得到百位數(shù)t=nTemp/100;chtemp[1]=(nTemp-t*100)/10;//得到十位數(shù)chtemp[0]=nTemp-t*100-chtemp[1]*10;//得到個(gè)位數(shù)}//往HD7279A中寫入一個(gè)字節(jié).voidsend_byte(unsignedcharout_byte){unsignedchari;//EA=0;clk=0;//CLK變低電平long_delay();for(i=0;i<8;i++){if(out_byte&0x80)//得到要輸出的數(shù)據(jù)位,高位在先{dat=1;}else{dat=0;}clk=1;//CLK變高電平,這一位寫入HD7279A寄存器short_delay();//延時(shí)clk=0;//CLK變低,為下一次寫入數(shù)據(jù)作準(zhǔn)備short_delay();//延時(shí)out_byte=out_byte*2;//數(shù)據(jù)左移一位}dat=0;//EA=1;}//從HD7279A中讀出一個(gè)字節(jié).unsignedcharreceive_byte(void){unsignedchari,in_byte; unsignedcharintemp;dat=1;//DATA=1;單片機(jī)要讀入引腳狀態(tài)先輸出1。long_delay();for(i=0;i<8;i++){clk=1;//時(shí)鐘CLK變高電平,它變成高電平以后,HD7279延時(shí)T6才輸出數(shù)據(jù)short_delay();in_byte=in_byte*2;//讀入數(shù)據(jù)左移一位,因?yàn)槭歉呶幌瘸? intemp=P1; dat=(intemp&0x04);if(dat)//讀DATA引腳的狀態(tài){in_byte=in_byte|0x01;//讀入數(shù)據(jù),數(shù)據(jù)引腳接在P1.0}clk=0;//CLK變低電平short_delay();//延時(shí)T7}dat=0;return(in_byte);//返回鍵值}voidlong_delay(void){unsignedchari;for(i=0;i<0x30;i++);}voidshort_delay(void){unsignedchari;for(i=0;i<8;i++);}//往HD7279A中寫入一個(gè)雙字節(jié)命令voidwrite7279(unsignedcharcmd,unsignedchardta){cs=0; long_delay();send_byte(cmd);//寫入命令send_byte(dta);//寫入數(shù)據(jù) cs=1;}//從HD7279A中讀出鍵值。unsignedcharread7279(unsignedcharcommand){cs=0;send_byte(command);//寫入命令return(receive_byte());//讀取鍵值 cs=1;}//******voidAD(){switch(chKey){case1:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論