版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目一智能霓虹燈設(shè)計項目目標項目目標是用單片機的IO口驅(qū)動LED,實現(xiàn)流水燈效果。
認識單片機任務(wù)一單片機開發(fā)軟件-Keil任務(wù)三
Keil和Proteus的聯(lián)合使用任務(wù)四點亮LED并實現(xiàn)閃爍任務(wù)五左移右移實現(xiàn)流水燈任務(wù)六
任意花樣霓虹燈任務(wù)七單片機最小系統(tǒng)任務(wù)二任務(wù)一認識單片機明確任務(wù)智能電子產(chǎn)品在當(dāng)今社會生活中層出不窮,比如智能冰箱、智能洗衣機、智能手機等等。這些都是智能電子產(chǎn)品,智能電子產(chǎn)品的核心就是單片機。
核心是單片機。那么什么是單片機?有哪些應(yīng)用?單片機基本組成是什么?知識鏈接一什么是單片機二單片機的發(fā)展史三單片機的典型應(yīng)用一什么是單片機電腦:面向應(yīng)用單片機:面向控制單芯片微型計算機,它是把組成微型計算機的各功能部件:CPU,存儲器,I/O口等部件制作在一塊集成芯片上。1.定義2.組成二單片機的發(fā)展史MCS-48Intel公司MCS-51Intel公司87LPC飛利浦W78L偉邦DS87達拉斯GSM97現(xiàn)代……為什么學(xué)MCS-51?三單片機的典型應(yīng)用1.智能儀器儀表中的應(yīng)用2.工業(yè)控制中的應(yīng)用3.消費電子產(chǎn)品中的應(yīng)用在調(diào)制解調(diào)器、各類手機、傳真機、程控電話交換機、信息網(wǎng)絡(luò)及各種通訊設(shè)備中,單片機也已經(jīng)得到廣泛應(yīng)用。4.計算機網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用
5.醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用6.各種大型電器中的模塊化工業(yè)控制中的應(yīng)用7.汽車設(shè)備領(lǐng)域中的應(yīng)用8.軍事技術(shù)領(lǐng)域的應(yīng)用知識總結(jié)1.單片機的基本組成2.單片機的發(fā)展歷史3.單片機的典型應(yīng)用綜合評價課后作業(yè)單片機主要由哪些部分組成?謝謝觀看《單片機技術(shù)與應(yīng)用》課程任務(wù)二
單片機最小系統(tǒng)任務(wù)描述熟悉單片機的最小系統(tǒng)構(gòu)成。知識鏈接一單片機型號識別二單片機的引腳功能三單片機的最小系統(tǒng)一單片機型號識別STC:宏晶公司(深圳)8:8位機9:采用flashROM程序存儲器C:CMOS工藝(低功耗)52:片內(nèi)ROM的容量為2*4KB40:最大晶振頻率40MHZC:商業(yè)級PDIP:采用兩排針插式封裝0826:生產(chǎn)日期08年第26周例如:STC89C52RC40C-PDIP
0826
工作溫度范圍:工業(yè)級:-40℃~85℃商業(yè)級:0℃~70℃軍用級:-55℃~125℃思考:小明有一個好朋友住在北方,剛接觸單片機很有興趣,托小明幫忙買塊單片機好練習(xí)編程。你能幫小明挑一塊合適的芯片嗎?請說明理由。北方:工業(yè)級剛接觸:51系列或52系列練習(xí):采用flashROM、國產(chǎn)STC89C5140I-PDIP二單片機的引腳功能缺口朝上引腳編號走向
(1)電源引腳:VCC和VSS共用地端電源輸入端(+5V)
(2)時鐘電路引腳(2個):XTAL1和XTAL2時鐘電路引腳
(3)編程控制引腳:RST和EA外接高電平VCC
訪問片內(nèi)ROM
連續(xù)兩個機器周期(約2us)的高電平,完成一次復(fù)位操作
(4)并行I/O口(32個):P0,P1,P2,P3
外接LED、按鍵、數(shù)碼管、繼電器、蜂鳴器等外圍設(shè)備。三單片機最小系統(tǒng)單片機正常工作的最小硬件要求,包括電源電路、時鐘電路、復(fù)位電路。1.電源電路
AT89C51單片機的工作電壓范圍:4.0V—5.5V,所以通常給單片機外接5V直流電源。連接方式為:AT89C51單片機VCCVSS+5VGNDVCC(40腳):接電源+5V端VSS(20腳):接電源地端2.時鐘電路時鐘電路就是振蕩電路,向單片機提供一個正弦波信號作為基準,決定單片機的執(zhí)行速度。AT89C51單片機時鐘頻率范圍:0~33MHz。時鐘電路連接方式為:XTAL1(19腳)與XTAL2(18腳):接一個晶振電容C1和C2起穩(wěn)定作用。晶振:石英晶體振蕩器的簡稱,通常用來構(gòu)成振蕩電路,產(chǎn)生各種頻率信號。晶振晶振作用產(chǎn)生基準脈沖信號使單片機執(zhí)行各種動作和指令時能正常工作瓷片電容兩只電容必須相同,保證晶振成功起振并穩(wěn)定工作。011101011111000000000011那么就會得到一串機器碼:011101010011000001010101在沒有基準脈沖的情況下,你能判斷這段機器碼是什么嗎?如果有了基準脈沖呢?這是一段機器碼,即發(fā)給單片機的指令。結(jié)論:單片機要正確執(zhí)行各種動作和指令離不開基準脈沖。3.復(fù)位電路復(fù)位電路產(chǎn)生復(fù)位信號,使單片機從固定的起始狀態(tài)開始工作,完成單片機的“啟機”過程。
AT89C51單片機復(fù)位信號是高電平有效,通過RST/VPD(9腳)輸入。復(fù)位電路連接方式有兩種。(1)上電復(fù)位單片機接通電源時產(chǎn)生復(fù)位信號,完成單片機啟動,確定單片機起始工作狀態(tài)。(2)手動復(fù)位
手動按鍵產(chǎn)生復(fù)位信號,完成單片機啟動,確定單片機的初始狀態(tài)。通常在單片機工作出現(xiàn)混亂或“死機”時,使用手動復(fù)位可實現(xiàn)單片機“重啟”。知識總結(jié)單片機的型號識別單片機的外部引腳3.單片機的最小系統(tǒng)綜合評價課后作業(yè)1.請說明STC89c51RC40I-PDIP1012這一標識代表的含義?2.請畫出單片機最小系統(tǒng)電路圖。謝謝觀看《單片機技術(shù)與應(yīng)用》課程任務(wù)三單片機開發(fā)軟件-Keil任務(wù)描述開發(fā)環(huán)境的搭建是開發(fā)的基礎(chǔ),工欲善其事,必先利其器。這里首先介紹單片機開發(fā)使用到的軟件:KEIL。知識鏈接一Keil的基本使用二Keil的打印輸出一Keil的基本使用(1)在桌面上找到KeiluVision4軟件,雙擊打開。1.KeilμVision4新建工程(2)新建工程、選擇目錄、輸入工程名,如下圖:工程文件注意保存到自己需要的磁盤目錄下,比如這里保存為D:\單片機工程目錄下。彈出的對話框中,選擇Atmel公司的芯片,選擇Atmel,點擊Atmel前面的加號,如下圖。(3)芯片選擇2.新建源程序文件保存的時候,后綴名要為”.c”,表示我們這里寫的是C語言,如下圖所示。
具體方法是:選中“SourceGroup1”菜單,再單擊鼠標右鍵,在彈出的對話框中,選擇“AddFilesto‘SourceGroup1’”,表示準備添加源文件到工程,如右圖所示:3.源文件添加到工程中在彈出的“AddFilestoGroup‘SourceGroup1’對話框中,選擇一個C文件,如“點亮LED.c”,點擊“Add”按鈕,只需點擊一次即可,如上圖所示。在右邊編輯器中開始輸入如下代碼,如圖所示,程序書寫完畢,別忘記點保存。編譯C文件,在Target上點擊鼠標右鍵,在下拉菜單中選擇“OptionsforTarget‘Target1’”,如圖所示:4.編譯并生成hex文件點擊菜單欄上面的project->optionsforTarget‘Target1’...在彈出的對話框中修改Xtal(MHz)中的內(nèi)容即可。在output選項中必須選擇“CreateHEXFile”,如圖所示。保存以后,就可以點下圖中的編譯,或者按快捷鍵F7,如圖所示。完成上面的步驟后,在信息窗口會看到輸出以下對話信息,如圖所示。在工程所在的文件夾下會看到生成有.hex文件,如圖所示:二Keil的打印輸出具體步驟:1、編譯調(diào)試好程序,確保沒有錯誤。2、進入DebugSessin(調(diào)試會話)模式3、勾選TI和RI4、打印輸出的結(jié)果知識總結(jié)1.Keil編寫程序的一般步驟:(1)新建工程;(2)新建源程序文件;(3)把源程序添加到工程中;(4)編譯并生成hex文件。2.Keil的打印輸出綜合評價課后作業(yè)
在keil中新建工程,命名為任務(wù)3,輸入下面程序,并編譯生成HEX文件。#include<reg51.h>SbitLED=P1^0;Voidmain(void){while(1){LED=0;}}謝謝觀看《單片機技術(shù)與應(yīng)用》課程任務(wù)四Keil和Proteus的聯(lián)合使用任務(wù)描述開發(fā)環(huán)境的搭建是開發(fā)的基礎(chǔ),工欲善其事,必先利其器。這里首先介紹單片機開發(fā)使用到的軟件:Proteus。知識鏈接Proteus軟件的基本使用Proteus軟件的基本使用(1)查找元件1.放置元件
具體方法是:首先點擊啟動界面區(qū)域中的“P”按鈕(PickDevices,對象選擇按鈕)來打開“PickDevices”(拾取元器件)對話框從元件庫中拾取所需的元器件。對話框如右圖所示:(2)查找元件界面NOTE
查找常用元器件的關(guān)鍵字電容CAP(CAPACITOR)排阻RESPACK蜂鳴器BUZZER有極性電容
CAPACITORPOL發(fā)光二極管LED-數(shù)碼管7SEG-時鐘信號源CLOCK晶體振蕩器XTAL7段LEDDPY_7-SEG_DP電阻RES三極管PNP,NPN揚聲器
SPEAKER可變電阻POT觸發(fā)開關(guān)BUTTON液晶LM馬達MOTOR按鈕
SWITCH點陣matrix(3)放置元器件2.元件布局3.連線4.單片機綁定hex文件任務(wù)實施1.硬件電路2.軟件設(shè)計一硬件電路強調(diào):圖中的單片機元件沒有“VCC”和“GND”引腳,這是因為在Proteus軟件中,元件模型中的“電源”和“地”已經(jīng)進行了連接,“VCC”接到了“+5V”電源,“GND”接到了“地”,所以隱藏了這兩個引腳。二程序設(shè)計#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為變量LEDmain()//主程序開始{While(1)
{LED=0;//點亮LED}}知識總結(jié)Proteus使用的一般步驟:(1)放置元件;(2)元件布局;(3)連線;(4)綁定hex文件綜合評價課后作業(yè)
在Keil軟件中編寫本次任務(wù)的程序代碼,在proteus軟件中繪制仿真電路圖,完成任務(wù)實施內(nèi)容。謝謝觀看《單片機技術(shù)與應(yīng)用》課程任務(wù)五點亮LED并實現(xiàn)閃爍任務(wù)描述單片機P1.0引腳接一發(fā)光二極管(LED),點亮此LED,并實現(xiàn)閃爍。知識鏈接一單片機的硬件結(jié)構(gòu)二發(fā)光二極管(LED)介紹三點亮LED四LED如何實現(xiàn)閃爍一單片機的硬件結(jié)構(gòu)中央處理器CPU:8位,運算和控制功能內(nèi)部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數(shù)據(jù),后128個單元被專用寄存器占用。內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。并行I/O口:4個8位的I/O口P0、P1、P2、P3。串行口:一個全雙工串行口。中斷控制系統(tǒng):5個中斷源(外中斷2個,定時/計數(shù)中斷2個,串行中斷1個)時鐘電路:可產(chǎn)生時鐘脈沖序列,允許晶振頻率6MHz和12MHz時鐘電路CPUROMRAMT0T1中斷系統(tǒng)串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時計數(shù)器復(fù)位電路P3口各引腳第二功能表引腳第二功能功能說明P3.0RXD串行口輸入P3.1TXD串行口輸出P3.2INT0外部中斷0輸入P3.3INT1外部中斷1輸入P3.4T0定時器/計數(shù)器0計數(shù)輸入P3.5T1定時器/計數(shù)器1計數(shù)輸入P3.6WR片外RAM寫選通信號(輸出)P3.7RD片外RAM讀選通信號(輸入)二發(fā)光二極管(LED)介紹發(fā)光二極管:單向?qū)щ娦裕ㄟ^5mA左右電流即可發(fā)光,電流越大,亮度越強,但若電流過大會燒毀二極管,一般控制在3~20mA。
工作電壓紅色發(fā)光二極管:1.7-2.5V綠色發(fā)光二極管:2.0-2.4V黃色發(fā)光二極管:1.9-2.4V藍/白色發(fā)光二極管:3.0-3.8VPx.yVCCPx.yVCCVCC1.硬件電路三點亮LED2.程序設(shè)計
#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為變量LEDmain()//主程序開始{while(1)
{LED=1;//點亮LED}}四LED如何實現(xiàn)閃爍LED閃爍的實質(zhì)就是實現(xiàn)一亮一滅,前面實現(xiàn)了點亮LED,如何實現(xiàn)熄滅呢?
向P1.0送低電平便可以實現(xiàn)熄滅思考對策閃爍即亮滅亮滅亮滅…亮:P1.0輸出高電平滅:P1.0輸出低電平若亮滅之間沒有間隔會怎么樣?要加延時程序,讓亮和滅都持續(xù)一段時間?軟件實現(xiàn)思路:點亮發(fā)光二極管延時(延時子程序)熄滅發(fā)光二極管延時(延時子程序)重復(fù)上述動作(循環(huán))程序設(shè)計#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為LED變量voidmydelayms(unsignedintxms)
//定義延時函數(shù);定義形參xms{unsignedinti,j;
//定義無符號整型變量i,jfor(i=0;i<xms;i++)//定義第一重for循壞
for(j=0;j<120;j++);//定義第二重for循環(huán)}voidmain(void)//主程序開始{while(1)//一直循環(huán)執(zhí)行下面兩條指令
{
LED=1; //點亮LEDmydelayms(5);
LED=0;//熄滅LEDmydelayms(5);
}}任務(wù)小結(jié)單片機可以向某個IO引腳輸出高電平或低電平,這個電平加在發(fā)光二極管的一端,另一端接外部電路的電源或地,就可以單片機控制LED燈的亮或滅。在點亮或熄滅后加延時函數(shù),即可實現(xiàn)LED的閃爍。綜合評價課后作業(yè)請用單片機驅(qū)動一個LED的亮滅,時間間隔兩秒,實現(xiàn)閃爍。謝謝觀看《單片機技術(shù)與應(yīng)用》課程任務(wù)六左移右移實現(xiàn)流水燈任務(wù)描述用AT89C51的P1口,接8只LED,即D1,D2,…,D7,D8,編寫程序,使得8只LED循環(huán)點亮,時間間隔1秒,即剛開始點亮D1,1秒后點亮D2,接著點亮D3,D4,…,D8,然后點亮D7,D6,…,D2,D1,重復(fù)循環(huán)。知識鏈接一單片機時序的概念二移位函數(shù)實現(xiàn)流水燈一單片機時序的概念單片機內(nèi)的各種操作都是在一系列脈沖控制下進行的,而各脈沖在時間上是有先后順序的,這種順序就稱為時序。單片機的時序定時單位從小到大依次為:振蕩周期、狀態(tài)周期、機器周期和指令周期。振蕩周期是指晶體振蕩器直接產(chǎn)生的振蕩信號的周期,是振蕩頻率fosc的倒數(shù),用P表示。
狀態(tài)周期(或時鐘周期S)是振蕩周期的兩倍,它分為P1節(jié)拍和P2節(jié)拍。1個機器周期是由6個狀態(tài)周期構(gòu)成,12個振蕩周期。執(zhí)行一條指令所需的時間稱為指令周期。
若MCS-51單片機外接晶振為12MHz時,則單片機的四個周期的具體值為:振蕩周期=1/12MHz=1/12μs=0.0833μs時鐘周期=1/6μs=0.167μs機器周期=1μs指令周期=1~4μs二移位函數(shù)實現(xiàn)流水燈單片機實現(xiàn)霓虹燈也可以通過KeilC51的移位函數(shù)_crol_和_cror_函數(shù)來完成。_crol_,_cror_:將char型變量循環(huán)向左(右)移動指定位數(shù)后返回;_irol_,_iror_:將int型變量循環(huán)向左(右)移動指定位數(shù)后返回;_lrol_,_lror_:將long型變量循環(huán)向左(右)移動指定位數(shù)后返回。舉例說明a=10001000;
a=_crol_(a,1);//左移一位
//程序執(zhí)行后,a=00010001a=00010001a=_cror_(a,2);
//右移兩位
//程序執(zhí)行后,a=01000100
提示請用移位函數(shù)來實現(xiàn)一下LED流水燈效果,使用請用“#include<intrins.h>”這個指令引入intrins.h頭文件。任務(wù)實施1.硬件電路2.程序設(shè)計1.硬件電路2.程序設(shè)計#include<reg52.h>//包含單片機寄存器的頭文件#include<intrins.h>//包含_cror_和_crol_函數(shù)#defineuintunsignedint//宏定義,定義uint為無符號整型變量#defineucharunsignedchar//宏定義,定義uchar為無符號字符變量uchari,j;//定義變量i,jvoiddelay1s(void){uchara,b,c;//定義循環(huán)變量
for(c=167;c>0;c--)for(b=171;b>0;b--)for(a=16;a>0;a--);
}延時時間為1秒的延時函數(shù)voidmain(){while(1)//一直執(zhí)行
{j=0x01;
for(i=0;i<8;i++)
{P1=~j;//左移的值送P1口
delay1s();//延時1s
j=
_crol
_(j,1);
//左移1位
}主函數(shù)for(i=0;i<8;i++)
{P1=~j;//接上面左移的值送P1口delay1s();//延時1s
j=
_cror_(j,1);
//右移一位
}
}}任務(wù)小結(jié)流水燈亮燈比較有規(guī)律,8個LED中7個熄滅,1個點亮,1秒后,向前或向后移動一個位置亮另外一個燈,如此循環(huán),容易用for和移位函數(shù)來實現(xiàn)。綜合評價課后作業(yè)AT89C51的時鐘周期、機器周期、指令周期是如何定義的?當(dāng)振蕩頻率為6MHz時,一個機器周期為多少微秒?謝謝觀看《單片機技術(shù)與應(yīng)用》課程任務(wù)七任意花樣霓虹燈任務(wù)描述用AT89C51的P2口,接8只LED,把亮燈的花樣放到數(shù)組中,實現(xiàn)3種以上的流水燈花樣。知識鏈接
C51的數(shù)據(jù)類型C51的數(shù)據(jù)類型1.char字符類型char類型的長度是一個字節(jié),通常用于定義字符數(shù)據(jù)的變量或常量。分為無符號字符類型unsignedchar和有符號字符類型signedchar,默認值為signedchar類型。unsignedchar類型范圍是0~255。signedchar類型范圍是-128~+127。2.int整型int整型長度為兩個字節(jié),用于存放一個雙字節(jié)數(shù)據(jù)。分為有符號int整型數(shù)signedint和無符號整型數(shù)unsignedint,默認值為signedint類型。signedint表示的數(shù)值范圍是-32768~+32767。unsignedint表示的數(shù)值范圍是0~65535。3.long長整型long長整型長度為四個字節(jié),用于存放一個四字節(jié)數(shù)據(jù)。分為有符號long長整型signedlong和無符號長整型unsignedlong,默認值為signedlong類型。4.float浮點型單精度雙精度5.指針型指針型本身就是一個變量,在這個變量中存放指向另一個數(shù)據(jù)的地址。指針變量占據(jù)一定的內(nèi)存單元,對不同的處理器長度也不盡相同,在C51中它的長度一般為1~3個字節(jié)6.sfr特殊功能寄存器sfr也是一種擴充數(shù)據(jù)類型,占用一個內(nèi)存單元,值域為0~255。7.sfr1616位特殊功能寄存器sfr16占用兩個內(nèi)存單元,值域為0~65535。8.bit位標量bit位標量是C51編譯器的一種擴充數(shù)據(jù)類型,利用它可定義一個位標量,但不能定義位指針,也不能定義位數(shù)組。它的值是一個二進制位,不是0就是1,類似一些高級語言中的Boolean類型中的True和False。9.sbit可位尋址sbit可位尋址是C51中的一種擴充數(shù)據(jù)類型。利用它可以訪問芯片內(nèi)部的RAM中的可尋址位或特殊功能寄存器中的可尋址位。10.數(shù)據(jù)類型說明任務(wù)實施1.硬件電路2.程序設(shè)計1.硬件電路2.程序設(shè)計#include"reg51.h“#defineuintunsignedint#defineucharunsignedchar/**********ms級延時函數(shù)***********/voiddelay(unsignedintxms){uinti,j;for(i=xms;i>0;i--)for(j=120;j>0;j--);}/**********主函數(shù)***********/voidmain(){uinti;
uchardisplay[]={0xe7,0xdb,0xbd,0x7e};
while(1)//一直執(zhí)行
{
for(i=0;i<4;i++)//循環(huán)4次
{
P2=display[i];
delay(400);//延時
}
}}項目小結(jié)本項目通過7個任務(wù)完成了智能霓虹燈的設(shè)計,介紹了單片機最小系統(tǒng)的構(gòu)成、keil軟件以及proteus軟件的基本使用、實現(xiàn)了LED點亮,閃爍,左右移和任意花樣效果。綜合評價課后作業(yè)AT89C51的P1口接8只發(fā)光二極管,給出固定的兩種花樣,每隔一定的時間,切換一次花樣,請編程實現(xiàn)。項目二簡易搶答器設(shè)計獨立按鍵識別檢測任務(wù)一一位數(shù)碼管顯示任務(wù)二數(shù)碼管動態(tài)顯示任務(wù)三簡易搶答器設(shè)計任務(wù)四項目目標●掌握LED數(shù)碼管結(jié)構(gòu)●掌握數(shù)碼管字形編碼●掌握數(shù)碼管靜態(tài)顯示●掌握數(shù)碼管動態(tài)顯示項目任務(wù)本項目的任務(wù)是使用單片機實現(xiàn)搶答器,實現(xiàn)顯示搶答選手編號的數(shù)碼管顯示以及有人搶答的同時實現(xiàn)提示音。具體描述:通過按鍵檢測識別技術(shù),檢測到有人搶答后把按鍵值送數(shù)碼管顯示出來。任務(wù)一獨立按鍵識別檢測任務(wù)描述通過按鍵輸入數(shù)據(jù)或命令,實現(xiàn)簡單的人機對話。本任務(wù)要求設(shè)計1個獨立按鍵,按下該鍵時,對應(yīng)的LED亮,再一次按下,LED熄滅,如此重復(fù)。知識鏈接按鍵識別按鍵檢測與識別
當(dāng)單片機檢測到與按鍵相連的IO口被拉低就證明此按鍵被按下。按鍵檢測與識別實際工作中,按鍵的操作并沒有我們想象的“按下松開”那么簡單,操作時存在按鍵抖動的現(xiàn)象。1.按鍵的抖動現(xiàn)象按鍵消抖硬件消抖軟件消抖延時讀鍵法多次讀鍵法在單片機獲得端口為低電平的信息后,不是立即認定按鍵已被按下,而是延時10毫秒或更長的時間后再次檢測該端口,如果仍為低,說明此鍵的確被按下了,這實際上是避開了按鍵按下時的抖動時間。2.按鍵的去抖動
(1)延時讀鍵法如左上圖所示,當(dāng)電源很穩(wěn)定,沒有干擾的情況下,這種方法是可靠的。如右上圖所示,當(dāng)電源不穩(wěn)定,存在很大干擾時,則有可能存在誤判。在單片機獲得端口為低電平的信息后,在一段時間內(nèi)如20毫秒,多次檢測按鍵的狀態(tài),只有當(dāng)每次讀到的狀態(tài)都是低電平時才認為有按鍵按下,如下圖所示:
(2)多次讀鍵法用這種方法,不會存在誤判的情況。必須注意,多次檢測持續(xù)的時間應(yīng)該比閉合抖動的時間長。本項目任務(wù)中,主要用軟件方法去抖,即檢測出鍵閉合后執(zhí)行一個延時程序,產(chǎn)生10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給10ms的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序。3.結(jié)論任務(wù)實施1.硬件電路。2.程序設(shè)計。1.硬件電路2.程序設(shè)計#include<reg51.h>//包含頭文件#defineucharunsignedchar//定義uchar為無符號字符型#defineuintunsignedint//定義uint為無符號整型sbitLED=P1^0; //p1.0定義為LEDsbitkey1=P2^7;//按鍵定義voiddelay10ms(void){uchari,k;//變量定義
for(i=20;i>0;i--)for(k=250;k>0;k--);}預(yù)定義延時子程序voidmain(void)
{while(1){if(key1==0){delay10ms();
if(key1==0)
{LED=~LED;
while(key1==0);
}}}}進階提高使用AT89C51單片機,設(shè)計一個具有8個按鍵的獨立式鍵盤,每個按鍵對應(yīng)一個發(fā)光二極管。
功能要求:無鍵按下時,鍵盤輸出全為“1”,發(fā)光二極管全部熄滅;有鍵按下時,其所對應(yīng)發(fā)光二極管點亮。ucharKeyScan(void)//按鍵掃描程序{unsignedcharkeyvalue,key;if(KeyPort!=0xff)//判斷是否有鍵按下
{delay10ms();//去抖動
if(KeyPort!=0xff)//二次判斷是否有鍵按下
{keyvalue=KeyPort;//讀按鍵狀態(tài)
while(KeyPort!=0xff);//按鍵松開時,KeyPort=0xff,while語句條件不滿足,開始執(zhí)行switch語句。switch(keyvalue) { case0xfe:key=0xfe;break;//點亮第一個發(fā)光二極管
case0xfd:key=0xfd;break;//點亮第二個發(fā)光二極管
case0xfb:key=0xfb;break;//點亮第三個發(fā)光二極管
case0xf7:key=0xf7;break;//點亮第四個發(fā)光二極管
case0xef:key=0xef;break;//點亮第五個發(fā)光二極管
case0xdf:key=0xdf;break;//點亮第六個發(fā)光二極管
case0xbf:key=0xbf;break; //點亮第七個發(fā)光二極管
case0x7f:key=0x7f;break; //點亮第八個發(fā)光二極管
default:key=0xff;break;//其他情況,熄滅發(fā)光二極管
}}}知識總結(jié)通常的按鍵所用開關(guān)為機械彈性開關(guān),由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,斷開時也不會一下子斷開,因而在閉合及斷開的瞬間均伴隨有一連串的抖動,引起一次按鍵被誤讀多次。為確保CPU對按鍵的一次閉合僅作一次處理,必須消除按鍵抖動。綜合評價課后作業(yè)1.什么是按鍵抖動,去抖動有哪些方法?2.去抖動用軟件延時的方法,軟件延時一般多久?謝謝觀看《單片機技術(shù)與應(yīng)用》課程項目二簡易搶答器設(shè)計獨立按鍵識別檢測任務(wù)一一位數(shù)碼管顯示任務(wù)二數(shù)碼管動態(tài)顯示任務(wù)三簡易搶答器設(shè)計任務(wù)四任務(wù)二一位數(shù)碼管顯示任務(wù)描述通過P2口驅(qū)動一位共陰數(shù)碼管,如圖所示,顯示出一個數(shù)字‘5’。知識鏈接數(shù)碼管結(jié)構(gòu)與驅(qū)動數(shù)碼管結(jié)構(gòu)與驅(qū)動
LED數(shù)碼管的結(jié)構(gòu)實質(zhì)是由LED發(fā)光二極管組成的。
每一筆劃就相當(dāng)于一個發(fā)光二極管。根據(jù)公共腳的接法不同,可分為共陽極數(shù)碼管和共陰極數(shù)碼管兩種基本類型。1.結(jié)構(gòu)種類
共陰極數(shù)碼管是將所有發(fā)光二極管的陰極接在一起作為公共端COM,當(dāng)公共端接低電平時,某一段陽極上的電平為“1”時,該段點亮,電平為“0”時,該段熄滅。
共陽極數(shù)碼管是將所有發(fā)光二極管的陽極接在一起作為公共端COM,當(dāng)公共端接高電平時,某一段陰極上的電平為“0”時,該段點亮,電平為“1”時,該段熄滅。例:數(shù)碼管顯示數(shù)字“2”2.顯示原理亮:a,b,d,e,g滅:c,f,h例:共陰極數(shù)碼管顯示數(shù)字“2”2.顯示原理abcdefghGND+-共陰極數(shù)碼管11011010段碼:01011011(5BH)+5Vabcdefgh+-共陽極數(shù)碼管00100101段碼:10100100(A4H)LED數(shù)碼顯示器的顯示字符及碼表3.靜態(tài)驅(qū)動顯示數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。這里只介紹靜態(tài)顯示驅(qū)動。靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進行驅(qū)動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動,要知道一個89C51單片機可用的I/O端口才32個,實際應(yīng)用時必須增加譯碼驅(qū)動器進行驅(qū)動,增加了硬件電路的復(fù)雜性。任務(wù)實施1.硬件電路。2.程序設(shè)計。1.硬件電路注意:PROTUES中數(shù)碼管元件名末尾為
CA(Commonanode)表示共陽,如7SEG-MPX1-CA,
CC(CommonCathode)表示共陰,如7SEG-MPX1-CC。2.程序設(shè)計#include<reg51.h>voidmain() //主函數(shù)
{while(1){P2=0x6d;//5的共陰極段碼
}}進階提高使用AT89C51單片機,驅(qū)動一位數(shù)碼管。如下圖所示:P1口驅(qū)動共陽數(shù)碼管,讓該數(shù)碼管輪流顯示‘H’、‘E’、‘L’、‘L’、‘O’。核心代碼提示:voiddisp1(){
}unsignedcharled[]={0x89,0x86,0xc7,0xc7,0xc0};
unsignedchari;for(i=0;i<5;i++){}P1=led[i];delay1s(1000); 知識總結(jié)
LED數(shù)碼管靜態(tài)顯示原理就是在數(shù)碼管的公共端加上點亮所需的固定電平,在控制端加上對應(yīng)段碼,使其穩(wěn)定地顯示字符或者數(shù)字。綜合評價請在“進階提高”的基礎(chǔ)上完成該數(shù)碼管由“0”依次顯示到“9”,并讓每個數(shù)字顯示的時間間隔為“1秒”的設(shè)計。課后作業(yè)謝謝觀看《單片機技術(shù)與應(yīng)用》課程項目二簡易搶答器設(shè)計獨立按鍵識別檢測任務(wù)一一位數(shù)碼管顯示任務(wù)二數(shù)碼管動態(tài)顯示任務(wù)三簡易搶答器設(shè)計任務(wù)四任務(wù)三數(shù)碼管動態(tài)顯示任務(wù)描述用單片機驅(qū)動數(shù)碼管動態(tài)顯示,在數(shù)碼管上同時顯示出“910812”。知識鏈接數(shù)碼管動態(tài)顯示數(shù)碼管動態(tài)顯示當(dāng)需要顯示的位數(shù)較多時,為了節(jié)省硬件接口,往往采用動態(tài)顯示的方式。1.顯示原理動態(tài)顯示的特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效,點亮數(shù)碼管采用動態(tài)掃描顯示。
所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人感覺好像各位數(shù)碼管同時都在顯示。
動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應(yīng)略小于靜態(tài)顯示電路中的電阻。
動態(tài)顯示是指一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。
通常,各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個8位的I/O口控制,各位的位選線(公共陰極或公共陽極)由另外的I/O口線控制。以動態(tài)方式顯示時,各數(shù)碼管分時輪流選通。要使其穩(wěn)定顯示,必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在另一時刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼。
依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分別顯示的,但由于人眼存在視覺暫留效應(yīng),因此只要每位顯示間隔足夠短就可以給人以同時顯示的感覺。某系統(tǒng)用單片機的I/O口控制兩個共陽極接法的LED顯示器。試編寫應(yīng)用程序使得在LED顯示器上顯示“HP”兩個字符。2.應(yīng)用舉例位選:哪一位顯示段選:顯示什么內(nèi)容段選端位選端#include<reg51.h>//包含頭文件,頭文件包含特殊功能寄存器的定義#defineucharunsignedchar//重新定義為uchar,方便移植#defineuintunsignedint//數(shù)據(jù)類型unsignedint((無符號整型)重新定義為uint,方便移植
/****ms級延時函數(shù)****/voiddelayms(uintt){uinti,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}
/****主函數(shù),動態(tài)顯示字母HP兩個字母****/main(){while(1) { P2=0x01;//位選,第一個數(shù)碼管顯示 P0=0x89;//段選,H的段碼
delayms(10); P2=0X00;//清消隱 P2=0x02;//位選,第二個數(shù)碼管顯示
P0=0x8c;//段選,P的段碼
delayms(10); P2=0x00;//清消隱
}}任務(wù)實施1.硬件電路。2.程序設(shè)計。1.硬件電路2.程序設(shè)計#include<reg51.h>//頭文件#defineuintunsignedint//數(shù)據(jù)類型unsignedint((無符號整型)重新定義為uint,方便移植/**************延時函數(shù)**********************/voiddelayms(unsignedintxms){ uinti,j; for(i=xms;i>0;i--) for(j=120;j>0;j--);}/**************數(shù)碼管顯示函數(shù)**********************/voiddisp2(){unsignedcharled[]={0x90,0xf9,0Xc0,0x80,0xf9,0xa4};unsignedchari,w;w=0x01; for(i=0;i<6;i++){P2=~w;w<<=1; P1=led[i];delayms(9); P1=0xff;
}}/**************主函數(shù)**********************/main() {while(1){disp2();//一直調(diào)用數(shù)碼管顯示函數(shù)
}}進階提高使用移位函數(shù)實現(xiàn)6位數(shù)碼管的動態(tài)顯示。核心代碼提示:voidmain(){inti;P2=0xfe;//開位選,打開第一位數(shù)碼管
while(1)//進入大循環(huán),開始動態(tài)掃描
{for(i=0;i<8;i++)//依次掃描8位數(shù)碼管
{P1=table[i+1];//給段選端P1送字型碼
delay(5000);P2=_crol_(P2,1);//循環(huán)右移
}}}知識總結(jié)動態(tài)顯示的特點是將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效,點亮數(shù)碼管采用動態(tài)掃描顯示。
動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應(yīng)略小于靜態(tài)顯示電路中的電阻。綜合評價課后作業(yè)在本任務(wù)電路圖基礎(chǔ)上,在6個數(shù)碼管上分別顯示自己學(xué)號的后六位數(shù)字。謝謝觀看《單片機技術(shù)與應(yīng)用》課程項目二簡易搶答器設(shè)計獨立按鍵識別檢測任務(wù)一一位數(shù)碼管顯示任務(wù)二數(shù)碼管動態(tài)顯示任務(wù)三簡易搶答器設(shè)計任務(wù)四任務(wù)四簡易搶答器設(shè)計任務(wù)描述單片機P3口接8個按鍵,模擬8個選手進行知識搶答,有開始和停止鍵。知識鏈接狀態(tài)機按鍵檢測狀態(tài)機按鍵檢測
實際上按鍵識別檢測也可以用狀態(tài)機來編程實現(xiàn),使用狀態(tài)機最節(jié)約系統(tǒng)資源,如:進行按鍵檢測,只需要定時執(zhí)行按鍵狀態(tài)機程序即可。1.狀態(tài)機的基本概念無按鍵0有按鍵1等釋放20/0(消抖)1/01/0(干擾)0/1(確認)1/00/0比如說一個按鍵命令解析程序,就可以被看做狀態(tài)機:
本來在A狀態(tài)下,觸發(fā)一個按鍵后切換到了B狀態(tài);再觸發(fā)另一個鍵后切換到C狀態(tài),或者返回到A狀態(tài)。這就是最簡單的按鍵狀態(tài)機例子。實際的按鍵解析程序會比這更復(fù)雜些。進一步看,擊鍵動作本身也可以看做一個狀態(tài)機。一個細小的擊鍵動作包含了:釋放、抖動、閉合、抖動和重新釋放等狀態(tài)。一個鍵按下之后的波形是這樣的(假定低有效):在有鍵按下后,數(shù)據(jù)線上的信號出現(xiàn)一段時間的抖動,然后為低,當(dāng)按鍵釋放時,信號抖動一段時間后變高。當(dāng)然,在數(shù)據(jù)線為低或者為高的過程中,都有可能出現(xiàn)一些很窄的干擾信號。(1)空閑狀態(tài),即數(shù)據(jù)線信號為高,這里假定為S1狀態(tài),對應(yīng)無按鍵狀態(tài);(2)確認真的有鍵按下的狀態(tài),這里假定為S2狀態(tài),對應(yīng)有按鍵按下狀態(tài);(3)確認真的有鍵釋放的狀態(tài),這里假定為S3狀態(tài),對應(yīng)按鍵松開狀態(tài)。一般情況下,采用的時間序列可以為10-20毫秒之間。在S1狀態(tài),按鍵掃描的狀態(tài)始終處于S1,若此時按下按鍵,在下一個掃描時間間隔(這個時間間隔用于消抖)后,單片機檢測到有按鍵按下,進入狀態(tài)S2,表示是一次有效的按鍵,然后在以后的每個時間間隔里繼續(xù)檢測,如果檢測IO一直是低電平,說明按鍵沒有被松開,那么狀態(tài)將一直停留在S2,一旦檢測到IO電平恢復(fù)為高電平說明是按鍵已經(jīng)松開,即狀態(tài)S3。2.狀態(tài)切換無按鍵0有按鍵1等釋放20/0(消抖)1/01/0(干擾)0/1(確認)1/00/0任務(wù)實施1.硬件電路。2.程序設(shè)計。1.硬件電路2.程序設(shè)計#include<reg52.h>#defineucharunsignedchar #defineuintunsignedint#defineKeyPortP3sbitsmg1=P2^4; sbitsmg2=P2^5; sbitsmg3=P2^6; sbitsmg4=P2^7; sbitkeyks=P1^2; sbitkeytz=P1^1; #definekeystate00 #definekeystate11 #definekeystate22 ucharucKeyStatus=0; unsignedcharkeyvalue=0;uintcount=0;uchartemp1;uchartemp[4]={0x3f,0x3f,0x3f,0x3f};bitflag=0; inttable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharweixuan[4]={0xef,0xdf,0xbf,0x7f};/**********10ms延時子程序***********/voiddelay10ms(void){uchari,k;for(i=20;i>0;i--)for(k=250;k>0;k--);}/**********ms級延時子程序***********/voiddelayms(uintx) //x=1,約1ms延時函數(shù),數(shù)碼管用{uinty,z;for(y=x;y>0;y--)for(z=111;z>0;z--);}/**********狀態(tài)機按鍵掃描程序***********/ucharkeyscan() {switch(ucKeyStatus){casekeystate0:ucKeyStatus=keystate1;break;casekeystate1:switch(KeyPort){case0xfe:keyvalue=1;++count;break;//第一個按鍵按下
case0xfd:keyvalue=2;++count;break;//第二個按鍵按下
case0xfb:keyvalue=3;++count;break;//第三個按鍵按下
case0xf7:keyvalue=4;++count;break;//第四個按鍵按下
case0xef:keyvalue=5;++count;break;//第五個按鍵按下
case0xdf:keyvalue=6;++count;break;//第六個按鍵按下
case0xbf:keyvalue=7;++count;break;//第七個按鍵按下
case0x7f:keyvalue=8;++count;break;//第八個按鍵按下
default:keyvalue=0xff;break;//其他情況,無按鍵按下
}/**********功能鍵識別檢查**********/voidKeyScan_1(void){uchari;
if(keytz==0){ delay10ms(); if(keytz==0)
{ while(!keytz);
count=0; for(i=0;i<4;i++){ temp[i]=0x40;} } flag=0;
}}}//開始鍵是否按下if(keyks==0){ delay10ms(); if(keyks==0){ while(!keyks);
count=0;for(i=0;i<4;i++){ temp[i]=0x40;} } flag=1;
}}//數(shù)碼管顯示voidsmg(){uchari;for(i=0;i<4;i++){ P0=temp[i];
P2=weixuan[i];
delayms(1);
P2=0xff;
}
}/**********主函數(shù)**********/voidmain() {while(1){ smg(); temp1=keyscan(); if((count==1)&&(flag==1)){ temp[0]=0x40; temp[1]=table[0]; temp[2]=table[0]; temp[3]=table[temp1];} KeyScan_1();}}進階提高1.延時時間的計算單片機開發(fā)過程中,用到延時程序的地方太多了,怎么比較精確的知道當(dāng)前使用的延時程序延時時間是多少?2.為搶答器添加提示音一延時時間的計算介紹一個工具軟件:Emu51Form。Emu51Form是一個軟件仿真計時器,具體使用方法為:1.打開
keil\tools.ini
文件,在它的c51欄中加入AGSI9=Emu51Form.DLL
("delay
simulation")
然后存盤。1.延時時間的計算2.把
Emu51Form.dll
文件復(fù)制
到
keil\c51\bin
中。3.新建一個工程,編寫一個延時程序編譯通過后,如圖。4.調(diào)時時在peripherals下有Emu51Form選項,如圖:5.選擇
Debug/Start/Stop
Debug
Session
后,彈出如圖所示的對話框。選擇對話框中的Run,即可得到延時程序的延時值。6.編譯測試下面延時程序執(zhí)行的延時時間,晶振設(shè)置為11.0592MHz,該延時程序延時時間為1065us(1.065ms),如圖:#include<reg51.h>//頭文件#defineucharunsignedchar//定義uchar為無符號字符變量。
void
delayms(void)
{
uchark,ms;
ms=1
;
while(ms--)
{
for(k
=
0
;
k
<
120
;
k++)
;
}}2.為搶答器添加提示音核心代碼提示:voidbeeping(){uchari;for(i=0;i<100;i++){ delay1(100); been=~been; } been=1;}知識總結(jié)
通過本項目的完成,對數(shù)碼管的結(jié)構(gòu)和兩種顯示工作原理有了清楚的認識和掌握。也對單片機控制數(shù)碼管顯示的設(shè)計流程和設(shè)計方法有了清晰的認識和熟練的操作。綜合評價課后作業(yè)請自己根據(jù)本項目所需內(nèi)容,為搶答器設(shè)計同步提示音,并再次自行獨立完成簡易搶答器的設(shè)計,以鞏固所學(xué)內(nèi)容。謝謝觀看《單片機技術(shù)與應(yīng)用》課程項目三抽獎器設(shè)計項目任務(wù)本項目的任務(wù)是制作一個簡易抽獎器,要求按“抽獎鍵”開始抽獎,同時數(shù)碼管顯示抽獎號碼,當(dāng)再次按“抽獎”鍵時,抽獎器停止運行并穩(wěn)定顯示中獎號碼。項目目標●熟悉單片機中斷的硬件結(jié)構(gòu)●掌握單片機中斷的使用●完成簡易抽獎器的設(shè)計認識單片機中斷系統(tǒng)任務(wù)一外部中斷的簡單實例應(yīng)用任務(wù)二中斷嵌套實例應(yīng)用任務(wù)四單片機數(shù)碼顯示抽獎器任務(wù)五外部中斷的復(fù)雜實例應(yīng)用任務(wù)三任務(wù)一認識單片機中斷系統(tǒng)任務(wù)描述帶領(lǐng)同學(xué)們開啟單片機的中斷系統(tǒng)之門:知道什么是中斷;中斷的流程;中斷有什么用;中斷如何實現(xiàn)
。知識鏈接一什么是中斷?二中斷有什么用?三中斷如何實現(xiàn)?一什么是中斷CPU在處理某一事件A時,另一事件B請求CPU迅速去處理;CPU暫時中斷當(dāng)前工作,轉(zhuǎn)去處理事件B;待CPU處理完事件B后,再回到事件A被中斷的位置繼續(xù)處理事件A。這一過程稱為“中斷”。1.中斷的概念執(zhí)行主程序主程序繼續(xù)執(zhí)行主程序斷點中斷請求中斷響應(yīng)執(zhí)行中斷處理程序中斷返回2.中斷的流程引起CPU中斷的根源,稱為中斷源。主程序被打斷的地方,稱為斷點,實現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)。中斷解決了快速主機與慢速I/O設(shè)備的數(shù)據(jù)傳送,還具有如下優(yōu)點:(1)分時操作。CPU可以分時為多個I/O設(shè)備服務(wù),提高了計算機的利用率;
(2)實時響應(yīng)。CPU能夠及時處理應(yīng)用系統(tǒng)的隨機事件,系統(tǒng)的實時性大大增強;
(3)可靠性高。CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。中斷如何實現(xiàn)?二中斷有什么用?三中斷如何實現(xiàn)1.中斷源及中斷系統(tǒng)構(gòu)成IE0EX0TF0IE1TF1TIESET1EX1ET0RIIP硬件查詢高級中斷請求低級中斷請求中斷入口地址中斷源INT0INT1中斷入口地址中斷源10IEPX0PSPT1PX1PT011111111100000EA1≥1SCON11T0T1RXTXIT0IT100TCON1自然優(yōu)先級自然優(yōu)先級外部中斷0定時器T0外部中斷1定時器T1串口中斷1.(P3.2)可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測到P3.2引腳上出現(xiàn)有效的中斷信號時,中斷標志IE0(TCON.1)置1,向CPU申請中斷。2.(P3.3)可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測到P3.3引腳上出現(xiàn)有效的中斷信號時,中斷標志IE1(TCON.3)置1,向CPU申請中斷。3.TF0(TCON.5),片內(nèi)定時/計數(shù)器T0溢出中斷請求標志。當(dāng)定時/計數(shù)器T0發(fā)生溢出時,置位TF0,并向CPU申請中斷。4.TF1(TCON.7),片內(nèi)定時/計數(shù)器T1溢出中斷請求標志。當(dāng)定時/計數(shù)器T1發(fā)生溢出時,置位TF1,并向CPU申請中斷。5.RI(SCON.0)或TI(SCON.1),串行口中斷請求標志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時置位TI,向CPU申請中斷。
(1)中斷標志
1)中斷標志寄存器TCON
TCON為8位特殊功能寄存器,其結(jié)構(gòu)、位名稱、位地址及其功能如下表所示。
2.中斷標志與中斷控制位編碼TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能
/INT1觸發(fā)方式位/INT0觸發(fā)方式位IT0=1表示下降沿觸發(fā);IT0=0表示低電平觸發(fā)。IT1=1表示下降沿觸發(fā);IT1=0表示低電平觸發(fā)。
(1)中斷標志
1)中斷標志寄存器TCON
TCON為8位特殊功能寄存器,其結(jié)構(gòu)、位名稱、位地址及其功能如下表所示。
2.中斷標志與中斷控制位編碼TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能
IE0=1表示外部中斷0的產(chǎn)生中斷;IE0=0表示沒有外部中斷0的產(chǎn)生。IE1=1表示外部中斷1的產(chǎn)生中斷;IE1=0表示沒有外部中斷1的產(chǎn)生。/INT1中斷標志位/INT0中斷標志位
(1)中斷標志
1)中斷標志寄存器TCON
TCON為8位特殊功能寄存器,其結(jié)構(gòu)、位名稱、位地址及其功能如下表所示。
2.中斷標志與中斷控制位編碼TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能
TR0=0,表示單片機復(fù)位或T0停止計數(shù);TR0=1,表示啟動T0開始計數(shù)。TR1=0,表示單片機復(fù)位或T1停止計數(shù);TR1=1,表示啟動T1開始計數(shù)。T1啟??刂莆籘0啟??刂莆?/p>
(1)中斷標志
1)中斷標志寄存器TCON
TCON為8位特殊功能寄存器,其結(jié)構(gòu)、位名稱、位地址及其功能如下表所示。
2.中斷標志與中斷控制位編碼TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能
TF0=0,表示單片機復(fù)位或T0無中斷請求發(fā)生;TF0=1,表示T0發(fā)出中斷請求。TF1=0,表示單片機復(fù)位或T1無中斷請求發(fā)生;TF1=1,表示T1發(fā)出中斷請求。T1中斷標志位T0中斷標志位2)中斷標志寄存器SCON
串行控制寄存器SCON的結(jié)構(gòu)、位名稱、位地址及其功能如下表所示。其中只有TI和RI兩位用來表示串行口中斷標志位。位編碼SCON.7SCON.6SCON.5SCON.4SCON.3SCON.2SCON.1SCON.0位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能
串行接收中斷標志位串行發(fā)送中斷標志位
TI:為串行口發(fā)送中斷標志位,位地址為99H。在串行口發(fā)送完一組數(shù)據(jù)時,TI由硬件自動置位(TI=1),請求中斷,當(dāng)CPU響應(yīng)中斷進入中斷服務(wù)程序后,TI狀態(tài)不能被硬件自動清除,而必須在中斷程序中由軟件來清除。
RI:為串行口接收中斷標志位,位地址為98H。在串行口接收完一組串行數(shù)據(jù)時,RI由硬件自動置位(RI=1),請求中斷,當(dāng)CPU響應(yīng)中斷進入中斷服務(wù)程序后,也必須由軟件來清除RI標志。
(2)中斷控制
1)中斷允許控制寄存器IE中斷的開放和關(guān)閉是通過中斷允許寄存器IE各位的狀態(tài)進行兩級控制的。
所謂兩級控制是指所有中斷允許的總控制位和各中斷源允許的單獨控制位,每位狀態(tài)靠軟件來設(shè)定。IE的結(jié)構(gòu)、位名稱、位地址和功能
位編碼IE.7IE.6IE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 術(shù)后譫妄的ABCDE預(yù)防策略優(yōu)化
- 2025年陜西實驗高級中學(xué)學(xué)科教師招聘備考題庫及一套答案詳解
- 2025年吉林大學(xué)第二醫(yī)院公開招聘科研部工作人員備考題庫完整參考答案詳解
- 江蘇省泰興市部分高中學(xué)校2026年公開招聘高層次人才備考題庫含答案詳解
- 2025年建甌市衛(wèi)生健康局下屬事業(yè)單位赴福建中醫(yī)藥大學(xué)公開招聘緊缺急需專業(yè)人員10人備考題庫及一套完整答案詳解
- 風(fēng)車涂鴉課件
- 魏橋創(chuàng)業(yè)集團校招面試題及答案
- 文景之治初中題目及答案
- 萬幫金之星集團招聘面試題目及答案
- 術(shù)后垂體柄損傷的激素替代治療方案
- 建平宏潤膨潤土有限公司礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案
- (完整word版)硅烷偶聯(lián)劑kh-550化學(xué)品安全技術(shù)說明書 (MSDS)
- 急診與災(zāi)難醫(yī)學(xué)試題庫及答案(四)
- GB/T 29321-2012光伏發(fā)電站無功補償技術(shù)規(guī)范
- 消防維保計劃與方案
- 二級營銷師考試題庫及答案
- 班組安全基礎(chǔ)管理概述課件
- 旅游服務(wù)與管理專業(yè)人才需求調(diào)研報告五篇修改版
- 《中國特色社會主義進入新時代》課件
- 吊籃操作人員實際操作考核記錄表
- 基于光纖傳感器的油氣水三相流持氣率測井儀
評論
0/150
提交評論