單片機(jī)項(xiàng)目實(shí)踐教程劉燎原-項(xiàng)目四倒計(jì)時(shí)_第1頁(yè)
單片機(jī)項(xiàng)目實(shí)踐教程劉燎原-項(xiàng)目四倒計(jì)時(shí)_第2頁(yè)
單片機(jī)項(xiàng)目實(shí)踐教程劉燎原-項(xiàng)目四倒計(jì)時(shí)_第3頁(yè)
單片機(jī)項(xiàng)目實(shí)踐教程劉燎原-項(xiàng)目四倒計(jì)時(shí)_第4頁(yè)
單片機(jī)項(xiàng)目實(shí)踐教程劉燎原-項(xiàng)目四倒計(jì)時(shí)_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 微控制器系統(tǒng)設(shè)計(jì)與應(yīng)用回顧:(一)動(dòng)態(tài)顯示1.什么是動(dòng)態(tài)顯示2.動(dòng)態(tài)顯示步驟 1個(gè)數(shù)碼管步驟: (1)送段值 (2)送位選(公共端) (3)延時(shí) (4)關(guān)閉 3.加驅(qū)動(dòng)方法 三極管 鎖存器實(shí)驗(yàn)總結(jié):實(shí)驗(yàn)板數(shù)碼管動(dòng)態(tài)顯示假設(shè)要求第一個(gè)數(shù)碼管先顯示百位(例如2),則:1.送段值:P0輸出段值5BH,P2.6=1(數(shù)據(jù)進(jìn)入), P2.6=0(數(shù)據(jù)鎖存),段值送入數(shù)碼管的段值端;2.送位選:P0輸出位選值FEH,P2.7=1 (數(shù)據(jù)進(jìn)入), P2.7=0(數(shù)據(jù)鎖存),位選值送入數(shù)碼管的位選端;3.延時(shí)其他兩個(gè)數(shù)碼管類似這三個(gè)步驟?;仡櫍海ǘ┲袛?.中斷源 5個(gè)2.中斷優(yōu)先級(jí) 2個(gè) 3.外部中斷 P

2、3.2,P3.3 4.外部中斷寄存器 IE:EA,EX0,ET0,EX1,ET1,ES TCON:IE0,IT0,IE1,IT1 IP:PX0,PT0,PX1,PT1,PS 中斷程序如何編寫(xiě)?Void main 中斷初始化; 一邊做平時(shí)的工作,一邊等待中斷來(lái);Void 名字( ) interrupt 0/3 要求CPU做的事情; 項(xiàng)目四 倒計(jì)時(shí) -單片機(jī)定時(shí)計(jì)數(shù)器上節(jié)課復(fù)習(xí)舉出生活中中斷的例子。中斷過(guò)程包括哪幾個(gè)步驟? 中斷請(qǐng)求、中斷響應(yīng)、中斷處理、中斷返回單片機(jī)內(nèi)有哪個(gè)中斷源。 外部中斷:2 內(nèi)部中斷:3 定時(shí)器/計(jì)數(shù)器導(dǎo)入:?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)中定時(shí)計(jì)數(shù)的需求: 如用單片機(jī)控制的打鈴器、空調(diào)的定

3、時(shí)開(kāi)關(guān)、啤酒自動(dòng)生產(chǎn)線上對(duì)酒瓶的計(jì)數(shù)裝置等。 以實(shí)現(xiàn)定時(shí)控制; 以實(shí)現(xiàn)對(duì)外界事件進(jìn)行計(jì)數(shù)。 用到定時(shí)/計(jì)數(shù) 實(shí)現(xiàn)定時(shí)/實(shí)現(xiàn)方式:1.軟件定時(shí);(延時(shí)程序)占用CPU2.不可編程硬件定時(shí)(555);3.可編程定時(shí) (8253,單片機(jī)定時(shí)/計(jì)數(shù)器) AT89S51內(nèi)部有兩個(gè)定時(shí)/計(jì)數(shù)器 定時(shí)計(jì)數(shù)器到底是什么?一、定時(shí)/計(jì)數(shù)器概述1.核心 定時(shí)/計(jì)數(shù)器的核心部件是16位二進(jìn)制加1計(jì)數(shù)器(TH0、TL0或TH1、TL1) 。 特性:(1)每來(lái)一個(gè)計(jì)數(shù)脈沖信號(hào),T0或T1會(huì)在原來(lái)計(jì)數(shù)值(或初值)的基礎(chǔ)上加1.(2)直到計(jì)滿,再來(lái)一脈沖,計(jì)數(shù)值清0,會(huì)發(fā)生溢出。 向CPU發(fā)出中斷請(qǐng)求,告訴CPU這次計(jì)數(shù)結(jié)

4、束。再開(kāi)始下一輪計(jì)數(shù)。 這就像鬧鐘定時(shí)的時(shí)間一到,鬧鐘就會(huì)響一樣。2.計(jì)數(shù)和定時(shí)有什么不同 類比生活中計(jì)數(shù),定時(shí)(定時(shí)1分鐘) 所以定時(shí)也是一種計(jì)數(shù)16位加1計(jì)數(shù)器 00H 20H計(jì)數(shù)脈沖 21H FFH FFH計(jì)數(shù)脈沖 TF 1向CPU發(fā)出中斷請(qǐng)求3.單片機(jī)中的定時(shí)、計(jì)數(shù)器兩個(gè)定時(shí)/計(jì)數(shù)器分別叫T0,T1計(jì)數(shù)脈沖從哪來(lái)?當(dāng)需要計(jì)數(shù)時(shí),計(jì)數(shù)脈沖來(lái)自于外部脈沖源(P3.4,P3.5)當(dāng)需要定時(shí)時(shí),計(jì)數(shù)脈沖來(lái)自于系統(tǒng)機(jī)器周期(時(shí)鐘振蕩器經(jīng)12分頻以后的脈沖信號(hào))。 (1)計(jì)數(shù)器對(duì)外部信號(hào)計(jì)數(shù),外部計(jì)數(shù)脈沖從T0(P3.4)和T1(P3.5)輸入,開(kāi)關(guān)接在下面,來(lái)一個(gè)脈沖(下降沿),將加1計(jì)數(shù)。脈沖

5、信號(hào)(2).定時(shí)器定時(shí)器也是一種計(jì)數(shù)器。開(kāi)關(guān)接在上面,計(jì)數(shù)脈沖信號(hào)是振蕩器經(jīng)過(guò)12分頻后信號(hào)。 這是什么信號(hào)?振蕩器(晶振)的12分頻信號(hào)。如果晶振為12MHZ,則計(jì)數(shù)脈沖信號(hào)T=12*1/12M =1uS (機(jī)器周期)即定時(shí)就是每過(guò)一個(gè)機(jī)器周期(1uS),計(jì)數(shù)器加1,直至計(jì)滿溢出,定時(shí)結(jié)束。定時(shí)器的定時(shí)時(shí)間與晶振頻率和計(jì)數(shù)次數(shù)、初值等有關(guān)有關(guān)。若計(jì)數(shù)器對(duì)此信號(hào)計(jì)數(shù)100次,則定時(shí)時(shí)間=100 1s100s。脈沖信號(hào)單片機(jī)如何定義定時(shí)或計(jì)數(shù)功能?單片機(jī)定時(shí)或計(jì)數(shù)的初值怎么設(shè)置?編程設(shè)定-單片機(jī)定時(shí)中斷相關(guān)的寄存器設(shè)置單片機(jī)處理定時(shí)中斷的各種情況與定時(shí)計(jì)數(shù)有關(guān)的特殊功能寄存器,:定時(shí)器的高位,低

6、位(存放計(jì)數(shù)值),:定時(shí)器的高位,低位(存放計(jì)數(shù)值):定時(shí)控制寄存器:定時(shí)方式寄存器二、定時(shí)計(jì)數(shù)器的相關(guān)寄存器(工作方式寄存器)定時(shí)器方式寄存器TMOD的作用是設(shè)置T0、T1的工作方式。 TMOD的格式:各位的功能說(shuō)明:(1) M1、M0位:工作方式選擇位 (1) M1、M0位:工作方式選擇位(2):計(jì)數(shù)/定時(shí)功能選擇位。 =0,設(shè)置為定時(shí)器方式,計(jì)數(shù)器的輸入是內(nèi)部時(shí)鐘脈沖,其周期等于機(jī)器周期。實(shí)際上是對(duì)機(jī)器周期進(jìn)行計(jì)數(shù)。從計(jì)數(shù)值可以求得計(jì)數(shù)的時(shí)間,所以稱為定時(shí)器模式 =1,設(shè)置為計(jì)數(shù)器方式,計(jì)數(shù)器的輸入來(lái)自T0(P3.4)或T1(P3.5)端的外部脈沖,對(duì)外部輸入引腳T0(P3.4)或T1(

7、P3.5)的外部脈沖(負(fù)跳變)計(jì)數(shù),允許的最高計(jì)數(shù)頻率為晶振頻率的1/24。 M1 M0 方式說(shuō) 明0 0013 位定時(shí)器(TH的 8 位和TL的低 5 位) 0 1116 位定時(shí)器/計(jì)數(shù)器 1 02自動(dòng)重裝入初值的 8 位計(jì)數(shù)器 1 13 T0 分成兩個(gè)獨(dú)立的 8 位計(jì)數(shù)器, T1 在方式 3 時(shí)停止工作 (3) GATE:門(mén)控位。用于控制定時(shí)器的啟動(dòng)是否受外部中斷源信號(hào)的影響。GATE=0:定時(shí)的啟動(dòng)與外部中斷無(wú)關(guān),把TCON寄存器中的TR1(TR0)置1即可啟動(dòng)定時(shí)器1(定時(shí)器0)。常用。GATE=1:由控制位TR1(TR0)和引腳INT0(INT1)共同控制啟動(dòng),只有在沒(méi)有外部中斷請(qǐng)求

8、信號(hào)的情況下即外部中斷引腳 INT0(INT1)引腳=1時(shí),把TR1(TR0)置1才能定時(shí)器啟動(dòng)。用于檢測(cè)低電平時(shí)間。例如:要設(shè)定T0工作在定時(shí)方式2.TMOD=0X02; 不能位尋址00000010定時(shí)器/計(jì)數(shù)器控制寄存器TCON TF0、TF1分別是定時(shí)器/計(jì)數(shù)器T0、T1 的溢出標(biāo)志位, 加法計(jì)數(shù)器計(jì)滿溢出時(shí)硬件自動(dòng)置1, 申請(qǐng)中斷。對(duì)該標(biāo)志位有兩種處理方法:一種是以中斷方式工作,即TF1置1并申請(qǐng)中斷,響應(yīng)中斷后,執(zhí)行中斷服務(wù)程序,并由硬件自動(dòng)使TF1清0;另一種以查詢方式工作,即通過(guò)查詢?cè)撐皇欠駷?來(lái)判斷是否溢出,TF1置1后必須用軟件使TF1清0。 TR1、TR0 分別是定時(shí)器 /

9、計(jì)數(shù)器T1、 T0 的定時(shí)器1啟??刂莆弧?GATE=0時(shí),用軟件使TR1置1即啟動(dòng)定時(shí)器1,若用軟件使TR1清0則停止定時(shí)器1。 GATE=1時(shí),用軟件使TR1置1的同時(shí)外部中斷INT1的引腳輸入高電平才能啟動(dòng)定時(shí)器1。 所以初始化時(shí),只涉及到TR0/1 例:?jiǎn)?dòng)TR0.TCON屬于特殊功能寄存器,地址能被8整除,所以可位操作.這里用位操作方便。TR0=1; TF1TR1TF0TR0IE1IT1IE0IT0寄存器總結(jié):3個(gè)特殊功能寄存器 IE TMOD TCON導(dǎo)入:例如要求單片機(jī)檢測(cè)計(jì)數(shù)200個(gè)脈沖信號(hào)?定時(shí)器計(jì)數(shù)器用于定時(shí)或計(jì)數(shù)時(shí),必須按照需要給計(jì)數(shù)器設(shè)置初值。定時(shí)器計(jì)數(shù)器在計(jì)數(shù)初值的基

10、礎(chǔ)上以加1的方式進(jìn)行計(jì)數(shù),在計(jì)數(shù)器從全1變?yōu)槿?時(shí),將自動(dòng)產(chǎn)生溢出中斷請(qǐng)求,表示此次定時(shí)、計(jì)數(shù)結(jié)束。 計(jì)數(shù)初值怎么設(shè)置? 定時(shí)、計(jì)數(shù)器有四種工作方式,實(shí)際使用中應(yīng)用選擇哪種? 三、定時(shí)/計(jì)數(shù)器的計(jì)數(shù)容量及初值1最大計(jì)數(shù)容量(次數(shù))最大計(jì)數(shù)容量與計(jì)數(shù)器的二進(jìn)制位數(shù)有關(guān),關(guān)系為2N舉例,若為2位計(jì)數(shù)器,00,01,10,11,最大計(jì)數(shù)值為2N= 42.計(jì)數(shù)初值計(jì)數(shù)不一定是從0開(kāi)始,這要根據(jù)需要來(lái)設(shè)定。這個(gè)預(yù)先設(shè)定的計(jì)數(shù)起點(diǎn)值稱為計(jì)數(shù)初值。 FFFFH 最大計(jì)數(shù)容量 初值 0000H計(jì)數(shù)值+初值=最大計(jì)數(shù)容量舉例,一個(gè)杯子的總?cè)萘繛樽畲笥?jì)數(shù)容量,已經(jīng)裝了少量的水為初值,還能裝多少水位計(jì)數(shù)值四定時(shí)/計(jì)

11、數(shù)器的工作方式 MCS-51單片機(jī)的T/C有4種工作方式,分別由TMOD寄存器中的M1、M0兩位的二進(jìn)制編碼所決定。1.方式0 13位計(jì)數(shù)器 在方式0下,T0和T1工作在13位的定時(shí)/計(jì)數(shù)器方式,由TH的高 8 位和TL的低 5 位組成。 當(dāng)T1的低五位TL1計(jì)滿時(shí)向它的高八位TH1進(jìn)位,當(dāng)T1的13位計(jì)數(shù)器加到全部為 1 以后,再加1就產(chǎn)生溢出,這時(shí)置TCON的TF1為 1 ,同時(shí)把計(jì)數(shù)器全部變 0 。然后從 0 開(kāi)始繼續(xù)計(jì)數(shù)。計(jì)數(shù)值范圍:01111111111111(8191)最大計(jì)數(shù)容量213=8192如計(jì)數(shù)值為N,則置入的初值X為: X+N=8192例如:若定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為1

12、000,則初值為7192, 把初值轉(zhuǎn)換成二進(jìn)制數(shù)為11000B, 則TH0=B,TL0=00011000B。脈沖信號(hào)2.方式1 16位計(jì)數(shù)器 在方式1下,T0和T1工作在16位的定時(shí)/計(jì)數(shù)器方式,由TH的高 8 位和TL的低 8 位組成。 當(dāng)T1的低8位TL1計(jì)滿時(shí)向它的高八位TH1進(jìn)位,當(dāng)T1的16位計(jì)數(shù)器加到全部為 1 以后,再加1就產(chǎn)生溢出,這時(shí)置TCON的TF1為 1 ,同時(shí)把計(jì)數(shù)器全部變 0 。然后從 0 開(kāi)始繼續(xù)計(jì)數(shù)。最大計(jì)數(shù)次數(shù)216=65536如計(jì)數(shù)值為N,則置入的初值X為:X+N=65536如定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為1000,則初值為65536-1000=64536,把初值

13、轉(zhuǎn)換成二進(jìn)制數(shù)為B,則TH0=B,TL0=B。脈沖信號(hào)3方式2 8位自動(dòng)重裝初值計(jì)數(shù)器 在方式2下,TL0用作8位計(jì)數(shù)器, TH0用作初值寄存器。當(dāng)T1的8位計(jì)數(shù)器加到全部為 1 以后,再加1就產(chǎn)生溢出,這時(shí)置TCON的TF1為 1 ;同時(shí),TH1中的初值裝入TL1TL1又從初值開(kāi)始計(jì)數(shù)。最大計(jì)數(shù)次數(shù)28=256如計(jì)數(shù)值為N,則置入的初值X為: X+N=256 如定時(shí)/計(jì)數(shù)器T0的計(jì)數(shù)值為100,則初值為256-100=156,把初值轉(zhuǎn)換成二進(jìn)制數(shù)為10011100B,則TH0= TL0=10011100B。脈沖信號(hào)特別適合于產(chǎn)生比較精確的連續(xù)脈沖信號(hào)。4方式3 2個(gè)獨(dú)立的8位計(jì)數(shù)器 方式3只

14、適用于定時(shí)器T0, TL0既能作定時(shí)器也能作計(jì)數(shù)器使用,而TH0只能作定時(shí)器使用而不能作計(jì)數(shù)器使用。比較:(方式0,1,2) 1.3種方式的最大區(qū)別是計(jì)數(shù)位數(shù)不同(13,16,8),所以最大計(jì)數(shù)值或定時(shí)時(shí)間也不同。 2.工作方式0和工作方式1的特點(diǎn)就是計(jì)數(shù)溢出后,計(jì)數(shù)器變?yōu)槿?,因而循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在反復(fù)設(shè)置初值。 工作方式2具有自動(dòng)重裝載功能,即自動(dòng)加載計(jì)數(shù)初值。以方式1為例,16位,最大計(jì)數(shù)容量65536如果采用12的晶振,對(duì)應(yīng)的脈沖周期是微秒,計(jì)滿65536個(gè)脈沖所對(duì)應(yīng)的時(shí)間就是65.536ms。計(jì)數(shù),只要用預(yù)置數(shù)的方法先在計(jì)數(shù)容器內(nèi)存入一個(gè)初值 ,如我們要計(jì)100次,那就存

15、入65436初值,只要再來(lái)100個(gè)脈沖,就剛好會(huì)溢出,引發(fā)中斷。那么,定時(shí)初值計(jì)算?五.定時(shí)/計(jì)數(shù)初值計(jì)算由 計(jì)數(shù)值+計(jì)數(shù)初值=最大計(jì)數(shù)容量,得到:(計(jì)數(shù)值+計(jì)數(shù)初值)機(jī)器周期=最大計(jì)數(shù)容量機(jī)器周期計(jì)數(shù)次數(shù)機(jī)器周期+計(jì)數(shù)初值機(jī)器周期=最大計(jì)數(shù)容量機(jī)器周期定時(shí)時(shí)間+計(jì)數(shù)初值機(jī)器周期=最大計(jì)數(shù)容量機(jī)器周期即 定時(shí)時(shí)間=(最大計(jì)數(shù)容量-初值)機(jī)器周期所以,定時(shí)初值=最大計(jì)數(shù)容量-定時(shí)時(shí)間/機(jī)器周期 =2N-定時(shí)時(shí)間/機(jī)器周期不同工作方式的定時(shí)初值或計(jì)數(shù)初值的計(jì)算方法如下表所示:工作方式計(jì)數(shù)位數(shù)最大計(jì)數(shù)容量最大定時(shí)時(shí)間定時(shí)初值計(jì)算公式計(jì)數(shù)初值計(jì)算公式方式013213=8192213T機(jī)X=213-T/

16、T機(jī)X=213-計(jì)數(shù)值方式116216=65536216T機(jī)X=216-T/T機(jī)X=216-計(jì)數(shù)值方式2828=25628T機(jī)X=28-T/T機(jī)X=28-計(jì)數(shù)值舉例:定時(shí)1秒,晶振12MHZ,方式1,初值為多少?如何產(chǎn)生1秒定時(shí)信號(hào)?晶振12MHZ,機(jī)器周期1us4種工作方式中,最大計(jì)數(shù)容量是方式1,65536則65536us=65.536ms所以定1次不夠那就定多次,累計(jì)在一起,構(gòu)成1秒那選擇T0,工作在方式0,一次定時(shí)50ms,循環(huán)20次初值多少?TH0=0 x3c;TL0=0 xb0; 所以,在用到定時(shí)中斷之前,要先用指令來(lái)設(shè)置相關(guān)寄存器的初始值,來(lái)設(shè)定定時(shí)中斷的條件-定時(shí)中斷的初始化。

17、五、定時(shí)程序的編寫(xiě)1、程序結(jié)構(gòu) 幾個(gè)程序? 回憶中斷定義 兩個(gè)程序:主程序、定時(shí)中斷服務(wù)子程序 void main() void 名字() interrupt 中斷號(hào) 注意:名字,自己隨意取;中斷號(hào),0-4 定時(shí)中斷,中斷號(hào)是1或3 2、這兩個(gè)程序分別做什么 結(jié)合一個(gè)例子看一下 例1:發(fā)光二極管每隔1秒閃爍1次。要求用中斷方法設(shè)計(jì)實(shí)現(xiàn)1s的閃爍解:程序的結(jié)構(gòu)(中斷方式,查詢方式)如何產(chǎn)生1秒定時(shí)信號(hào)? T0一次定時(shí)50ms,循環(huán)20次 確定工作方式,計(jì)算初值用到定時(shí)中斷,需要定時(shí)中斷初始化,設(shè)置寄存器的值 -放在主程序平時(shí)做的事情,等待1次50ms定時(shí)結(jié)束; -放在主程序定時(shí)時(shí)間到,有中斷請(qǐng)求

18、時(shí),燈閃爍,返回平時(shí)狀態(tài)。 -放在定時(shí)中斷服務(wù)程序void main() 定時(shí)中斷初始化等待1次50ms定時(shí)結(jié)束 void 名字() interrupt 中斷號(hào) 重新賦初值 燈閃爍 #include sbit led=P10;unsigned char m=0;void main() P1=0 xff;EA=1; 中斷初始化ET0=1;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;while(1); 等待中斷(一次50ms)來(lái)void lsd() interrupt 1 TH0=0 x3c; 重新賦初值 TL0=0 xb0; if(+m19) 判斷是否1S到 led

19、=led; m=0;看仿真總結(jié):這兩個(gè)程序分別做什么1、主程序(1)在產(chǎn)生定時(shí)中斷請(qǐng)求前,即主程序中完成定時(shí)中斷初始化(設(shè)置3個(gè)寄存器)a. 確定定時(shí)器/計(jì)數(shù)器的工作方式,確定方式控制字,并寫(xiě)入TMOD。b. 預(yù)置定時(shí)初值或計(jì)數(shù)初值,根據(jù)定時(shí)時(shí)間或計(jì)數(shù)次數(shù),計(jì)算定時(shí)初值或計(jì)數(shù)初值,并寫(xiě)入TH0、TL0或TH1、TL1。c. 根據(jù)需要開(kāi)放定時(shí)器/計(jì)數(shù)器的中斷,給IE中的相關(guān)位賦值。d. 啟動(dòng)定時(shí)器/計(jì)數(shù)器,給TCON中的TR1或TR0置1。 (2)CPU平時(shí)做的事情2、定時(shí)中斷服務(wù)程序 定時(shí)時(shí)間到時(shí)要做的事情例2:設(shè)晶振頻率fOSC=12MHz,使用定時(shí)器1以方式1產(chǎn)生周期為400s的方波脈沖,

20、并由P1.0 輸出。試以中斷方式實(shí)現(xiàn)。要產(chǎn)生400s 的方波脈沖,只需在P1.0端以200s為間隔,交替輸出高低電平即可實(shí)現(xiàn)。為此,定時(shí)間應(yīng)為200s,定時(shí)時(shí)間一到,對(duì)P1.0 端做取反操作即可。主程序:定時(shí)中斷初始化定時(shí)中斷服務(wù)子程序: P1.0 端做取反,初值重新賦值初值計(jì)算:初值=216-T/T機(jī)=65536-200 難點(diǎn):把初值的十進(jìn)制轉(zhuǎn)化為4位十六進(jìn)制,高8位放在TH0,低8位放在TL0簡(jiǎn)單表達(dá)式寫(xiě)法: TH0=(65536-200)/256; TL0=(65536-200)%256;#include sbit led=P10;void main() P1=0 xff;EA=1;ET

21、0=1;TMOD=0 x01; T1為方式1TH0=(65536-200)/256; 初值TL0=(65536-200)%256;TR0=1; 啟動(dòng)定時(shí)while(1); 等待中斷void lsd() interrupt 1 TH0=(65536-200)/256; 重新設(shè)置初值 TL0=(65536-200)%256; led=led; 輸出取反例3:流水燈,每隔1秒循環(huán)左移點(diǎn)亮。 用定時(shí)中斷來(lái)實(shí)現(xiàn)。 學(xué)生討論,確定編程方案。 主程序做什么? 定時(shí)中斷服務(wù)程序做什么?#include #include sbit led=P10;unsigned char m=0,n;void main()

22、P1=0 xfe;n=0 xfe;EA=1;ET0=1;TMOD=0 x01;TH0=0 x3c;TL0=0 xb0;TR0=1;while(1);void lsd() interrupt 1TH0=0 x3c; TL0=0 xb0; if(+m19) n=_crol_(n,1); P1=n; m=0;例:設(shè)計(jì)出能夠顯示時(shí)間的電子鐘,六位數(shù)碼管顯示。電子鐘兩個(gè)關(guān)鍵:顯示方式? -數(shù)碼管顯示-動(dòng)態(tài)顯示 (我們?cè)谇懊嬷v過(guò)的顯示按鍵次數(shù)的例子)秒脈沖如何產(chǎn)生? -單片機(jī)的T0來(lái)定時(shí)1S(前面的例子) 我們需要對(duì)秒脈沖計(jì)數(shù),記滿60個(gè),為1分鐘;再需要對(duì)分鐘信號(hào)計(jì)數(shù),記滿60個(gè),為1小時(shí)。主程序: 定

23、時(shí)中斷初始化 顯示小時(shí)、分鐘、秒中斷服務(wù)子程序: 重新賦初值 判斷1秒到了嗎? 判斷1分鐘到了嗎? 判斷1小時(shí)到了嗎? #include unsigned char code sz1=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 x8e;/ 數(shù)碼管段值數(shù)組unsigned char sdat=0,0,0,0,0,0; /存放小時(shí)、分鐘、秒的十位、個(gè)位的數(shù)組 unsigned char wx=0 x01,0 x02,0 x04,0 x08,0 x10,0 x2

24、0; /6個(gè)數(shù)碼管位選信號(hào)數(shù)組 unsigned char m=0,sec=0,min=0,hou=0; /存放小時(shí)、分鐘、秒個(gè)數(shù)的變量void delay(unsigned int a) unsigned char i;while(a-) for(i=0;i120;i+); void disp()unsigned char i; sdat0=hou/10; /小時(shí)十位 sdat1=hou%10; /小時(shí)個(gè)位 sdat2=min/10; sdat3=min%10; sdat4=sec/10; sdat5=sec%10; for(i=0;i6;i+) P2=sz1sdati; 動(dòng)態(tài)顯示4步 /送

25、段值 P1=wxi; / 相應(yīng)的位選有效 delay(10); /延時(shí) P1=0 x00; /關(guān)閉 void main() P1=0 x00; /關(guān)閉顯示 EA=1; /定時(shí)中斷初始化 ET0=1; TMOD=0 x01; TH0=0 x3c; TL0=0 xb0; TR0=1; while(1) disp(); /一邊顯示,一邊等待中斷(一次50ms)來(lái)void lsd() interrupt 1 TH0=0 x3c; /重新賦初值 TL0=0 xb0; m+; if(m=20) /判斷是否1S到 sec+; m=0; if(sec=60) /判斷是否1分鐘到 min+; sec=0; if

26、(min=60) /判斷是否1小時(shí)到 hou+; min=0; if(hou=24) /判斷是否1天到 hou=0; 學(xué)生分組討論以下問(wèn)題,:(1)如何設(shè)計(jì)1S程序(2)把書(shū)上的靜態(tài)改為動(dòng)態(tài),如何修改電路、程序教師提出問(wèn)題: 那么我們倒計(jì)時(shí)的硬件電路如何構(gòu)建?構(gòu)建好后,如何編寫(xiě)程序呢?總結(jié)布置作業(yè) 1書(shū)上習(xí)題 2書(shū)上的靜態(tài)改為動(dòng)態(tài)實(shí)驗(yàn):設(shè)計(jì)60秒的倒計(jì)時(shí),兩位數(shù)碼管顯示。倒計(jì)到0時(shí),喇叭報(bào)警。(基于開(kāi)發(fā)板) 項(xiàng)目四 倒計(jì)時(shí) 鍵盤(pán)的設(shè)計(jì)與實(shí)現(xiàn) -認(rèn)識(shí)鍵盤(pán) 知識(shí)目標(biāo):1.掌握鍵盤(pán)的掃描法2.掌握LCD的引腳技能目標(biāo):1.掌握按鍵的檢測(cè)2.掌握鍵盤(pán)的連接方法3.掌握LCD與單片機(jī)的接口一、基礎(chǔ)知識(shí)

27、鍵盤(pán)是單片機(jī)應(yīng)用系統(tǒng)中人機(jī)交流不可缺少的輸入設(shè)備。鍵盤(pán)由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上是一個(gè)開(kāi)關(guān)元件。鍵盤(pán)通常使用機(jī)械觸點(diǎn)式按鍵開(kāi)關(guān),其主要功能是把機(jī)械上的通斷轉(zhuǎn)換為電氣上的邏輯關(guān)系(1和0)。觸點(diǎn)式按鍵開(kāi)關(guān),使用時(shí)輕輕點(diǎn)按開(kāi)關(guān)按鈕就可使開(kāi)關(guān)接通,當(dāng)松開(kāi)手時(shí)開(kāi)關(guān)既斷開(kāi),恢復(fù)為原來(lái)的電平。1.鍵盤(pán)分類(1)獨(dú)立式按鍵(2)矩陣按鍵 二、單個(gè)按鍵1.結(jié)構(gòu)如下圖所示,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵工作不會(huì)影響其他I/O口線的狀態(tài)。(1)按鍵未按下,輸入高電平 按鍵按下,輸入低電平(2)上拉電阻保證了有確定的高電平,P0口。P1,P2,P3可不接上拉電阻) 外接上拉電阻10K

28、左右(3)使用時(shí):先把對(duì)應(yīng)的輸入I/O口置1 再對(duì)該口做讀操作,若為1,說(shuō)明沒(méi)按下;為0, 2.鍵的可靠輸入由于機(jī)械觸點(diǎn)的彈性作用,在開(kāi)關(guān)閉合及斷開(kāi)的瞬間均有抖動(dòng)過(guò)程,出現(xiàn)一系列電脈沖,然后其觸點(diǎn)才穩(wěn)定下來(lái)。其抖動(dòng)過(guò)程如右圖所示,這種抖動(dòng)會(huì)影響我們檢測(cè)按鍵是否按下。抖動(dòng)時(shí)間的長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性有關(guān),一般為510ms。 為了克服按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測(cè)誤判,必須采取去抖動(dòng)措施,可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時(shí),可采用硬件去抖;而當(dāng)鍵數(shù)較多時(shí),采用軟件去抖。在硬件上可采用在鍵輸出端加 R-S觸發(fā)器(雙穩(wěn)態(tài)觸發(fā)器)或 單穩(wěn)態(tài)觸發(fā)器構(gòu)成去抖動(dòng)電路, 如下圖所示是一種由R-S觸發(fā)器 構(gòu)成的

29、去抖動(dòng)電路,當(dāng)觸發(fā)器翻轉(zhuǎn) 時(shí),觸點(diǎn)抖動(dòng)不會(huì)對(duì)其產(chǎn)生任何影響。 鍵盤(pán)輸出經(jīng)雙穩(wěn)態(tài)電路之后變?yōu)橐?guī)范的矩形方波。軟件上采取的措施是在檢測(cè)到有按鍵按下時(shí),執(zhí)行一個(gè)5ms左右(具體時(shí)間應(yīng)視所使用的按鍵進(jìn)行調(diào)整)的延時(shí)程序,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài);同理,在檢測(cè)到該鍵釋放后,也應(yīng)采用相同的步驟進(jìn)行確認(rèn),從而消除抖動(dòng)的影響。3、應(yīng)用(1)獨(dú)立按鍵需檢測(cè)先按下,再抬起: if(S1=0) /如果按鍵按下 delay(5); /延時(shí)消抖 if(S1=0) /確定按鍵按下 while(S1=0); i+;. /等待按鍵抬起再做相關(guān)操作 例:設(shè)計(jì)的發(fā)聲電路。

30、不同頻率的脈沖電信號(hào)送到揚(yáng)聲器上,會(huì)發(fā)出不同的聲音即不同的音調(diào)“DO”, “RE”, “ME” 等。音樂(lè)就是由不同的頻率的脈沖信號(hào)組合來(lái)構(gòu)成的,因此如果要播放一首歌曲,只需把一首歌曲的音調(diào)對(duì)應(yīng)頻率關(guān)系弄正確即可。我們可以利用單片機(jī)的定時(shí)器產(chǎn)生各種不同頻率的方波脈沖信號(hào)。DO:523HZ RE:587HZ ME:659HZ本次設(shè)計(jì)中單片機(jī)晶振為12MHZ,那么定時(shí)器的計(jì)數(shù)周期為1MHZ,假如選擇工作方式1,那T值便為T(mén)= 65536-5105/相應(yīng)的頻率 ,那么根據(jù)不同的頻率計(jì)算出應(yīng)該賦給定時(shí)器的計(jì)數(shù)值,列出不同音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如下表所示:#include unsigned lo

31、ng code yy=64580,64684,64777,64820,64898,64968,65030;sbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit K5=P14;sbit K6=P15;sbit K7=P16;sbit BEEP=P30;unsigned char i,j,m;void main() BEEP=0;P1=0XFF;EA=1;ET0=1; TMOD=0 x01;TR0=0;while(1)if(K1=0) while(K1=0);m=0;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K2

32、=0) while(K2=0); m=1;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K3=0) while(K3=0); m=2;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K4=0) while(K4=0); m=3;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K5=0) while(K5=0); m=4;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K6=0) while(K6=0); m=5;TH0=i=yym/256;TL0=j=yym%256;TR0=1;

33、if(K7=0) while(K7=0); m=6;TH0=i=yym/256;TL0=j=yym%256;TR0=1; void lsd() interrupt 1 TH0=i;TL0=j; BEEP=BEEP;播放音樂(lè)實(shí)現(xiàn)方法一首歌的簡(jiǎn)譜,由很多音組成,每個(gè)音由音調(diào)和節(jié)拍組成,才能發(fā)出正確的音。(1)音頻控制向蜂鳴器輸出一定頻率的脈沖方波信號(hào)就能發(fā)出某個(gè)音調(diào)。利用單片機(jī)的定時(shí)器實(shí)現(xiàn)例如:求出“1”音的定時(shí)時(shí)間建立簡(jiǎn)譜中每個(gè)音調(diào)對(duì)應(yīng)的頻率數(shù)組f為了使用方便,利用宏定義,把每個(gè)音調(diào)的頻率值定義一下。以下以好人一生平安為例。#define l_dao 262#define l_re 286#de

34、fine l_mi 311#define l_fa 349#define l_sao 392#define l_la 440#define l_xi 494#define dao 523#define re 587#define mi 659#define fa 698#define sao 784#define la 880#define xi 987#define h_dao 1046#define h_re 1174#define h_mi 1318#define h_fa 1396#define h_sao 1567#define h_la 1760#define h_xi 1975u

35、nsigned int code f=re,mi,re,dao,l_la,dao,l_la, l_sao,l_mi,l_sao,l_la,dao, l_la,dao,sao,la,mi,sao, re, mi,re,mi,sao,mi, l_sao,l_mi,l_sao,l_la,dao, l_la,l_la,dao,l_la,l_sao,l_re,l_mi, l_sao, re,re,sao,la,sao, fa,mi,sao,mi, la,sao,mi,re,mi,l_la,dao, re, mi,re,mi,sao,mi, l_sao,l_mi,l_sao,l_la,dao, l_la,

36、dao,re,l_la,dao,re,mi, re, l_la,dao,re,l_la,dao,re,mi, re, 0 xff;(2)節(jié)拍控制本例簡(jiǎn)譜的節(jié)拍為每分鐘72拍,則每拍所需時(shí)間:1/72=833ms根據(jù)樂(lè)譜知識(shí),以第一行的第一小節(jié)為例,各個(gè)音調(diào)的節(jié)拍為:2:1拍,需延時(shí)833ms32:2個(gè)1/4拍,需分別延時(shí)208ms1: 1拍,需延時(shí)833ms6: 1/4拍,需延時(shí)208ms。根據(jù)以上分析,可以取1/4拍(208ms)為1個(gè)延時(shí)單位。若某個(gè)音調(diào)為1/2拍,則延時(shí)2個(gè)單位,以此類推。利用軟件延時(shí)程序?qū)崿F(xiàn)。建立簡(jiǎn)譜中每個(gè)音調(diào)對(duì)應(yīng)的節(jié)拍數(shù)組jp unsigned char code j

37、p=4,1,1,4,1,1,2, 2,2,2,2,8, 4,2,3,1,2,2, 10, 4,2,2,4,4, 2,2,2,2,4, 2,2,2,2,2,2,2, 10, 4,4,4,2,2, 4,2,4,4, 4,2,2,2,2,2,2, 10, 4,2,2,4,4, 2,2,2,2,6, 4,2,2,4,1,1,4, 10, 4,2,2,4,1,1,4, 10;(3)音調(diào)和節(jié)拍的聯(lián)合控制依次從f數(shù)組中讀出音調(diào)的頻率,根據(jù)頻率計(jì)算出定時(shí)時(shí)間初值,啟動(dòng)定時(shí),發(fā)出該頻率的音調(diào);該音調(diào)的發(fā)聲時(shí)間可由節(jié)拍控制,從jp數(shù)組中取出該音調(diào)的節(jié)拍數(shù),通過(guò)調(diào)用延時(shí)程序控制。3、應(yīng)用(2)一鍵多功能例:一上電,

38、全滅;按下按鍵K1,D1閃爍;再次按下按鍵K1 ,D2閃爍;再次按下按鍵K1 ,D3閃爍;再按下按鍵K1 ,D4閃爍。再次按下K1,燈全滅,如此循環(huán)。K1鍵對(duì)應(yīng)五個(gè)功能,我們定義功能號(hào)ID為0,1,2,3,4ID=0,燈全滅; ID=1,D1閃爍;ID=2,D2閃爍;ID=3,D3閃爍;ID=4,D4閃爍;#include /包含AT89X52.H頭文件sbit k1=P30;sbit d0=P10;sbit d1=P11;sbit d2=P12;sbit d3=P13;void delay(unsigned int a)unsigned char i;while(-a!= 0) for(i=

39、0;i125;i+); void main ()unsigned char id=0; while(1) P1=0 xff;delay(200); if(k1=0) delay(10); if(k1=0) while(k1=0); id+; if(id=5) id=0; switch(id) case 0:P1=0 xff;break; case 1:d0=d0;delay(200);break; case 2:d1=d1;delay(200);break; case 3:d2=d2;delay(200);break; case 4:d3=d3;delay(200);break; (3)獨(dú)立式

40、鍵盤(pán)可以用case語(yǔ)句,也可以用if語(yǔ)句。 if(k1=0) delay(5) ; if(k1=0) while(k1=0); i+;. if(k2=0) delay(5) ; if(k2=0) while(k2=0); i-;. 省略了延時(shí)消抖,最好加上。 電子琴:7個(gè)按鍵,分別發(fā)DOU、RE、MI、FA、SOL、。電子琴#include unsigned long code yy=64580,64684,64777,64820,64898,64968,65030;sbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit K5=P14;sbit

41、 K6=P15;sbit K7=P16;sbit BEEP=P30;unsigned char i,j,m;void main() BEEP=0;P1=0XFF;EA=1;ET0=1;TR0=0;TMOD=0 x01;while(1)if(K1=0) while(K1=0); m=0;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K2=0) while(K2=0); m=1;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K3=0) while(K3=0); m=2;TH0=i=yym/256;TL0=j=yym%256;TR0=1;

42、if(K4=0) while(K4=0); m=3;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K5=0) while(K5=0); m=4;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K6=0) while(K6=0); m=5;TH0=i=yym/256;TL0=j=yym%256;TR0=1; if(K7=0) while(K7=0); m=6;TH0=i=yym/256;TL0=j=yym%256;TR0=1;void lsd() interrupt 1 TH0=i;TL0=j; BEEP=BEEP;實(shí)驗(yàn):在上次試驗(yàn)倒計(jì)時(shí)

43、的基礎(chǔ)上,增加三個(gè)按鍵(K1:初值加1。K2:初值減1。 K3:開(kāi)始。 )三、鍵盤(pán)鍵盤(pán)由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上是一個(gè)開(kāi)關(guān)元件。1.鍵盤(pán)分類 編碼鍵盤(pán):電腦鍵盤(pán),內(nèi)部含編碼芯片,每按一個(gè)鍵,由編碼芯片產(chǎn)生鍵值,如ASCII碼鍵盤(pán)、BCD碼鍵盤(pán) 非編碼鍵盤(pán):靠軟件編程來(lái)識(shí)別健值的鍵盤(pán)。 在單片機(jī)的各種系統(tǒng)中,最常用的是非編碼鍵盤(pán)。非編碼鍵盤(pán)又分為獨(dú)立式按鍵和矩陣式鍵盤(pán)(如電話,取款機(jī)鍵盤(pán))。 2. 矩陣式鍵盤(pán)(1)結(jié)構(gòu) 單片機(jī)系統(tǒng)中,若使用按鍵較多時(shí),通常采用矩陣式鍵盤(pán),其結(jié)構(gòu)如下圖所示,可以節(jié)省I/O口。采用行列式結(jié)構(gòu)并按矩陣形式排列,如圖所示。在行列的交點(diǎn)上都對(duì)應(yīng)有一個(gè)單觸點(diǎn)按

44、鍵。一個(gè)44的行、列結(jié)構(gòu),可以構(gòu)成一個(gè)含有16個(gè)按鍵的鍵盤(pán),無(wú)鍵按下時(shí),各行、列線彼此相交但不相連;當(dāng)按鍵被按下時(shí)則其交點(diǎn)的行線和列線接通。(2)按鍵原理控制方式:a.先判斷是否有鍵按下:行線都輸出低電平,然后讀列線的值。若列線都為高電平,說(shuō)明無(wú)鍵按下;否則,有鍵按下。b.如有,延時(shí)消抖,再判斷,確定有鍵按下。c. 再判斷哪一鍵按下,并得到鍵號(hào)。d.等待按鍵釋放,根據(jù)鍵號(hào)轉(zhuǎn)向不同的功能程序。(3)判斷哪個(gè)鍵按下的方法(c步驟): 掃描法(一)掃描法(行掃描)(1) 判別鍵盤(pán)上有無(wú)鍵閉合 其方法為:讓P3.0P3.3(行線)全輸出0, P3.4P3.7(列線)作輸入口 然后讀P3口(列線值)。

45、若高4位P3.4P3.7(列線)全為1,則鍵盤(pán)上沒(méi)有閉合鍵, 若P3.4P3.7不全為1,則有鍵處于閉合狀態(tài)。(2) 去除鍵的機(jī)械抖動(dòng) 其方法為:當(dāng)判別到鍵盤(pán)上有鍵閉合后,延時(shí)一段時(shí)間再判別鍵盤(pán)的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤(pán)上有一個(gè)鍵處于穩(wěn)定的閉合狀態(tài),否則認(rèn)為鍵抖動(dòng)。 (3) 判別閉合鍵的鍵號(hào)(逐行掃描) 其方法為:對(duì)鍵盤(pán)的行線進(jìn)行掃描,逐行進(jìn)行掃描(一)掃描法(行掃描)(1) 判別鍵盤(pán)上有無(wú)鍵閉合(2) 去除鍵的機(jī)械抖動(dòng)(3) 判別閉合鍵的鍵號(hào)(逐行掃描) 建立一個(gè)鍵值數(shù)組:把16個(gè)按鍵按下時(shí)讀出的P3值按順序?qū)懗梢粋€(gè)數(shù)組。jp=0 xee,0 xde,0 xbe,0 x7e,0 xed

46、,0 xdd,0 xbd,0 x7d,0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77; 掃描值 讀過(guò)來(lái)P3口的值 P3.3P3.0 P3.7P3.0第一行 0111 0:ee 1:de 2:be 3: 7e第二行 1011 4:ed 5:dd 6:bd 7:7d第三行 1101 8:eb 9:db A:bb B:7b第四行 1110 C: e7 D:D7 E:b7 F:77逐行掃描:對(duì)鍵盤(pán)的每一行進(jìn)行掃描,判斷此行是否有鍵按下。對(duì)每一行掃描時(shí),讀P3口的值,把該值和數(shù)組中的值進(jìn)行逐個(gè)比較,找到相等時(shí)數(shù)組的序號(hào)即為鍵號(hào)。掃描法的每個(gè)按鍵的掃描值(編

47、碼)會(huì)隨著按鍵連接的不同而不同 圖1 圖2 eehdehbeh7ehedhddhbdh7dhebhdbhbbh7bhe7hd7hb7h77h(一)掃描法(行掃描)(1) 判別鍵盤(pán)上有無(wú)鍵閉合(2) 去除鍵的機(jī)械抖動(dòng)(3) 判別閉合鍵的鍵號(hào)(逐行掃描)(4) 使CPU對(duì)鍵的一次閉合僅作一次處理 采用的方法是等待閉合鍵釋放以后再作處理eehdehbeh7ehedhddhbdh7dhebhdbhbbh7bhe7hd7hb7h77h例:用1位數(shù)碼管顯示按鍵的鍵號(hào)。電路程序#include #include unsigned char code sz1=0 xc0,0 xf9,0 xa4,0 xb0,0

48、 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e; /數(shù)碼管段值數(shù)組unsigned char code jp=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d,0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77; /矩陣鍵盤(pán)的鍵值數(shù)組unsigned char c=0;/定義c變量,用來(lái)存放鍵號(hào)void delay(unsigned int t)unsigned char i;while(t-)for(i=0;i

49、125;i+); void sm() /鍵盤(pán)掃描子程序 unsigned char j,n,a,m=0 xfe; P2=0 xf0; /P2.0P2.3(行線)全輸出0, P2.4P2.7(列線)作輸入口 k=P2; /讀P2口 k=k&0 xf0; / 只要得到高4位(列線值)。 if(k!=0 xf0) / 如果列值全為1(1111即F),有鍵按下 delay(5); /延時(shí)消抖 if(k!=0 xf0) /再判斷是否按下 for(j=0;j4;j+) /4行掃描 P2=m; /掃描值給P2 n=P2; /讀P2值(含有列值)給n for(a=0;a16;a+) /與數(shù)組中的值逐個(gè)進(jìn)行比較 if(jpa=n)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論