led燈循環(huán)顯示速度的遙控器控制設(shè)計-課程設(shè)計論文_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機(jī)原理及接口技術(shù) </p><p><b>  設(shè)計說明書</b></p><p><b>  一.課程設(shè)計的目的</b></p><p>  1.進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理。</p><p>  2.掌握單片機(jī)的接口技術(shù)及相關(guān)外圍芯片的外特性,控制方法。<

2、;/p><p>  3.通過課程設(shè)計,掌握以單片機(jī)核心的電路設(shè)計的基本方法和技術(shù)。</p><p>  4.通過實(shí)際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。</p><p>  5.通過完成一個包括電路設(shè)計和程序開發(fā)的完整過程,了解開發(fā)一單片機(jī)應(yīng)用系統(tǒng)的全過程,為今后從事相應(yīng)開發(fā)打下基礎(chǔ)。</p><p>  二.課程設(shè)計的基本要求

3、</p><p>  1.認(rèn)真認(rèn)識設(shè)計的意義,掌握設(shè)計工作程序,學(xué)會使用工具書和技術(shù)參考資料,并培養(yǎng)科學(xué)的設(shè)計思想和良好的設(shè)計作風(fēng)。</p><p>  2.提高模型建立和設(shè)計能力,學(xué)會應(yīng)用相關(guān)設(shè)計資料進(jìn)行設(shè)計計算的方法。</p><p>  3.提高獨(dú)立分析、解決問題的能力,逐步增強(qiáng)實(shí)際應(yīng)用訓(xùn)練。</p><p>  4.課程設(shè)計的說明書要

4、求簡潔、通順,計算正確,圖紙表達(dá)內(nèi)容完整、清楚、規(guī)范。</p><p>  5.課程設(shè)計說明書封面格式要求見《天津城市建設(shè)學(xué)院課程設(shè)計教學(xué)工作規(guī)范》附表1。</p><p>  三.課程設(shè)計具體要求</p><p>  a) 要求每位同學(xué)獨(dú)立完成設(shè)計任務(wù)。</p><p><b>  b) 原理圖設(shè)計</b></p

5、><p>  1.原理圖設(shè)計要符合項(xiàng)目的工作原理,連線要正確。</p><p>  2.圖中所使用的元器件要合理選用,電阻、電容等器件的參數(shù)要正確標(biāo)明。</p><p>  3.原理圖要完整,CPU、外圍器件、外擴(kuò)接口、輸入/輸出裝置要一應(yīng)俱全。</p><p><b>  c) 程序調(diào)計</b></p>&l

6、t;p>  1.根據(jù)要求,將總體功能分解成若干個子功能模塊,每個功能模塊完成一個特定的功能。</p><p>  2.根據(jù)總體要求及分解的功能模塊,確定各功能模塊之間的關(guān)系,設(shè)計出完整的程序流程圖。</p><p><b>  d) 程序調(diào)試</b></p><p>  1.編寫相關(guān)程序,并進(jìn)行仿真。</p><p&g

7、t;  2.將程序下載到單片機(jī),進(jìn)行運(yùn)行調(diào)試。</p><p><b>  e) 設(shè)計說明書</b></p><p><b>  1.原理圖設(shè)計說明</b></p><p>  簡要說明設(shè)計目的,原理圖中所使用的元器件功能及在圖中的作用,各器件的工作過程及順序。</p><p><b> 

8、 2.程序設(shè)計說明</b></p><p>  對程序設(shè)計總體功能及結(jié)構(gòu)進(jìn)行說明,對各子模塊的功能以及各子模塊之間的關(guān)系作較詳細(xì)的描述。</p><p>  3.畫出工作原理圖,程序流程圖并給出相應(yīng)的程序清單。</p><p><b>  四. 設(shè)計任務(wù)</b></p><p>  STC12C5A60S2(

9、引腳排序及基本功能同AT89S51)作為主控芯片,設(shè)計LED燈循環(huán)顯示速度的控制電路。一是設(shè)計74LS273擴(kuò)展8個LED顯示;二是設(shè)計遙控接收電路,作為LED循環(huán)顯示速度的參數(shù)輸入;三是設(shè)計根據(jù)不同的輸入?yún)?shù)改變LED循環(huán)顯示速度的程序;四是擴(kuò)展MAX7219或LCD1602作為相關(guān)輸入?yún)?shù)的顯示。</p><p><b>  目 錄</b></p><p>  第

10、1章.總體設(shè)計方案1</p><p>  1.1主要設(shè)計模塊概述1</p><p>  1.1.1 關(guān)于AT89C51的介紹1</p><p>  1.1.2關(guān)于遙控器工作方式的介紹1</p><p>  1.1.3 LED燈循環(huán)及速度值的顯示2</p><p>  1.2設(shè)計實(shí)現(xiàn)原理3</p>

11、;<p>  1.2.1實(shí)現(xiàn)設(shè)計的大體思路3</p><p>  1.2.2 總體思路流程框圖4</p><p>  第2章 硬件電路設(shè)計5</p><p>  2.1 LED小燈點(diǎn)亮模塊5</p><p>  2.2 LCD1602顯示數(shù)據(jù)模塊5</p><p>  2.3完整電路圖設(shè)

12、計6</p><p>  第3章軟件編程設(shè)計7</p><p>  3.1 各模塊程序設(shè)計7</p><p>  3.1.1 LED小燈的循環(huán)點(diǎn)亮編程7</p><p>  3.1.2遙控器編程8</p><p>  3.2 總的整合程序9</p><p>  第4章 實(shí)際應(yīng)用

13、結(jié)果10</p><p>  4.1模塊仿真10</p><p>  4.1.1 LED小燈循環(huán)顯示仿真圖:10</p><p>  4.1.2 LCD1602仿真顯示10</p><p>  4.2總圖仿真結(jié)果11</p><p>  第5章 課設(shè)心得體會12</p><p>

14、;<b>  附錄Ⅰ13</b></p><p><b>  附錄Ⅱ14</b></p><p><b>  附錄Ⅲ18</b></p><p><b>  附錄Ⅳ19</b></p><p><b>  參考文獻(xiàn)21</b>

15、;</p><p>  第1章.總體設(shè)計方案</p><p>  1.1主要設(shè)計模塊概述</p><p>  本次課程設(shè)計要求以AT89C51作為主控芯片,以LCD1602液晶為顯示,通過遙控器控制來達(dá)到使LED流水燈的流動速度改變。</p><p>  1.1.1 關(guān)于AT89C51的介紹</p><p>  AT8

16、9C51是一種帶4K字節(jié)FLASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位

17、CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。在本次課程設(shè)計里,主要用到了兩個I/O端口,分別是P0口和P1口。P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時,P0輸出原

18、碼,此時P0外部必須接上拉電阻。P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電</p><p>  1.1.2關(guān)于遙控器工作方式的介紹</p><p>  針對課程設(shè)計的要求,我們采用紅外遙控器,通過給外部中斷一個開中斷信號并且經(jīng)過紅外接收模塊處理后使外部信息以不均勻的時序碼形式傳輸給主控芯片,已達(dá)到對LED等亮度的控制.紅外遙控器的發(fā)送數(shù)據(jù)要依據(jù)規(guī)定的

19、數(shù)據(jù)格式。具體的發(fā)送格式如下圖:</p><p>  圖1.1 遙控數(shù)據(jù)發(fā)送格式</p><p>  遙控器的接收數(shù)據(jù)部分是將從遙控器接收到的數(shù)據(jù)信號進(jìn)行放大之后在傳輸?shù)街骺匦酒镞M(jìn)行下一步的操作。</p><p>  1.1.3 LED燈循環(huán)及速度值的顯示</p><p> ?。?)根據(jù)課設(shè)要求,我們用IED燈來客觀的反映在不同的檔位下小

20、燈的不同的循環(huán)速度。LED(Light Emitting Diode)即發(fā)光二極管,它是一種固態(tài)的半導(dǎo)體器件,可以直接把電轉(zhuǎn)化為光。LED的心臟是一個半導(dǎo)體的晶片,晶片的一端附在一個支架上,一端是負(fù)極,另一端連接電源的正極,使整個晶片被環(huán)氧樹脂封裝起來。它通過將電壓加在LED的PN結(jié)兩端,使PN結(jié)本身形成一個能級(實(shí)際上,是一系列的能級),然后電子在這個能級上躍變并產(chǎn)生光子來發(fā)光的。所以我們通過軟件編程在程序中利用中斷程序來控制相鄰的小

21、燈之間亮燈的交換需要等待的時間來達(dá)到不同的循環(huán)點(diǎn)亮速度的效果</p><p> ?。?)針對小燈不同循環(huán)速度顯示不同數(shù)值的要求,我們應(yīng)用LCD1602來顯示。LCD1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶模塊。1602識別的是ASCII碼,試驗(yàn)可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值.它與AT89C51主控芯片鏈接如圖1.2所示:<

22、/p><p>  圖1.2 LCD1602連接主控芯片</p><p>  LCD1602的程序?qū)懭胄枰袷匾幌盗械臅r許規(guī)律,具體如圖1.3:</p><p>  圖1.3 LCD1602寫操作時序</p><p>  根據(jù)圖1.3對需要顯示的數(shù)據(jù)(8位二進(jìn)制代碼)進(jìn)行寫程序和命令程序的編寫就可以順利的在顯示屏上的看到想要顯示的數(shù)據(jù)。</

23、p><p><b>  1.2設(shè)計實(shí)現(xiàn)原理</b></p><p>  1.2.1實(shí)現(xiàn)設(shè)計的大體思路</p><p>  首先,我們用紅外遙控器發(fā)出一段NEC格式的信號,將信號發(fā)送給接收端,接收端將信號放大并將信號傳送至外部中斷INT0口,通過軟件編程對時序信號進(jìn)行解碼,然后將解碼后的數(shù)據(jù)送入循環(huán)程序,編程使這個數(shù)據(jù)能控制循環(huán)程序中進(jìn)入中斷的次數(shù),

24、中斷在程序中循環(huán)的次數(shù)不同,那么小燈的循環(huán)點(diǎn)亮的時間間隔也發(fā)生變化,例如:當(dāng)遙控器送入程序一個”2”時,程序中的中斷會循環(huán)兩次下一個小燈亮,讓每次循環(huán)的時間固定為50ms的話,那么兩次循環(huán)就是100ms,也就是說上一個小燈兩100MS后會熄滅,緊接著下一個小燈就點(diǎn)亮。當(dāng)遙控器送入程序一個”3”時,程序中的中斷會循環(huán)三次下一個小燈才會亮,那么上一個小燈和下一個小燈熄滅和點(diǎn)亮交換的時間就會變成150ms。通過這種對中斷次數(shù)控制的方法,我們就

25、可以是小燈的循環(huán)快慢發(fā)生明顯的變化,最后,通過編程,將兩個小燈高低電平反轉(zhuǎn)的時間間隔并依據(jù)LCD時序圖進(jìn)行軟件編程是這個時間能顯示在LCD1602液晶屏上。</p><p>  1.2.2 總體思路流程框圖</p><p>  圖1.4 設(shè)計原理框圖</p><p>  第2章 硬件電路設(shè)計</p><p>  2.1 LED小燈點(diǎn)亮模

26、塊</p><p>  對與LED小燈點(diǎn)亮部分,我們采用灌電流法將小燈連接在P1口,灌電流法就是從外部被動的將電流灌入小燈使小燈發(fā)亮,這種方法對硬件的條件需求低,而且工作更加穩(wěn)定。作圖方法是在每個小燈后面加一個300歐的電阻,在導(dǎo)通方向加一個電壓源。具體電路圖如2.1圖:</p><p>  圖2.1 LED小燈點(diǎn)亮電路圖</p><p>  2.2 LCD16

27、02顯示數(shù)據(jù)模塊</p><p>  LCD1602的顯示受”CLK”和”DIN”兩個功能拐腳控制,CLK是時鐘信號,DIN是寫數(shù)據(jù)和寫命令信號,但是輸入命令還是數(shù)據(jù),要根據(jù)時鐘信號和寫操作時序(見圖1.3)來確定.在本課程設(shè)計中,LCD1602的顯示電路圖如圖2.2:</p><p>  圖2.2 LCD1602顯示電路圖</p><p>  2.3完整電路圖設(shè)

28、計</p><p>  我們將以上所有模塊的設(shè)計思路綜合起來就可以得到完整的設(shè)計電路圖,總的電路圖如圖2.3:</p><p>  圖2.3設(shè)計電路圖總圖</p><p><b>  第3章軟件編程設(shè)計</b></p><p>  3.1 各模塊程序設(shè)計</p><p>  3.1.1 LED

29、小燈的循環(huán)點(diǎn)亮編程</p><p> ?。?)程序編寫大體思路框圖:</p><p>  圖3.1編程設(shè)計框圖</p><p><b>  (2)程序如下:</b></p><p>  #include<reg51.h></p><p>  #include<intrins.h&

30、gt;</p><p>  #define uchar unsigned char</p><p>  uchar clockNum,flag;</p><p>  uchar fixTime;</p><p>  void init()</p><p><b>  {</b></p>

31、<p>  clockNum = flag = 0;</p><p>  fixTime = 6;</p><p>  P1 = 0xfe;</p><p>  TMOD = 0x01;</p><p>  TH0 = 0x4c;</p><p>  TL0 = 0x00;</p><

32、p><b>  ET0 = 1;</b></p><p><b>  TR0 = 1;</b></p><p><b>  EA = 1;</b></p><p><b>  }</b></p><p>  void main()</p>

33、<p><b>  {init();</b></p><p><b>  while(1)</b></p><p>  {if(flag == 1)</p><p>  {P1 = _cror_(P1,1);//循環(huán)移位</p><p><b>  flag =

34、 0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void T0_Interrupt_Process() interrupt 1</p><

35、p>  {TH0 = 0x4c;</p><p>  TL0 = 0x00;</p><p>  if(clockNum++ == fixTime)</p><p>  {flag = 1;</p><p>  clockNum = 0;</p><p><b>  }</b><

36、/p><p><b>  }</b></p><p>  3.1.2遙控器編程</p><p> ?。?)遙控器編程思路框圖:</p><p>  圖3.2 遙控器編程框圖</p><p><b> ?。?)遙控器編程</b></p><p>  程序編

37、寫量較大,見附錄Ⅱ</p><p>  3.2 總的整合程序</p><p><b>  程序如下:</b></p><p>  #include<reg52.h></p><p>  #include"1836.h"</p><p>  #define uchar

38、 unsigned char</p><p>  #define uint unsigned int</p><p>  void delayms(uchar max)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=max;i!=

39、0;--i)</p><p>  for(j=110;j!=0;--j);</p><p><b>  }</b></p><p>  void init()</p><p><b>  {</b></p><p>  init_1836();</p><

40、p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  init();</b></p><p>  while(1);</p><p><b>  }&

41、lt;/b></p><p>  主程序中的子程序見附錄Ⅰ到Ⅳ。</p><p>  第4章 實(shí)際應(yīng)用結(jié)果</p><p><b>  4.1模塊仿真</b></p><p>  4.1.1 LED小燈循環(huán)顯示仿真圖:</p><p>  如下圖所見,此時LED小燈在自右至左無限循環(huán),小

42、燈的循環(huán)速度是經(jīng)過300MS下一個小燈變亮。</p><p>  圖4.1 LED燈循環(huán)顯示仿真</p><p>  4.1.2 LCD1602仿真顯示</p><p>  經(jīng)過對程序的運(yùn)行,LED燈循環(huán)點(diǎn)亮的速度顯示在了LCD1602液晶顯示屏上了。</p><p>  圖4.2 LCD1602顯示仿真</p><

43、p><b>  4.2總圖仿真結(jié)果</b></p><p>  當(dāng)程序添加到畫好的電路圖后并進(jìn)行仿真運(yùn)行,此時LED小燈成功的循環(huán),而且LCD1602液晶顯示屏上也顯示出了相應(yīng)的速度。由于紅外遙控器在仿真軟件里無法仿真,所以下圖中的電路圖中沒有畫出。這里需要另外說明的是實(shí)物運(yùn)行是成功的。</p><p><b>  圖4.3總圖仿真</b>

44、</p><p>  第5章 課設(shè)心得體會</p><p>  這一次單片機(jī)課程設(shè)計歷時兩個星期,過程曲折可謂一語難盡。在此期間我們也失落過,也曾一度熱情高漲。從開始時滿富盛激情到最后汗水背后的復(fù)雜心情,點(diǎn)點(diǎn)滴滴無不令我回味無長。從剛開始的熱情滿滿,到中間部分一度陷入死胡同的糾結(jié),再到最后面對現(xiàn)實(shí),進(jìn)一步埋頭苦學(xué)。這一點(diǎn)一滴的內(nèi)心的感受和心理歷程,實(shí)在是讓人感受良多啊。但是最終還是經(jīng)過漫

45、長的學(xué)習(xí),克服重重的困難,還是按規(guī)定時間完成了課設(shè)要求。 其實(shí)生活同樣是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動是人類生存生活永恒不變的話題。通過實(shí)際的設(shè)計操作,我才真正領(lǐng)略到“艱苦奮斗”這一詞的真正含義,我才意識到老一輩電子設(shè)計為我們的社會付出。我想說,設(shè)計確實(shí)有些辛苦,但苦中也有樂,在如今單一的理論學(xué)習(xí)中,很少有機(jī)會能有實(shí)踐的機(jī)會。在做課設(shè)的過程中,我和同學(xué)們相互交流,相互討論,相互學(xué)習(xí)。在一起做課設(shè)的這段時間,我們有說有笑,

46、相互幫助,配合默契,多少汗水和歡樂在這里灑下,大學(xué)里一年的相處還趕不上這十來天的合作,我感覺我和同學(xué)們之間的距離更加近了。我想說,做課設(shè)確實(shí)很累,但當(dāng)我們看到自己所做的成果時,心中也不免產(chǎn)生興奮。同樣的我們也可以為社會作出我們應(yīng)該做的</p><p><b>  附錄Ⅰ</b></p><p><b>  主程序編寫:</b></p>

47、<p>  #include<reg52.h></p><p>  #include"1836.h"</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  void delayms(u

48、char max)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=max;i!=0;--i)</p><p>  for(j=110;j!=0;--j);</p><p><b>  }</b></p&

49、gt;<p>  void init()</p><p><b>  {</b></p><p>  init_1836();</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</

50、b></p><p><b>  init();</b></p><p>  while(1);</p><p><b>  }</b></p><p><b>  附錄Ⅱ</b></p><p>  遙控器部分編程(1836.h):</p

51、><p>  #include<reg52.h> //包含單片機(jī)寄存器的頭文件</p><p>  #include<intrins.h> //包含_nop_()函數(shù)定義的頭文件</p><p>  #include"cror.h"</p><p>  #include"lcd.h&qu

52、ot;</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};</p><p>  #define DEFAULTNU

53、M 6</p><p>  uchar code table[]={0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,</p><p>  0x7f,0x6f,0x77,0x7c,</p><p>  0x39,0x5e,0x79,0x71};</p><p>  s

54、bit IRIN=P3^2; //紅外接收器數(shù)據(jù)線</p><p>  uchar IRCOM[7];</p><p><b>  uchar m;</b></p><p>  //************************************************************</p>&l

55、t;p>  void delay(uchar x) //x*0.14MS</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  while(x--)</p><p><b>  {</b></p>

56、;<p>  for (i = 0; i<13; i++){}</p><p><b>  }</b></p><p><b>  }</b></p><p>  void writeString(uchar *s,uchar num)</p><p><b>  {&

57、lt;/b></p><p><b>  uchar i;</b></p><p>  writeCom(0x06);</p><p>  for(i=0;i!=num;++i)</p><p>  writeDate(*(s+i));</p><p><b>  }</b&

58、gt;</p><p>  void display(uchar num)</p><p><b>  {</b></p><p>  uint msTime = num*50;//設(shè)置的是50ms中斷一次</p><p>  uchar ge,shi,bai;</p><p>  bai =

59、 msTime / 100;</p><p>  shi = msTime / 10 % 10;</p><p>  ge = msTime % 10;</p><p><b>  clearn();</b></p><p>  writeString("velocity:",9);</p>

60、;<p>  writeDate(bai+0x30);</p><p>  writeDate(shi+0x30);</p><p>  writeDate(ge+0x30);</p><p>  writeString("ms",2);</p><p><b>  }</b></

61、p><p>  void init_1836()</p><p><b>  {</b></p><p>  init_lcd();</p><p>  init_cror();</p><p>  m = DEFAULTNUM;</p><p>  IRIN=1;

62、 //I/O口初始化</p><p>  IE= IE | 0x81; //允許總中斷中斷,使能 INT0 外部中斷</p><p>  TCON=TCON|0x01; //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)</p><p>  display(getParam());</p>

63、<p><b>  }</b></p><p>  void INT0_Interrupt_Process() interrupt 0</p><p><b>  {</b></p><p>  unsigned char j,k,N=0;</p><p>  unsigned cha

64、r q=0;</p><p>  EX0 = 0; </p><p>  delay(15);//先延遲0.14*15 = 2.1ms</p><p>  if (IRIN==1) </p><p><b>  { </b></p><p><b>  EX0 =1;</b&

65、gt;</p><p><b>  return;</b></p><p><b>  } </b></p><p>  //確認(rèn)IR信號出現(xiàn)</p><p>  while (!IRIN) //等IR變?yōu)楦唠娖?,跳過9ms的前導(dǎo)低電平信號。</p><p&

66、gt;  delay(1);//延遲0.14ms</p><p>  for (j=0;j<4;j++) //收集四組數(shù)據(jù)</p><p><b>  { </b></p><p>  for (k=0;k<8;k++) //每組數(shù)據(jù)有8位</p><p><b&g

67、t;  {</b></p><p>  while (IRIN) //等 IR 變?yōu)榈碗娖?,跳過4.5ms的前導(dǎo)高電平信號。</p><p><b>  {</b></p><p>  delay(1); //延遲0.14ms</p><p><b>  }</b&g

68、t;</p><p>  while (!IRIN) //等 IR 變?yōu)楦唠娖?lt;/p><p><b>  delay(1);</b></p><p>  while (IRIN) //計算IR高電平時長</p><p><b>  {</b></p><p&

69、gt;  delay(1);//延遲2.1ms</p><p>  N++; </p><p><b>  if(N>=30)</b></p><p><b>  { </b></p><p><b>  EX0=1;</b></p>

70、<p><b>  return;</b></p><p>  } //0.14ms計數(shù)過長自動離開。</p><p>  } //高電平計數(shù)完畢 </p><p>  IRCOM[j]=IRCOM[j] >>

71、1; //數(shù)據(jù)最高位補(bǔ)“0”</p><p><b>  if(N>=8)</b></p><p><b>  {</b></p><p>  IRCOM[j] = IRCOM[j] | 0x80; //數(shù)據(jù)最高位補(bǔ)“1”</p><p><b>  } </b

72、></p><p><b>  N=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(IRCOM[2]!=~IRCOM[3])</p><p><b>  { <

73、/b></p><p><b>  EX0=1;</b></p><p><b>  return; </b></p><p><b>  }</b></p><p>  /*****************數(shù)值轉(zhuǎn)換****************************

74、***/</p><p>  IRCOM[5]=IRCOM[2] & 0x0F; //取鍵碼的低四位</p><p>  IRCOM[6]=IRCOM[2] >> 4; //右移4次,高四位變?yōu)榈退奈?lt;/p><p>  if(IRCOM[5]>9)</p><p><b>  { &l

75、t;/b></p><p>  IRCOM[5]=IRCOM[5]+0x37;</p><p><b>  }</b></p><p><b>  else</b></p><p>  IRCOM[5]=IRCOM[5]+0x30;</p><p>  if(IRCOM

76、[6]>9)</p><p><b>  { </b></p><p>  IRCOM[6]=IRCOM[6]+0x37;</p><p><b>  }</b></p><p><b>  else</b></p><p>  IRCOM[6]=

77、IRCOM[6]+0x30;</p><p>  q= (((IRCOM[6]&0x0f)<<4) + (IRCOM[5]&0x0f));</p><p>  /****************************************/</p><p>  switch(q) //判斷按鍵鍵碼值</p><

78、;p><b>  {</b></p><p>  case 0x16:m=0;break; </p><p>  case 0x03:m=1;break; </p><p>  case 0x18:m=2;break; </p><p>  case 0x55:m=3;break; </p>&

79、lt;p>  case 0x09:m=13;break; </p><p>  default :break; </p><p><b>  }</b></p><p><b>  switch(m)</b></p><p><b>  {</b></p>

80、<p><b>  case 0:</b></p><p>  setParam(1);</p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  setParam(5);</p><

81、p><b>  break;</b></p><p><b>  case 2:</b></p><p>  setParam(10);</p><p><b>  break;</b></p><p><b>  case 3:</b></p

82、><p>  setParam(15);</p><p><b>  break;</b></p><p><b>  case 13:</b></p><p>  setParam(0);</p><p><b>  break;</b></p

83、><p>  default:break;</p><p><b>  }</b></p><p>  display(getParam());</p><p><b>  EX0 = 1; </b></p><p><b>  }</b></p>

84、;<p><b>  附錄Ⅲ</b></p><p>  LED小燈循環(huán)程序(cror.h):</p><p>  #include<reg52.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned cha

85、r</p><p>  uchar clockNum;</p><p>  uchar fixTime;</p><p>  void init_cror()</p><p><b>  {</b></p><p>  clockNum = 0;</p><p>  fix

86、Time = 6;</p><p>  P1 = 0xfe;</p><p>  TMOD = TMOD | 0x01;</p><p>  TH0 = 0x4c;</p><p>  TL0 = 0x00;</p><p><b>  ET0 = 1;</b></p><p&

87、gt;<b>  TR0 = 1;</b></p><p><b>  EA = 1;</b></p><p><b>  }</b></p><p>  uchar getParam()</p><p><b>  {</b></p>&l

88、t;p>  return fixTime;;</p><p><b>  }</b></p><p>  void setParam(uchar parm)</p><p><b>  {</b></p><p>  fixTime = parm;</p><p>  

89、clockNum = 0;</p><p><b>  }</b></p><p>  void T0_Interrupt_Process() interrupt 1</p><p><b>  {</b></p><p>  TH0 = 0x4c;</p><p>  TL

90、0 = 0x00;</p><p>  if(clockNum++ >= fixTime)</p><p><b>  {</b></p><p>  clockNum = 0;</p><p>  P1 = _cror_(P1,1);//循環(huán)移位</p><p><b>  }

91、</b></p><p><b>  }</b></p><p><b>  附錄Ⅳ</b></p><p>  LCD1602顯示程序(lcd.h):</p><p>  #include<reg52.h></p><p>  #define uch

92、ar unsigned char</p><p>  sbit lcden = P3^4;</p><p>  sbit lcdrs = P3^5;</p><p>  sbit duanxuan = P2^6;</p><p>  sbit weixuan = P2^7;</p><p>  void delayti

93、me(uchar time)</p><p>  {uchar i,j;</p><p>  for(i=time;i!=0;--i)</p><p>  for(j=110;j!=0;--j);</p><p><b>  }</b></p><p>  void writeCom(uchar

94、 com)</p><p>  {lcdrs = 0;</p><p>  lcden = 0;</p><p><b>  P0 = com;</b></p><p>  delaytime(5);</p><p>  lcden = 1;//改</p><p>  

95、delaytime(5);</p><p>  lcden = 0;</p><p><b>  }</b></p><p>  void writeDate(uchar date)</p><p><b>  {</b></p><p>  lcdrs = 1;</p

96、><p>  P0 = date;</p><p>  delaytime(5);</p><p>  lcden = 1;//改</p><p>  delaytime(5);</p><p>  lcden = 0;</p><p><b>  }</b></p&g

97、t;<p>  void clearn()</p><p><b>  {</b></p><p>  writeCom(0x01); //清屏</p><p>  writeCom(0x80);//從頭顯示</p><p><b>  }</b></p><

98、;p>  void init_lcd()</p><p><b>  {</b></p><p>  weixuan = 0;</p><p>  duanxuan = 0;</p><p>  writeCom(0x38);//設(shè)置格式啟動</p><p>  writeCom(0x0c

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論