版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、教學(xué)導(dǎo)航教學(xué)導(dǎo)航任務(wù)單任務(wù)單任務(wù)準(zhǔn)備任務(wù)準(zhǔn)備案例示范案例示范知識(shí)梳理與總結(jié)知識(shí)梳理與總結(jié)任務(wù)作業(yè)任務(wù)作業(yè)綜合實(shí)訓(xùn)綜合實(shí)訓(xùn)教教知識(shí)重點(diǎn)(1)1602字符型LCM與單片機(jī)的連接;(2)鍵盤工作原理及接口電路;(3)A/D、D/A轉(zhuǎn)換接口的結(jié)構(gòu)及其接口技術(shù);(4)數(shù)字溫度傳感器的操作使用。知識(shí)難點(diǎn)DAC0832與單片機(jī)接口技術(shù);DS18B20的操作使用推薦教學(xué)方式以任務(wù)入手,通過溫度報(bào)警器的設(shè)計(jì)與制作,讓讀者掌握LCD顯示技術(shù)、鍵盤接口技術(shù)、A/D和D/A轉(zhuǎn)換技術(shù)、溫度檢測控制技術(shù)等,并進(jìn)一步掌握單片機(jī)控制系統(tǒng)的設(shè)計(jì)方法與技巧。建議學(xué)時(shí)16學(xué)時(shí)學(xué)學(xué)推薦學(xué)習(xí)方法通過利用Proteus設(shè)計(jì)硬件電路,編寫
2、溫度報(bào)警器的預(yù)置溫度顯示、檢測與控制程序,掌握單片機(jī)控制系統(tǒng)的設(shè)計(jì)及硬件電路制作方法。必須掌握的理論知識(shí)(1)1602字符型LCM與單片機(jī)的連接方法;(2)鍵盤接口電路及抖動(dòng)消除方法; (3)ADC0809、DAC0832的結(jié)構(gòu)及接口技術(shù);(4)DS18B20的結(jié)構(gòu)與操作應(yīng)用。必須掌握的技能學(xué)會(huì)單片機(jī)控制系統(tǒng)各主要模塊的功能、系統(tǒng)程序設(shè)計(jì)、硬件電路制作、系統(tǒng)仿真調(diào)試方法。任任務(wù)務(wù)描描述述設(shè)計(jì)并制作完整的溫度報(bào)警器,為溫度報(bào)警器預(yù)先設(shè)置一個(gè)最低溫度和最高溫度,要能定時(shí)檢測環(huán)境溫度,當(dāng)環(huán)境溫度低于預(yù)置的最低溫度時(shí)發(fā)出低溫報(bào)警聲,并使一個(gè)黃燈閃爍;當(dāng)環(huán)境溫度高于預(yù)置的最高溫度時(shí),發(fā)出高溫報(bào)警聲并使用
3、一個(gè)紅燈閃爍。 任任務(wù)務(wù)要要求求(1)設(shè)計(jì)溫度報(bào)警器完整的硬件電路;(2)根據(jù)硬件電路編寫溫度報(bào)警器的程序,利用Proteus進(jìn)行仿真調(diào)試。實(shí)實(shí)現(xiàn)現(xiàn)方方法法(1)設(shè)計(jì)完整的硬件電路圖;(2)根據(jù)電路圖編寫程序;(3)利用Proteus對設(shè)計(jì)的硬件電路和程序進(jìn)行仿真調(diào)試;(4)繪制電路板圖,制作硬件電路板、焊接元件;(5)固化程序,進(jìn)行硬件調(diào)試,再通電運(yùn)行。8.1 8.1 液晶顯示器顯示液晶顯示器顯示8.2 8.2 鍵盤與單片機(jī)的連接鍵盤與單片機(jī)的連接8.3 A/D8.3 A/D接口技術(shù)接口技術(shù)8.4 D/A8.4 D/A接口技術(shù)接口技術(shù)8.5 8.5 數(shù)字溫度傳感器數(shù)字溫度傳感器 LCD(Li
4、quid Crystal Display)是液晶顯示器的縮寫,液晶顯示器是一種被動(dòng)式的顯示器,即液晶本身并不發(fā)光,而是利用液晶經(jīng)過處理后能改變光線通過方向的特性,而達(dá)到白底黑字或黑底白字顯示的目的。液晶顯示器具有功耗低、抗干擾能力強(qiáng)等優(yōu)點(diǎn),因此被廣泛應(yīng)用。例如我們在手機(jī)、BP機(jī)、筆記本電腦和計(jì)算器上看到的都是液晶顯示屏幕。由于LCD的控制必須使用專用的驅(qū)動(dòng)電路,且LCD面板的接線需要采用特殊技巧,再加上LCD面板十分脆弱,因此一般不會(huì)單獨(dú)使用,而是將LCD面板、驅(qū)動(dòng)與控制電路組合成LCM模塊(Liquid Crystal Display Mould,LCM)一起使用。 LCM的種類繁多,可以根
5、據(jù)不同的場合、不同的需要選擇不同類型的LCM,本書主要介紹1602字符型LCM(即兩行顯示,每行可顯示16個(gè)字符)。1 1字符型字符型LCMLCM的特性的特性(1 1)具有字符發(fā)生器)具有字符發(fā)生器ROM (Character Generate ROM (Character Generate ROM, CG ROM)ROM, CG ROM),可顯示,可顯示192192個(gè)個(gè)5 57 7點(diǎn)陣字符,點(diǎn)陣字符,LCMLCM顯顯示的數(shù)字和字母部分的碼值,剛好與示的數(shù)字和字母部分的碼值,剛好與ACSIIACSII碼表中的碼表中的數(shù)字和字母相同,所以在需要顯示數(shù)字和字母時(shí),數(shù)字和字母相同,所以在需要顯示數(shù)字
6、和字母時(shí),只需要向只需要向LCMLCM送入送入ASCIIASCII碼即可。碼即可。(2 2)具有)具有64B64B的自定義字符的自定義字符RAM (Character RAM (Character Generate RAM, CG RAM)Generate RAM, CG RAM),可自行定義,可自行定義8 8個(gè)個(gè)5 57 7點(diǎn)陣點(diǎn)陣字符。字符。(3 3)具有)具有80B80B的數(shù)據(jù)顯示存儲(chǔ)器(的數(shù)據(jù)顯示存儲(chǔ)器(Data Display Data Display RAMRAM,DD RAMDD RAM)。)。 字符型字符型LCMLCM通常有通常有1616個(gè)引腳,也有個(gè)引腳,也有1414個(gè)引腳,
7、當(dāng)選用個(gè)引腳,當(dāng)選用1414個(gè)引腳個(gè)引腳的的LCMLCM時(shí),該時(shí),該LCMLCM沒有背光。沒有背光。1 1直接訪問方式連接直接訪問方式連接 該連接是由單片機(jī)的讀(該連接是由單片機(jī)的讀(RDRD引腳)、寫(引腳)、寫(WRWR引引腳)和高位地址線共同控制腳)和高位地址線共同控制LCMLCM的的E E端,由高位地址端,由高位地址線其中的兩條分別與線其中的兩條分別與RSRS端和端和R/WR/W端相連,由單片機(jī)的端相連,由單片機(jī)的P0P0口口LCMLCM的的DB0-DB7DB0-DB7相連這樣就構(gòu)成了三總線(數(shù)相連這樣就構(gòu)成了三總線(數(shù)據(jù)據(jù)DBDB、地址總線、地址總線ABAB和控制總線和控制總線CBC
8、B)的連接方式,如)的連接方式,如圖所示。由于構(gòu)成了三總線的結(jié)構(gòu),所以在軟件控圖所示。由于構(gòu)成了三總線的結(jié)構(gòu),所以在軟件控制上比較簡單,用通過訪問外部地址的方式就能訪制上比較簡單,用通過訪問外部地址的方式就能訪問問LCMLCM。但是,在使用這種連接方式時(shí)需要注意單片。但是,在使用這種連接方式時(shí)需要注意單片機(jī)的控制總線時(shí)序和地址總線時(shí)序必須要與機(jī)的控制總線時(shí)序和地址總線時(shí)序必須要與LCMLCM所需所需要的時(shí)序相匹配,否則將無法訪問。要的時(shí)序相匹配,否則將無法訪問。 是利用是利用HD44780HD44780所具有的所具有的4 4位數(shù)據(jù)總線的功能,簡化位數(shù)據(jù)總線的功能,簡化電路接口的一種連接方式,如
9、圖電路接口的一種連接方式,如圖8-28-2所示。直接訪問所示。直接訪問方式連接電路中需要增加與非門和反相器,從原理方式連接電路中需要增加與非門和反相器,從原理圖上看很簡單,但在實(shí)際焊接時(shí),增加兩個(gè)器件就圖上看很簡單,但在實(shí)際焊接時(shí),增加兩個(gè)器件就增加了很多麻煩,另外增加器件也意味著增加了故增加了很多麻煩,另外增加器件也意味著增加了故障點(diǎn),所以在實(shí)際使用時(shí)并不采用此電路。在圖中障點(diǎn),所以在實(shí)際使用時(shí)并不采用此電路。在圖中,省去了,省去了4 4位數(shù)據(jù)線,電路連接十分簡單,也沒有多位數(shù)據(jù)線,電路連接十分簡單,也沒有多余的器件,對于參加比賽來說非常方便。余的器件,對于參加比賽來說非常方便。但是由于但是
10、由于LCMLCM本身為速度較慢的器件,每一次數(shù)據(jù)傳本身為速度較慢的器件,每一次數(shù)據(jù)傳輸大概需要幾十微秒至幾毫秒的時(shí)間,如果采用間輸大概需要幾十微秒至幾毫秒的時(shí)間,如果采用間接控制方式訪問,每傳送一個(gè)字節(jié)的數(shù)據(jù)需要訪問接控制方式訪問,每傳送一個(gè)字節(jié)的數(shù)據(jù)需要訪問兩次兩次LCMLCM,這將占用大量的時(shí)間,使,這將占用大量的時(shí)間,使CPUCPU變得很繁忙變得很繁忙,甚至影響,甚至影響CPUCPU處理其他數(shù)據(jù)的傳輸速度。所以在實(shí)處理其他數(shù)據(jù)的傳輸速度。所以在實(shí)際的硬件電路連接中常采用如圖際的硬件電路連接中常采用如圖8-38-3所示的電路。采所示的電路。采用這種連接方式不能構(gòu)成三總線的結(jié)構(gòu),所以不能用這
11、種連接方式不能構(gòu)成三總線的結(jié)構(gòu),所以不能通過地址的形式直接訪問,而是需要按照通過地址的形式直接訪問,而是需要按照LCMLCM的方式的方式進(jìn)行數(shù)據(jù)的傳輸,同時(shí)由于數(shù)據(jù)總線使用了進(jìn)行數(shù)據(jù)的傳輸,同時(shí)由于數(shù)據(jù)總線使用了8 8條,所條,所以在數(shù)據(jù)傳輸?shù)臅r(shí)間上與直接訪問的時(shí)間相同,速以在數(shù)據(jù)傳輸?shù)臅r(shí)間上與直接訪問的時(shí)間相同,速度較間接控制方式提高了一倍,縮短了度較間接控制方式提高了一倍,縮短了CPUCPU對對LCMLCM的的訪問時(shí)間。訪問時(shí)間。 (1 1)對)對LCMLCM操作主要是操作主要是4 4種基本操作:寫命令、寫數(shù)據(jù)、讀狀態(tài)和讀數(shù)種基本操作:寫命令、寫數(shù)據(jù)、讀狀態(tài)和讀數(shù)據(jù)。據(jù)。 (2 2)在進(jìn)行
12、寫命令、寫數(shù)據(jù)和讀數(shù)據(jù)三種操作之前,必須先查詢忙標(biāo))在進(jìn)行寫命令、寫數(shù)據(jù)和讀數(shù)據(jù)三種操作之前,必須先查詢忙標(biāo)志,當(dāng)忙狀態(tài)志,當(dāng)忙狀態(tài)BFBF為為0 0時(shí),才能進(jìn)行這三種操作。時(shí),才能進(jìn)行這三種操作。 (3 3)LCMLCM上電時(shí),都必須按照一定時(shí)序?qū)ι想姇r(shí),都必須按照一定時(shí)序?qū)CMLCM進(jìn)行初始化操作,主要分進(jìn)行初始化操作,主要分以下四步:以下四步: 設(shè)置設(shè)置LCMLCM工作方式工作方式 設(shè)置顯示狀態(tài)設(shè)置顯示狀態(tài) 清屏:將光標(biāo)設(shè)置為第清屏:將光標(biāo)設(shè)置為第1 1行第行第1 1列列 設(shè)置輸入方式:設(shè)置光標(biāo)移動(dòng)方向并確定整體顯示是否移動(dòng)設(shè)置輸入方式:設(shè)置光標(biāo)移動(dòng)方向并確定整體顯示是否移動(dòng) (4 4
13、)當(dāng)寫一個(gè)顯示字符后,如果沒有再給光標(biāo)重新定位,則)當(dāng)寫一個(gè)顯示字符后,如果沒有再給光標(biāo)重新定位,則DDRAMDDRAM地址地址會(huì)自動(dòng)加會(huì)自動(dòng)加1 1或減或減1 1。 (5 5)對)對LCMLCM的讀寫操作必須符合讀寫操作時(shí)序,并要有一定的延時(shí)。的讀寫操作必須符合讀寫操作時(shí)序,并要有一定的延時(shí)。 讀操作時(shí),先設(shè)置讀操作時(shí),先設(shè)置RSRS和和R/WR/W狀態(tài),再設(shè)置狀態(tài),再設(shè)置E E信號為高,這時(shí)從數(shù)據(jù)信號為高,這時(shí)從數(shù)據(jù)口讀取數(shù)據(jù),然后將口讀取數(shù)據(jù),然后將E E信號置低。信號置低。 寫操作時(shí),先設(shè)置寫操作時(shí),先設(shè)置RSRS和和R/WR/W狀態(tài),再設(shè)置數(shù)據(jù),然后產(chǎn)生狀態(tài),再設(shè)置數(shù)據(jù),然后產(chǎn)生E
14、E的脈沖的脈沖利用基于利用基于HD44780HD44780控制芯片的控制芯片的16021602液晶顯示兩行字符液晶顯示兩行字符“Welcome you!”Welcome you!”和和“Guang ZhouGuang Zhou,2010” 2010” 。/液晶控制與顯示程序液晶控制與顯示程序#includeunsigned char count;sbit rs=P20;sbit rw=P21;sbit en=P22;void delay(unsigned int dely) unsigned char dely1; for(;dely0;dely-) for(dely1=10;dely10;d
15、ely1-);/液晶顯示器判忙函數(shù)unsigned char busy() unsigned char lcd_status; rs=0; /寄存器選擇 rw=1; /讀狀態(tài)寄存器 en=1; /開始讀 delay(100); lcd_status=P0;en=0; return lcd_status; /向液晶顯示器寫命令函數(shù)向液晶顯示器寫命令函數(shù)void WR_Com(unsigned char temp) /忙等待忙等待 while(busy()&0 x80)=0 x80); rs=0; /選擇命令寄存器選擇命令寄存器 rw=0; /寫寫 P0=temp; en=1;en=0;/向液晶顯
16、示器寫數(shù)據(jù)函數(shù)向液晶顯示器寫數(shù)據(jù)函數(shù)void WR_Data(unsigned char dat) while(busy()&0 x80)=0 x80); /向液晶顯示器寫數(shù)據(jù)向液晶顯示器寫數(shù)據(jù) rs=1; rw=0; P0=dat; en=1;en=0;/向液晶顯示器寫入顯示數(shù)據(jù)函數(shù)向液晶顯示器寫入顯示數(shù)據(jù)函數(shù)/入口條件:液晶顯示器行首地址(指示第一行還是第二行)入口條件:液晶顯示器行首地址(指示第一行還是第二行)和待顯示數(shù)組的首地址和待顯示數(shù)組的首地址void disp_lcd(unsigned char addr,unsigned char *pstr) unsigned char i;
17、 WR_Com(addr); delay(100); for(i=0;istrlen(addr) i=0;delay(10000);兩個(gè)兩個(gè)LEDLED數(shù)碼管用于顯示人工設(shè)置的希望環(huán)境溫度值(數(shù)碼管用于顯示人工設(shè)置的希望環(huán)境溫度值(簡稱預(yù)置溫度),當(dāng)實(shí)際環(huán)境溫度高于該預(yù)置溫度,簡稱預(yù)置溫度),當(dāng)實(shí)際環(huán)境溫度高于該預(yù)置溫度,則啟動(dòng)壓縮機(jī)。兩個(gè)則啟動(dòng)壓縮機(jī)。兩個(gè)LEDLED數(shù)碼管段選線分別連接到數(shù)碼管段選線分別連接到80C5180C51的的P1P1上,即兩位預(yù)置溫度的顯示是通過將預(yù)置溫上,即兩位預(yù)置溫度的顯示是通過將預(yù)置溫度十位、個(gè)位數(shù)字度十位、個(gè)位數(shù)字BCDBCD碼分別由碼分別由P1P1送入送入
18、LEDLED數(shù)碼管來實(shí)數(shù)碼管來實(shí)現(xiàn)?,F(xiàn)。 #includeunsigned char temp=30;main( ) unsigned char t10,t; t10=temp/10;t=temp%10; P0=(t104)|(t&0 x0f); while(1); 本任務(wù)的任務(wù)準(zhǔn)備專門介紹了液晶顯示器顯示,空本任務(wù)的任務(wù)準(zhǔn)備專門介紹了液晶顯示器顯示,空調(diào)制冷控制系統(tǒng)也可以使用液晶顯示預(yù)置溫度和當(dāng)調(diào)制冷控制系統(tǒng)也可以使用液晶顯示預(yù)置溫度和當(dāng)前環(huán)境溫度,如果本案例改用液晶顯示預(yù)置溫度,前環(huán)境溫度,如果本案例改用液晶顯示預(yù)置溫度,將如何修改程序?將如何修改程序?電路圖仍可采用圖電路圖仍可采用圖8-
19、48-4的電路,假設(shè)預(yù)置溫度為的電路,假設(shè)預(yù)置溫度為3030度度,當(dāng)前環(huán)境溫度為,當(dāng)前環(huán)境溫度為3232度,則液晶顯示模塊度,則液晶顯示模塊lcd.clcd.c可不可不必修改(見例必修改(見例8-18-1),只需修改主程序),只需修改主程序main.cmain.c。 #includeunsigned char currT16=CurrentT:;unsigned char setT16=SetTemp:;unsigned char setTemp=30,currTemp=32;void lcd_init();void disp_lcd(unsigned char,unsigned char *
20、);void format_Data(unsigned char temp,unsigned char *stemp) /將溫度值轉(zhuǎn)換為字符串將溫度值轉(zhuǎn)換為字符串 stemp0 = temp / 10+0; /將十位數(shù)字轉(zhuǎn)換成將十位數(shù)字轉(zhuǎn)換成ASCII碼字符碼字符 stemp1 = temp % 10 +0; /將個(gè)位數(shù)字轉(zhuǎn)換成將個(gè)位數(shù)字轉(zhuǎn)換成ASCII碼字符碼字符void main() unsigned char stemp2; /一定要定義為數(shù)組,不能為指針一定要定義為數(shù)組,不能為指針,否則溫度顯示不了,否則溫度顯示不了 lcd_init(); format_Data(currTemp,s
21、temp); disp_lcd(0 x80,currT); disp_lcd(0 x8a,stemp); format_Data(setTemp,stemp); disp_lcd(0 xc0,setT); disp_lcd(0 xca,stemp); while(1);鍵盤是由若干按鍵組成的開關(guān)矩陣,它是微型計(jì)算鍵盤是由若干按鍵組成的開關(guān)矩陣,它是微型計(jì)算機(jī)最常用的輸入設(shè)備,用戶可以通過鍵盤向計(jì)算機(jī)機(jī)最常用的輸入設(shè)備,用戶可以通過鍵盤向計(jì)算機(jī)輸入指令、地址和數(shù)據(jù)。一般單片機(jī)系統(tǒng)中采用非輸入指令、地址和數(shù)據(jù)。一般單片機(jī)系統(tǒng)中采用非編碼鍵盤,非編碼鍵盤是由軟件來識(shí)別鍵盤上的閉編碼鍵盤,非編碼鍵盤是
22、由軟件來識(shí)別鍵盤上的閉合鍵,它具有結(jié)構(gòu)簡單,使用靈活等特點(diǎn),因此被合鍵,它具有結(jié)構(gòu)簡單,使用靈活等特點(diǎn),因此被廣泛應(yīng)用于單片機(jī)系統(tǒng)。廣泛應(yīng)用于單片機(jī)系統(tǒng)。組成鍵盤的按鍵有觸點(diǎn)式和非觸點(diǎn)式兩種,單片機(jī)組成鍵盤的按鍵有觸點(diǎn)式和非觸點(diǎn)式兩種,單片機(jī)中應(yīng)用的一般是由機(jī)械觸點(diǎn)構(gòu)成的。當(dāng)開關(guān)中應(yīng)用的一般是由機(jī)械觸點(diǎn)構(gòu)成的。當(dāng)開關(guān)S S斷開時(shí)斷開時(shí),P1.0P1.0輸入為高電平,輸入為高電平,S S閉合時(shí),閉合時(shí),P1.0P1.0輸入為低電平輸入為低電平。由于按鍵是機(jī)械觸點(diǎn),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí)。由于按鍵是機(jī)械觸點(diǎn),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),會(huì)有抖動(dòng)。,會(huì)有抖動(dòng)。 硬件方法:一般不常用。一般不常用。 軟件方
23、法:單片機(jī)設(shè)計(jì)中常用軟件法,軟件去除抖動(dòng)其實(shí)很單片機(jī)設(shè)計(jì)中常用軟件法,軟件去除抖動(dòng)其實(shí)很簡單,就是在單片機(jī)獲得簡單,就是在單片機(jī)獲得P1.0P1.0口為低的信息后,不是立即認(rèn)口為低的信息后,不是立即認(rèn)定定S S已被按下,而是延時(shí)已被按下,而是延時(shí)1010毫秒或更長一段時(shí)間后再次檢測毫秒或更長一段時(shí)間后再次檢測P1.0P1.0口,如果仍為低,說明口,如果仍為低,說明S S的確按下了,這實(shí)際上是避開的確按下了,這實(shí)際上是避開了按鍵按下時(shí)的抖動(dòng)時(shí)間。而在檢測到按鍵釋放后(了按鍵按下時(shí)的抖動(dòng)時(shí)間。而在檢測到按鍵釋放后(P1.0P1.0為為高),再延時(shí)高),再延時(shí)5 51010個(gè)毫秒,消除后沿的抖動(dòng),然
24、后再對鍵個(gè)毫秒,消除后沿的抖動(dòng),然后再對鍵值處理。值處理。將每個(gè)按鍵的一端接到單片將每個(gè)按鍵的一端接到單片機(jī)的機(jī)的I/OI/O口,另一端接地??冢硪欢私拥?。1、通過、通過I/O口連接口連接:如下圖所示,采用不斷查詢的方法,即檢測是否有鍵閉合,如如下圖所示,采用不斷查詢的方法,即檢測是否有鍵閉合,如有鍵閉合,則去除鍵抖動(dòng),判斷鍵號并轉(zhuǎn)入相應(yīng)的鍵處理。假有鍵閉合,則去除鍵抖動(dòng),判斷鍵號并轉(zhuǎn)入相應(yīng)的鍵處理。假設(shè)兩個(gè)鍵定義如下:設(shè)兩個(gè)鍵定義如下: P3.0P3.0:開始執(zhí)行某種操作:開始執(zhí)行某種操作(假設(shè)讓(假設(shè)讓8 8只發(fā)光二極管閃只發(fā)光二極管閃爍)爍) 。P3.1P3.1:停止執(zhí)行。:停止執(zhí)行。
25、void delay(unsigned char);bit key();void lsd(unsigned char);unsigned char vkey;bit start_end=0;void main()unsigned char ldata; while(1) if(key() if(vkey=1) start_end=1; else start_end=0;if(start_end) ldata=ldata; delay(250); else ldata=0 xff; P0=ldata;void delay(unsigned char t) unsigned char i,j; f
26、or(i=t;i0;i-) for(j=200;j0;j-);bit key() unsigned char temp; bit flag=0; temp=P3; temp=temp|0 xfc; temp=temp0 xff; if(temp=0) return flag; else delay(25); temp=P3|0 xfc;temp=temp0 xff;if(temp=0) return flag;else vkey=temp; flag=1; while(temp) temp=P3|0 xfc; temp=temp0 xff; return flag;各個(gè)按鍵都接到一各個(gè)按鍵都接
27、到一個(gè)與非門上,當(dāng)有個(gè)與非門上,當(dāng)有任何一個(gè)按鍵按下任何一個(gè)按鍵按下時(shí),都會(huì)使與門輸時(shí),都會(huì)使與門輸出為低電平,從而出為低電平,從而引起單片機(jī)的中斷引起單片機(jī)的中斷,它的好處是不用,它的好處是不用在主程序中不斷地在主程序中不斷地循環(huán)查詢,如果有循環(huán)查詢,如果有鍵按下,單片機(jī)再鍵按下,單片機(jī)再去做相應(yīng)的處理。去做相應(yīng)的處理。#includevoid delay(unsigned char);unsigned char flag;void main() IT0=1;EA=1;EX0=1; while(1) switch(flag) case 1:P0=0 x00;break; case 2:P0=
28、P0;delay(250);break; case 3:P0=0 xff;break; void delay(unsigned char t) unsigned char i,j; for(i=t;i0;i-) for(j=200;j0;j-); void isr_int0() interrupt 0 unsigned char kdata; kdata=P1;kdata=kdata0 xff; kdata=1; if(kdata!=0) kdata=1; if(kdata!=0) flag=3; else flag=2; else flag=1; 在鍵盤中按鍵數(shù)量較多時(shí),為了減少在鍵盤中按鍵
29、數(shù)量較多時(shí),為了減少I/OI/O口的占用口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1P1口)口)就可以構(gòu)成就可以構(gòu)成4 4* *4=164=16個(gè)按鍵,在需要的鍵數(shù)比較多時(shí)個(gè)按鍵,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。,采用矩陣法來做鍵盤是合理的。 1、矩陣式鍵盤的結(jié)構(gòu)、矩陣式鍵盤的結(jié)構(gòu)當(dāng)按鍵沒有按下時(shí),當(dāng)按鍵沒有按下時(shí),所有的輸入端都是高所有的輸入端都是高電平,代表
30、無鍵按下電平,代表無鍵按下。一旦有鍵按下,則。一旦有鍵按下,則輸入線就會(huì)被拉低,輸入線就會(huì)被拉低,這樣,通過讀入輸入這樣,通過讀入輸入線的狀態(tài)就可判斷是線的狀態(tài)就可判斷是否有鍵按下了。否有鍵按下了。 VCC 1 1)判斷鍵盤中有無鍵按下。將全部行線置低電平,)判斷鍵盤中有無鍵按下。將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4 4根行線相交叉的根行線相交叉的4 4個(gè)按鍵之中。若所有列線均為高電個(gè)按鍵之中。若所有列線均為高電平,則鍵盤中無
31、鍵按下。平,則鍵盤中無鍵按下。 2 2)判斷閉合鍵所在的位置。在確認(rèn)有鍵按下后,即)判斷閉合鍵所在的位置。在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。為低電平的行線交叉處的按鍵就是閉合的按鍵。 行掃描法識(shí)別按鍵的方
32、法就象在二維平面上找確行掃描法識(shí)別按鍵的方法就象在二維平面上找確定的點(diǎn),要在二維平面上找到確定的點(diǎn)。定的點(diǎn),要在二維平面上找到確定的點(diǎn)。確定這點(diǎn)的橫坐標(biāo):行線位置確定這點(diǎn)的橫坐標(biāo):行線位置確定它的縱坐標(biāo):列線位置確定它的縱坐標(biāo):列線位置公式:鍵值公式:鍵值= =行號行號列數(shù)列數(shù)+ +列號列號89S5189S51單片機(jī)的單片機(jī)的P1P1口用作鍵盤口用作鍵盤I/OI/O口,鍵盤的列線接口,鍵盤的列線接到到P1P1口的低口的低4 4位,鍵盤的行線接到位,鍵盤的行線接到P1P1口的高口的高4 4位。列位。列線線P1.0P1.0P1.3P1.3分別接有分別接有4 4個(gè)上拉電阻到正電源個(gè)上拉電阻到正電源+
33、5V+5V,并把列線并把列線P1.0P1.0P1.3P1.3設(shè)置為輸入線,行線設(shè)置為輸入線,行線P1.4P1.4P1.7P1.7設(shè)置為輸出線。設(shè)置為輸出線。4 4根行線和根行線和4 4根列線形成根列線形成1616個(gè)相個(gè)相交點(diǎn)。交點(diǎn)。(1 1)檢測當(dāng)前是否有鍵被按下:檢測的方法是)檢測當(dāng)前是否有鍵被按下:檢測的方法是P1.4P1.4P1.7P1.7輸出全輸出全“0”0”,讀取,讀取P1.0P1.0P1.3P1.3的狀的狀態(tài),若態(tài),若P1.0P1.0P1.3P1.3為全為全“1”1”,則無鍵閉合,否,則無鍵閉合,否則有鍵閉合。則有鍵閉合。 (2 2)去除鍵抖動(dòng):當(dāng)檢測到有鍵按下后,延時(shí)一)去除鍵抖
34、動(dòng):當(dāng)檢測到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測判斷。段時(shí)間再做下一步的檢測判斷。 (3 3)若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。)若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。對鍵盤的行線進(jìn)行掃描。對鍵盤的行線進(jìn)行掃描。P1.4P1.4P1.7P1.7按下述按下述4 4種組合種組合依次輸出:依次輸出: P1.7 1 1 1 0P1.7 1 1 1 0P1.6 1 1 0 1P1.6 1 1 0 1P1.5 1 0 1 1P1.5 1 0 1 1P1.4 0 1 1 1P1.4 0 1 1 1在每組行輸出時(shí)讀取在每組行輸出時(shí)讀取P1.0P1.0P1.3P1.3,若全為,若全為“1”1”,則,則表
35、示為這一行沒有鍵閉合,否則有鍵閉合。由此得表示為這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。效標(biāo)志鍵盤掃描有鍵閉合延時(shí)去抖動(dòng)掃描鍵盤計(jì)算鍵值閉合鍵釋放建立有效標(biāo)志建立無返回找到閉合鍵NYNYNY#includeunsigned char seg16=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92, 0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0
36、 x8e;void delay(unsigned char);unsigned char key_scan ();void main() unsigned char val_key; while(1) val_key=key_scan (); if(val_key!=0 xff) P0=segval_key; void delay(unsigned char t) unsigned char i,j; for(i=0;it;i+) for(j=0;j200;j+);unsigned char key_scan() unsigned char kdata,vkey,keyNo; bit iske
37、y=0; /標(biāo)志,在確定具體哪一個(gè)鍵按下時(shí),如果檢測標(biāo)志,在確定具體哪一個(gè)鍵按下時(shí),如果檢測到有一個(gè)鍵按下則該標(biāo)志置到有一個(gè)鍵按下則該標(biāo)志置1 P1=0 x0f; /行線送行線送“0” kdata=P1; /讀取列線值讀取列線值 kdata&=0 x0f; if(kdata=0 x0f) return 0 xff; /無鍵按下,建立無效標(biāo)志(無鍵按下,建立無效標(biāo)志(0 xff為無鍵按下的為無鍵按下的無效標(biāo)志)無效標(biāo)志) else /若列線均為若列線均為“1”則無鍵按下,否則有鍵按下則無鍵按下,否則有鍵按下 delay(25); /有鍵按下,去除抖動(dòng)有鍵按下,去除抖動(dòng) kdata=0 xef;
38、while(!iskey) /掃描鍵盤掃描鍵盤 vkey=P1=kdata; /送掃描碼至送掃描碼至P1口行線,并將掃描碼保存口行線,并將掃描碼保存到到vkey中中 kdata=P1; /讀取列線值讀取列線值 kdata&=0 x0f; if(kdata=0 x0f) kdata=vkey; /若沒有鍵盤按下,則取出行掃描碼若沒有鍵盤按下,則取出行掃描碼 kdata4; /取行掃描碼取行掃描碼 vkey=0 x0f; /將行掃描碼取反將行掃描碼取反 switch(vkey) case 1:keyNo+=0;break; /把行值加到列值中把行值加到列值中 case 2:keyNo+=4;bre
39、ak; case 4:keyNo+=8;break; case 8:keyNo+=12;break; do kdata=P1; kdata&=0 x0f; while(kdata!=0 x0f); /判斷鍵釋放判斷鍵釋放 return keyNo; 如下圖所示,如下圖所示,“UP”UP”是是“升溫升溫”按鈕,接按鈕,接INT0INT0,“DOWN”DOWN”是是“降溫降溫”按鈕,接按鈕,接INT1INT1。顯然,該案例中。顯然,該案例中,提高或降低調(diào)節(jié)溫度均采用中斷方式實(shí)現(xiàn),按,提高或降低調(diào)節(jié)溫度均采用中斷方式實(shí)現(xiàn),按“UP”UP”則產(chǎn)生外部中斷則產(chǎn)生外部中斷0 0,按,按“DOWN”DOWN
40、”產(chǎn)生外部中斷產(chǎn)生外部中斷1 1。調(diào)節(jié)溫度的設(shè)置可分別在調(diào)節(jié)溫度的設(shè)置可分別在外部中斷外部中斷0 0和外部中斷和外部中斷1 1的的中斷服務(wù)程序中實(shí)現(xiàn),在中斷服務(wù)程序中實(shí)現(xiàn),在中斷服務(wù)程序中,調(diào)節(jié)溫中斷服務(wù)程序中,調(diào)節(jié)溫度放在變量度放在變量temptemp(采用(采用BCDBCD碼)中,每發(fā)生一次碼)中,每發(fā)生一次中斷,中斷,temptemp中的數(shù)據(jù)加中的數(shù)據(jù)加1 1或減或減1 1,并再分別由,并再分別由80518051的的P1P1、P2P2控制的兩個(gè)數(shù)碼控制的兩個(gè)數(shù)碼管顯示其溫度值。管顯示其溫度值。#includeunsigned char temp=30;main() unsigned ch
41、ar t10,t; IT0=IT1=1; t10=temp/10;t=temp%10; P0=(t104)|(t&0 x0f); EA=1;EX0=EX1=1; while(1);/按升溫按鈕的中斷服務(wù)程序按升溫按鈕的中斷服務(wù)程序void isr_int0() interrupt 0 unsigned char t10,t; if(temp30) temp+; t10=temp/10;t=temp%10; P0=(t1020) temp-; t10=temp/10;t=temp%10; P0=(t104)|(t&0 x0f);本案例還解決了一個(gè)處理十進(jìn)制溫度(本案例還解決了一個(gè)處理十進(jìn)制溫度(
42、BCDBCD碼)的碼)的問題,請留意。問題,請留意。本案例只是提供一個(gè)思路,僅供參考,不要把思本案例只是提供一個(gè)思路,僅供參考,不要把思維局限在本案例上。維局限在本案例上。本案例只用了兩個(gè)按鈕,可以直接采用中斷法,本案例只用了兩個(gè)按鈕,可以直接采用中斷法,但本任務(wù)卻要四個(gè)按鈕,能直接用嗎?顯然不行但本任務(wù)卻要四個(gè)按鈕,能直接用嗎?顯然不行?8.3.1 8.3.1 A/DA/D轉(zhuǎn)換基本知識(shí)轉(zhuǎn)換基本知識(shí)傳感器單片機(jī)A/D轉(zhuǎn)換(1)(1)逐次逼近式:逐次逼近式屬直接式逐次逼近式:逐次逼近式屬直接式A/DA/D轉(zhuǎn)換器。轉(zhuǎn)換器。 (2)(2)雙積分式:雙積分式是一種間接式雙積分式:雙積分式是一種間接式A
43、/DA/D轉(zhuǎn)換器。轉(zhuǎn)換器。(3)V/F(3)V/F變換式:變換式:V/FV/F變換器能夠?qū)⒛M電壓信號轉(zhuǎn)換變換器能夠?qū)⒛M電壓信號轉(zhuǎn)換為頻率信號。為頻率信號。(4)(4)并行式:并行式也屬于直接式并行式:并行式也屬于直接式A/DA/D轉(zhuǎn)換器,它是轉(zhuǎn)換器,它是所有類型所有類型A/DA/D轉(zhuǎn)換器中轉(zhuǎn)換速度最快的。轉(zhuǎn)換器中轉(zhuǎn)換速度最快的。(1)分辨率:分辨率表示輸出數(shù)字量變化一個(gè)最低有效位(Least Significant BitLSB)所對應(yīng)的輸入模擬電壓的變化量。 分辨率FSR=2nVn 為A/D轉(zhuǎn)換器輸出的二進(jìn)制位數(shù) (2)量化誤差:模擬量是連續(xù)的,而數(shù)字量是斷續(xù)的,當(dāng)A/D轉(zhuǎn)換器的位數(shù)固定
44、后,數(shù)字量不能把模擬量所有的值都精確地表示出來,這種由A/D轉(zhuǎn)換器有限分辨率所造成的真實(shí)值與轉(zhuǎn)換值之間的誤差稱為量化誤差。一般量化誤差為數(shù)字量的最低有效位所表示的模擬量,理想的量化誤差容限是1/2LSB。 (3)(3)轉(zhuǎn)換精度:轉(zhuǎn)換精度是一個(gè)實(shí)際的轉(zhuǎn)換精度:轉(zhuǎn)換精度是一個(gè)實(shí)際的A/DA/D轉(zhuǎn)換器和理轉(zhuǎn)換器和理想的想的A/DA/D轉(zhuǎn)換器相比的轉(zhuǎn)換誤差。絕對精度一般以轉(zhuǎn)換器相比的轉(zhuǎn)換誤差。絕對精度一般以LSBLSB為單位給出,相對精度則是絕對精度與滿量程的為單位給出,相對精度則是絕對精度與滿量程的比值。比值。(4)(4)轉(zhuǎn)換時(shí)間:指轉(zhuǎn)換時(shí)間:指A/DA/D轉(zhuǎn)換器完成一次轉(zhuǎn)換器完成一次A/DA/D轉(zhuǎn)
45、換所需時(shí)轉(zhuǎn)換所需時(shí)間。轉(zhuǎn)換時(shí)間越短,適應(yīng)輸入信號快速變化能力越間。轉(zhuǎn)換時(shí)間越短,適應(yīng)輸入信號快速變化能力越強(qiáng)。其倒數(shù)是轉(zhuǎn)換速率。強(qiáng)。其倒數(shù)是轉(zhuǎn)換速率。(5)(5)溫度系數(shù):是指溫度系數(shù):是指A/DA/D轉(zhuǎn)換器受溫度影響的程度。一轉(zhuǎn)換器受溫度影響的程度。一般用環(huán)境溫度變化般用環(huán)境溫度變化11所產(chǎn)生的相對誤差來表示,單所產(chǎn)生的相對誤差來表示,單位是位是PPM/(10PPM/(10-6-6/)/)。 ADC0809是美國國家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道、8位逐次逼近式A/D轉(zhuǎn)換器。START CLOCKEOCD0D7IN0IN7ADDAADDBADDCALE八位八位轉(zhuǎn)換器轉(zhuǎn)換器A/D三態(tài)三態(tài)輸
46、出輸出鎖存器鎖存器VCCGNDOEREF(+)REF(-)38地址地址鎖存鎖存與譯碼與譯碼八路八路模擬量模擬量開關(guān)開關(guān).(1)八路模擬)八路模擬開關(guān)及地址鎖開關(guān)及地址鎖存與譯碼器存與譯碼器(2)8位位A/D轉(zhuǎn)轉(zhuǎn)換器換器 (3)三態(tài)輸出)三態(tài)輸出寄存器寄存器 ADC0809ADC0809采用采用DIP-DIP-2828(雙列直插式)(雙列直插式)封裝封裝 12345678910111213142827262524232221201918171615IN3IN4IN5IN6IN7STARTEOCD3OECLOCKVCCREF(+)GNDD1IN2IN1IN0ADDAADDBADDCALED7(MS
47、B)D6D5D4D0(LSB)REF(-)D2ADC0809寫信號、P2.7有效時(shí),啟動(dòng)AD轉(zhuǎn)換。轉(zhuǎn)換結(jié)束后,輸出高電平,向CPU發(fā)出中斷請求讀信號、P2.7有效時(shí),允許輸出AD轉(zhuǎn)換結(jié)果。轉(zhuǎn)換時(shí)鐘由ALE分頻得到。A1A28031 74LS373ADC0809分頻CLOCKD0D7111GEOCSTARTALEOERDP2.7WRAL EP0A0A7A0REF(+)REF(-)+5VGNDIN0IN7IN6IN5IN4IN3IN2IN1轉(zhuǎn)換結(jié)果由此輸出ADDAADDBADDCINT1(1)(1)時(shí)鐘信號:當(dāng)單片機(jī)時(shí)鐘頻率高于時(shí)鐘信號:當(dāng)單片機(jī)時(shí)鐘頻率高于6MHz6MHz時(shí),時(shí),ALEALE信號
48、信號必須經(jīng)必須經(jīng)2 2或或4 4分頻后才能接到分頻后才能接到ADC0809ADC0809的的CLOCKCLOCK引腳上,引腳上,否則不能正常工作。否則不能正常工作。 (2)(2)地址線和數(shù)據(jù)線:地址線和數(shù)據(jù)線:ADC0809ADC0809的地址選擇信號線和輸出的地址選擇信號線和輸出數(shù)據(jù)線均與數(shù)據(jù)線均與P0P0口相接??谙嘟印DDAADDAADDCADDC三根地址線的連接三根地址線的連接與芯片及模擬通道選擇又密切關(guān)系,地址線經(jīng)地址鎖與芯片及模擬通道選擇又密切關(guān)系,地址線經(jīng)地址鎖存器可提高輸入信號的穩(wěn)定性。存器可提高輸入信號的穩(wěn)定性。 (3)(3)控制信號:通過控制信號:通過 、 和和 P2.7
49、P2.7的組合實(shí)現(xiàn)對的組合實(shí)現(xiàn)對ADC0809ADC0809控制,顯然只有當(dāng)控制,顯然只有當(dāng)P2.7P2.7為低電平時(shí)才能對為低電平時(shí)才能對ADC0809ADC0809進(jìn)行操作。進(jìn)行操作。轉(zhuǎn)換結(jié)束信號轉(zhuǎn)換結(jié)束信號EOCEOC通過非門與通過非門與80318031的連接,用來發(fā)出中斷請求或供的連接,用來發(fā)出中斷請求或供CPUCPU查詢轉(zhuǎn)換狀態(tài)。查詢轉(zhuǎn)換狀態(tài)。 R DW R選擇的通道選擇的通道0 0 00 0 10 1 00 1 11 0 01 0 1 1 1 0 1 1 1 IN0IN1IN2IN3IN4IN5IN6IN7C B A 8031A15 A14A13A12A11 A10A9A8A7A6
50、A5A4A3A2A1A00809 STCBA 0000 0111設(shè)無關(guān)地址位為“1”,則模擬通道IN0IN7的地址依次為7FF8H7FFFH 單片機(jī)的單片機(jī)的A/DA/D轉(zhuǎn)換編程有兩條基本原則:一方面要滿轉(zhuǎn)換編程有兩條基本原則:一方面要滿足所選足所選A/DA/D轉(zhuǎn)換器的轉(zhuǎn)換時(shí)序要求,另一方面要根據(jù)具轉(zhuǎn)換器的轉(zhuǎn)換時(shí)序要求,另一方面要根據(jù)具體的接口電路編寫具體的轉(zhuǎn)換程序體的接口電路編寫具體的轉(zhuǎn)換程序即應(yīng)用軟件要即應(yīng)用軟件要和硬件協(xié)調(diào)、統(tǒng)一。和硬件協(xié)調(diào)、統(tǒng)一。 對于對于ADC0809ADC0809而言,其控制程序的主要任務(wù)是如何判而言,其控制程序的主要任務(wù)是如何判斷一次斷一次A/DA/D轉(zhuǎn)換何時(shí)結(jié)束
51、,只有以此為前提才能保證取轉(zhuǎn)換何時(shí)結(jié)束,只有以此為前提才能保證取回的轉(zhuǎn)換結(jié)果的正確性?;氐霓D(zhuǎn)換結(jié)果的正確性。 完成一次完成一次A/DA/D轉(zhuǎn)換的一般流程是:轉(zhuǎn)換的一般流程是: 單片機(jī)工作寄存器初始化單片機(jī)工作寄存器初始化 送通道地址及啟動(dòng)轉(zhuǎn)換信號送通道地址及啟動(dòng)轉(zhuǎn)換信號 軟件延時(shí)等待轉(zhuǎn)換結(jié)束軟件延時(shí)等待轉(zhuǎn)換結(jié)束 送讀取轉(zhuǎn)換結(jié)果信號送讀取轉(zhuǎn)換結(jié)果信號 輸出轉(zhuǎn)換結(jié)果。輸出轉(zhuǎn)換結(jié)果。其中軟件延時(shí)時(shí)間取決于其中軟件延時(shí)時(shí)間取決于ADCADC器件的轉(zhuǎn)換時(shí)間,可器件的轉(zhuǎn)換時(shí)間,可以通過計(jì)算和調(diào)試獲得。以通過計(jì)算和調(diào)試獲得。 將將A/DA/D轉(zhuǎn)換器的轉(zhuǎn)換結(jié)束信號轉(zhuǎn)換器的轉(zhuǎn)換結(jié)束信號EOCEOC接至單片機(jī)的某
52、端接至單片機(jī)的某端口口( (如接入如接入P3.3P3.3,即,即 ) ),啟動(dòng)轉(zhuǎn)換開始后,啟動(dòng)轉(zhuǎn)換開始后用程序查詢該輸入端是否出現(xiàn)轉(zhuǎn)換結(jié)束信號,沒有用程序查詢該輸入端是否出現(xiàn)轉(zhuǎn)換結(jié)束信號,沒有則繼續(xù)查詢,一旦出現(xiàn)結(jié)束信號即可取回轉(zhuǎn)換結(jié)果則繼續(xù)查詢,一旦出現(xiàn)結(jié)束信號即可取回轉(zhuǎn)換結(jié)果。 IN T 1將將ADCADC的轉(zhuǎn)換結(jié)束信號的轉(zhuǎn)換結(jié)束信號EOCEOC經(jīng)一定的邏輯接口引至單片經(jīng)一定的邏輯接口引至單片機(jī)的外部中斷輸入端(如接入機(jī)的外部中斷輸入端(如接入 ),用來向單片),用來向單片機(jī)提出中斷申請。編程時(shí),在主程序中啟動(dòng)機(jī)提出中斷申請。編程時(shí),在主程序中啟動(dòng)A/DA/D轉(zhuǎn)換并轉(zhuǎn)換并繼續(xù)執(zhí)行主程序。當(dāng)
53、接收到繼續(xù)執(zhí)行主程序。當(dāng)接收到ADCADC的轉(zhuǎn)換結(jié)束的轉(zhuǎn)換結(jié)束EOCEOC(即中(即中斷請求)信號后立即轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,并在其斷請求)信號后立即轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,并在其中完成取回轉(zhuǎn)換結(jié)果、啟動(dòng)下一次轉(zhuǎn)換等操作。中完成取回轉(zhuǎn)換結(jié)果、啟動(dòng)下一次轉(zhuǎn)換等操作。 IN T 1AD574/AD674/AD1674AD574/AD674/AD1674是美國是美國ADAD公司生產(chǎn)的公司生產(chǎn)的1212位逐次位逐次逼近式逼近式A/DA/D轉(zhuǎn)換器系列產(chǎn)品,它們轉(zhuǎn)換精度高、速度轉(zhuǎn)換器系列產(chǎn)品,它們轉(zhuǎn)換精度高、速度快,內(nèi)部設(shè)有時(shí)鐘電路和參考電壓源,其中快,內(nèi)部設(shè)有時(shí)鐘電路和參考電壓源,其中AD1674AD16
54、74還在片內(nèi)集成了采樣保持器,轉(zhuǎn)換速度也最快,是還在片內(nèi)集成了采樣保持器,轉(zhuǎn)換速度也最快,是AD574AD574和和AD674AD674的升級換代產(chǎn)品。但價(jià)格較高,適用的升級換代產(chǎn)品。但價(jià)格較高,適用于高精度快速采樣系統(tǒng)中。于高精度快速采樣系統(tǒng)中。(1 1)AD1674AD1674是是1212位位A/DA/D轉(zhuǎn)換器,完成一次轉(zhuǎn)換器,完成一次1212位轉(zhuǎn)換僅需位轉(zhuǎn)換僅需10S10S,8 8位轉(zhuǎn)換時(shí)間就更短,屬于高速位轉(zhuǎn)換時(shí)間就更短,屬于高速A/DA/D器件;而器件;而ADC0809ADC0809是是8 8位位A/DA/D轉(zhuǎn)換轉(zhuǎn)換器,轉(zhuǎn)換速度為器,轉(zhuǎn)換速度為100S100S。(2 2)AD1674
55、AD1674內(nèi)部集成有轉(zhuǎn)換時(shí)鐘,參考電壓源,因此它無須外內(nèi)部集成有轉(zhuǎn)換時(shí)鐘,參考電壓源,因此它無須外接時(shí)鐘和參考電壓源;而接時(shí)鐘和參考電壓源;而ADC0809ADC0809必須外部提供轉(zhuǎn)換時(shí)鐘。必須外部提供轉(zhuǎn)換時(shí)鐘。 (3 3)ADC0809ADC0809只能轉(zhuǎn)換單極性的只能轉(zhuǎn)換單極性的0 0+5V+5V輸入模擬電壓;而輸入模擬電壓;而AD1674AD1674的輸入模擬電壓既可以是單極性的,也可以是雙單極性的,且單的輸入模擬電壓既可以是單極性的,也可以是雙單極性的,且單極性時(shí)為極性時(shí)為0 0+10V+10V或或0 0+20V+20V,雙單極性為,雙單極性為5V5V或或10V10V。(4 4)A
56、D1674AD1674片內(nèi)含有采樣保持器,特別適宜于采集快速變化的片內(nèi)含有采樣保持器,特別適宜于采集快速變化的動(dòng)態(tài)過程信號。動(dòng)態(tài)過程信號。 (5 5)AD1674AD1674的數(shù)字量輸出即可以用作的數(shù)字量輸出即可以用作8 8位轉(zhuǎn)換又可以用作位轉(zhuǎn)換又可以用作1212位轉(zhuǎn)位轉(zhuǎn)換,同時(shí)也具備三態(tài)輸出鎖存器,因此可以方便地和換,同時(shí)也具備三態(tài)輸出鎖存器,因此可以方便地和8 8位微機(jī)連位微機(jī)連接。接。(1 1) :片選信號端。低電平有效。:片選信號端。低電平有效。 (2 2)CECE:使能端。高電平有效。它與共:使能端。高電平有效。它與共同用于片選控制,當(dāng)同用于片選控制,當(dāng)CE CE 為為“1”1”并且
57、并且為為“0”0”時(shí)選中本片工作,否則處于禁時(shí)選中本片工作,否則處于禁止?fàn)顟B(tài)。止?fàn)顟B(tài)。(3 3)R/ R/ :讀:讀/ /轉(zhuǎn)換選擇端。該信號為轉(zhuǎn)換選擇端。該信號為低電平時(shí)啟動(dòng)低電平時(shí)啟動(dòng)A/DA/D轉(zhuǎn)換,高電平時(shí)允許轉(zhuǎn)換,高電平時(shí)允許將將A/DA/D轉(zhuǎn)換結(jié)果讀出。轉(zhuǎn)換結(jié)果讀出。(4 4)12/ 12/ :輸出數(shù)據(jù)格式選擇信號端:輸出數(shù)據(jù)格式選擇信號端。高電平時(shí)輸出數(shù)據(jù)格式為。高電平時(shí)輸出數(shù)據(jù)格式為12 12 位,若位,若為低電平則按為低電平則按8 8位數(shù)據(jù)格式分兩次輸出位數(shù)據(jù)格式分兩次輸出。注意,該信號與。注意,該信號與TTLTTL電平不兼容,因電平不兼容,因此應(yīng)直接接此應(yīng)直接接+5V+5V或
58、地?;虻?。(5 5)A0A0:字節(jié)選擇轉(zhuǎn)換長度控制端。:字節(jié)選擇轉(zhuǎn)換長度控制端。 (6 6)DB0DB0DB11DB11:數(shù)字量輸出端。:數(shù)字量輸出端。C SC8C SC8操作操作CER/12/A0功能功能轉(zhuǎn)換轉(zhuǎn)換1000啟動(dòng)啟動(dòng)12位位A/D轉(zhuǎn)換轉(zhuǎn)換10 0 1啟動(dòng)啟動(dòng)8位位A/D轉(zhuǎn)換轉(zhuǎn)換輸出輸出1 0 1 接接+5V輸出輸出12位數(shù)字位數(shù)字10 1接地接地0輸出高輸出高8位數(shù)字(位數(shù)字(DB11DB4)10 1接地接地1輸出低輸出低4位數(shù)字(位數(shù)字(DB3DB0)禁止禁止0 無操作無操作 1 (7)STS:轉(zhuǎn)換狀態(tài)輸出端。:轉(zhuǎn)換狀態(tài)輸出端。(8)VL:邏輯電源。:邏輯電源。 (9)VCC:
59、正電源。其范圍為:正電源。其范圍為+13.5V+16.5V。(10)VEE:負(fù)電源。其范圍為:負(fù)電源。其范圍為-13.5V-16.5V。 (11)AGND:模擬電源地。:模擬電源地。 (12)DGND:邏輯電源地。:邏輯電源地。 (13)REF OUT:基準(zhǔn)電壓輸出端。:基準(zhǔn)電壓輸出端。 (14)REF IN:基準(zhǔn)電壓輸入端。:基準(zhǔn)電壓輸入端。(15)10V IN:10V量程模擬電壓輸入端。在單極性時(shí)量程模擬電壓輸入端。在單極性時(shí)0+10V,雙極性方式下為,雙極性方式下為5V。 (16)20V IN:20V量程模擬電壓輸入端。在單極性時(shí)量程模擬電壓輸入端。在單極性時(shí)0+20V,雙極性方式下為,
60、雙極性方式下為10V。 (17)BIP OFF:雙極性偏移信號輸入端。:雙極性偏移信號輸入端。 假設(shè)假設(shè)f fOSCOSC=6MHz=6MHz,要求采用軟件延時(shí)等待方式采集,要求采用軟件延時(shí)等待方式采集IN0IN0通道的電通道的電壓,將電壓值由數(shù)碼管顯示。壓,將電壓值由數(shù)碼管顯示。#include#define ADDRADC0 XBYTE0X7FF8void delay(int);void dispvalue();unsigned int value;unsigned char display=1,2,4;unsigned char led=0 xC0,0XF9,0XA4,0XB0,0X99
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年區(qū)塊鏈應(yīng)用開發(fā)與轉(zhuǎn)讓合同
- 2024年建筑行業(yè)工程咨詢合同樣本
- 《基于物聯(lián)網(wǎng)2D-90往復(fù)壓縮機(jī)監(jiān)控系統(tǒng)研究》
- 《中日文化貿(mào)易國際競爭力比較研究》
- 《維持性腹膜透析患者血清apelin水平與血管鈣化的相關(guān)性研究》
- 《等離子體等效總氧化電位控制研究》
- 《民族旅游背景下少數(shù)民族特色村寨建設(shè)研究》
- 《某市外來務(wù)工人員結(jié)核潛伏感染篩查及相關(guān)風(fēng)險(xiǎn)因素分析》
- 2024年安徽小型客運(yùn)從業(yè)資格證仿真考試題庫
- 2024年寶雞經(jīng)營性道路旅客運(yùn)輸駕駛員從業(yè)資格考試題庫
- 蘇教版四年級上冊簡單電路
- 《成渝金融科技師能力要求》(公開征求意見稿)
- 2024年稅務(wù)考試-稅務(wù)稽查員筆試參考題庫含答案
- MOOC 國際私法-暨南大學(xué) 中國大學(xué)慕課答案
- 2023年杭州市公安局上城區(qū)分局警務(wù)輔助人員招聘考試真題及答案
- 變壓器拆除施工方案及流程
- 朗致集團(tuán)邏輯測評試卷2024
- 中老年健康-關(guān)注中老年人的健康需求
- 江蘇開放大學(xué)哲學(xué)基礎(chǔ)過程性考核作業(yè)3實(shí)踐作業(yè)
- 洋流的分布及其影響
- 新人教版八年級物理上冊導(dǎo)學(xué)案全冊
評論
0/150
提交評論