久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2751|回復: 0
打印 上一主題 下一主題
收起左側

基于單片機紅綠燈系統設計論文

[復制鏈接]
跳轉到指定樓層
樓主
ID:217382 發(fā)表于 2017-7-5 16:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
數理與信息工程學院
課 程 設 計
   
題    目:      路口燈火控制及顯示系統設計        
專    業(yè):    計算機科學與技術  
班    級:             056班                    
姓    名:   ***     學號:***         
成    績:                                 
目 錄
第1節(jié)   引 言………………………………………………………………………    3
1. 1路口燈火控制及顯示系統概述…………………………………………3
     1.2設計任……………………………………………3
1. 3  系統主要功能   …………………………………………………………     3
第2節(jié)口燈火控制及顯示系統硬件設計……………………………………………    4
2.1系統的硬件構成及功能 …………………………………4
    2.2  設計中用到的芯片及其功能…………………………………………………    6
    2.2.1  8279芯片的說明    …………………………………………………    6
    2.2.2  其它器件的說明    …………………………………………………    7
    2.2.3  其它器件的說明    …………………………………………………    7
第3節(jié)   系統軟件設計        ……………………………………………        9
3.1  系統主程序設計         …………………………………………………     9
   3.1.1程序框圖及說明      …………………………………………………     9
3.2顯示子程序及說明         ………………………………………………      11   
3. 3延時子程序的計算           ………………………………………………     12
3. 4各鍵的功能                 ………………………………………………     12
第4節(jié) 結束語            ……………………………………………………      13
   
參考文獻 ………………………………………………………………14
源程序 ………………………………………………………………………………15
路口燈火控制及顯示系統
第1節(jié)  引  言
隨著經濟的不斷發(fā)展,越來越多的汽車進入普通老百姓家中,使得人們的生活質量不斷提高,但是另一方面也容易引起交通堵塞,因此應在車輛通行繁忙的十字交叉路口設置的燈火控制系統來控制交通。單片機具有體積小、功能強可靠性高、價格低廉等一系列優(yōu)點,不僅已成為工業(yè)測控領域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個角落,有力地推動了各行業(yè)的技術改造和產品的更新換代,應用前景廣闊。隨著電子技術的迅速發(fā)展,特別是隨大規(guī)模集成電路出現,給人類生活帶來了根本性的改變。因此利用單片機來控制十字交叉路口設置的燈火及顯示有關提醒信息。
1.1  路口燈火控制及顯示系統概述
本系統是車輛通行繁忙的十字交叉路口設置的燈火控制及顯示系統,其特點是:道路較窄而車輛通行較多,支線、干線的車輛通行時間不等,并設有左右彎道通行時間,允許人工監(jiān)控或修改各線通行時間,同時設有道路應急控制。16X16點陣LED液晶器可隨著按鍵的不同,顯示的內容也不相同。
1.2  設計任務
(1)干道:左右彎道:占時5秒。顯示如上圖所示的第四位;直道:占時35秒,顯示如上圖所示的高兩為。
(2)支道:左右彎道;占時5秒,顯示如上圖所示的二三位;直道:占時25秒,顯示如上圖所示的第0位。
(3)同時的幾位燈在直道時那位亮,在彎道時那位亮。
(4)在綠燈轉紅燈時,閃爍3次,變黃延時五秒變紅燈。
(5)按一個按鍵K1時,顯示為雨天小心。
(6)按一個按鍵K2時,顯示為一路順風。
1.3  系統主要功能
其主要功能有:在正常的情況下,干道通行時間為40秒,其中左右彎道占時5秒,直道通行時間為25秒,其中左右彎道占時5秒,直道占時20秒。并且能夠在人工監(jiān)控狀態(tài)下,干道、支道通行時間通過鍵盤修改或通過開關人為控制。在下雨天,則按“K1”鍵,16X16點陣LED液晶器顯示“雨天小心”。在晴天,則按“K2”鍵,顯示“一路順風”。
第二節(jié)
路口燈火控制及顯示系統硬件設計
燈火控制系統的硬件設計以MCS-51單片機為主控器,包括一個擴展存儲器(這里用的是32K的6264型號的EEPROM、 一個25鍵鍵盤、I/O口的擴展(8255)、地址的鎖存(74LS373或74LS273)、還有反向器(7407)、8X8點陣LED液晶器4塊、4~16線譯碼器74LS154一塊、三極管S8050和S8550各16根、4.7KΩ電阻32根、二個8255A芯片、還有十二盞指示燈。
2.1  系統的硬件構成及功能
(1)硬件設計(硬件結構圖如下圖所示)
                                                                       
                                                         
                                                   圖 2
16X16點陣LED液晶顯示電路:
硬件系統在該系統中的作用主要是進行數據的傳送,有關邏輯的計算,并且提供顯示,人為的進行數據的修改,系統的啟動,停止等等。此外系統運行的安全可靠性要靠硬件系統來實現。
硬件系統的設計還應滿足以下原則:
(1) 滿足系統的設計要求,易于操作維護。
(2) 系統功能靈活,便于擴展。
(3) 具有自動診斷功能。
硬件系統的設計主要包括下面的工作:
a:擴展存儲器:本系統設計中用到的是6264EPROM即可做程序存儲器又可做數據存儲器。它跟2個74LS373地址鎖存器相連,用到A0——A14共15根地址線,所以他的尋址范圍0——7FFFH。
b .配置25鍵鍵盤,其中“A”為啟動鍵,B為停止鍵.擴展并行接口8255A.c鍵為修改鍵,e,f鍵人工控制鍵。在該系統中列線用到的是8279的SL經過74LS138的8根列線中的3跟Y0,Y1,Y5,行線是8279的RL8根輸出線。
2.2  設計中用到的芯片及其功能
2.2.1 8251芯片的說明
  8051芯片

MCS-51系列單片機芯片均為40條引腳,HMOS工藝制造的芯片用雙列直插(DIP)方式封裝,其引腳示意及功能分類如圖1.2所示。

各引腳功能說明如下:
1.        主電源引腳
Vcc(40腳):接+5V電源正端。
Vss(20腳):接+5V電源地端。
    2. 外接晶體引腳
XTAL1(19腳):接外部石英晶體的一端。在單片機內部,它是一個反相放大器的輸入端,這個放大器構成了片內振蕩器。當采用外部時鐘時,對于HMOS
單片機,該引腳接地;對于CHMOS單片機,該引腳作為外部振蕩信號的輸入端。
XTAL2(18腳):接外部石英晶體的另一端。在單片機內部,它是片內振蕩器的反相放大器的輸出端。當采用外部時鐘時,對于HMOS單片機,該引腳作為外部振蕩信號的輸入端;對于CHMOS單片機,該引腳懸空不接。
2.        輸入/輸出引腳
    (1) P0口(39~32腳):P0.0~P0.7統稱為P0口。在不接片外存儲器與不擴展I/O口時,可作為準雙向輸入/輸出口。在接有片外存儲器或擴展I/O口時,P0口分時復用為低8位地址總線和雙向數據總線。
    (2) P1口(1~8腳):P1.0~P1.7統稱為P1口,可作為準雙向I/O口使用。對于52子系列,P1.0與P1.1還有第二功能:P1.0可用作定時器/計數器2的計數脈沖輸入端T2,P1.1可用作定時器/計數器2的外部控制端T2EX。
(3) P2口(21~28腳):P2.0~P2.7統稱為P2口,一般可作為準雙向I/O口使用;在接有片外存儲器或擴展I/O口且尋址范圍超過256字節(jié)時,P2口用作高8位地址總線。
                  表2.1   P3口第二功能
引   腳        第二功能
P3.0        RXD   串行口輸入
P3.1        TXD   串行口輸出端
P3.2        INT0   外部中斷0請求輸入端,低電平有效
P3.3        INT1外部中斷1請求輸入端,低電平有效
P3.4        T0     定時器/計數器0計數脈沖輸入端
P3.5        T1     定時器/計數器1計數脈沖輸入端
P3.6        WR    外部數據存儲器寫選通信號輸入端,低電平有效
P3.7        RD     外部數據存儲器讀選通信號輸入端,低電平有效
(4) P3口(10~17腳):P3.0~P3.7統稱為P3口。除作為準雙向I/O口使用外,還可以將每一位用于第二功能,而且P3口的每一條引腳均可以獨立定義為第一功能的輸入輸出或第三功能。P3口的第二功能如表2.1所示。
4. 控制線
   (1) ALE/PROG(30腳):地址鎖存有效信號輸入端。ALE在每個機器周期內輸出兩個脈沖。在訪問片外程序存儲器期間,下降沿用于控制鎖存P0輸出的低8位地址;在不訪問片外程序存儲器期間,可作為對外輸出的時鐘脈沖或用于定時目的。但要注意,在訪問片外數據存儲器期間,ALE脈沖會跳空一個,此時作為時鐘輸出就不妥了。
對于片內含有EPROM的機型,在編程期間,該引腳用作編程脈沖PROG的輸入端。
   (2) PSEN(29腳):片外程序存儲器讀選通信號輸出端,低電平有效。當從外部程序存儲器讀取指令或常數期間,每個機器周期該信號兩次有效,以通過數據總線P0口讀回指令或常數。在訪問片外數據存儲器期間,PSEN信號將不再出現。
   (3) RST/VPD引腳(9腳):RST即為RESET,VPD為備用電源。該引腳為單片機的上電復位或掉電保護端。當單片機振蕩器工作時,該引腳上出現持續(xù)兩個機器周期的高電平,就可實現復位操作,使單片機回復到初始狀態(tài)。上電時,考慮到振蕩器有一定的起振時間,該引腳上高電平必須持續(xù)10ms以上才能保證有效復位。
當Vcc發(fā)生故障,降低到低電平規(guī)定值或掉電時,該引腳可接上備用電源VPD(+5V)為內部RAM供電,以保證RAM中的數據不丟失。
   (4)EA/Vpp(31腳):EA為片外程序存儲器選用端。該引腳有效(低電平)時,只選用片外程序存儲器,否則單片機上電或復位后選用片內程序存儲器。
對于片內含有EPROM的機型,在編程期間,此引腳用作21V編程電源Vpp的輸入端。
綜上所述,MCS-51系列單片機的引腳可歸納為以下兩點:
(1)        單片機功能多,引腳數少,因而許多引腳都有第二功能。
(2)        單片機對外呈現3總線形式,由P2、P0口組成16位地址總線;由P0
口分時復用為數據總線;由ALE、PSEN、RST、EA與P3口中的INT0、INT1、T0、T1、WR、RD共10個引腳組成控制總線,如圖2.1(b)所示。由于是16位地址線,因此,可使片外存儲器的尋址范圍達到64KB。
2.2.2  8279芯片的說明
該芯片為一種專用的鍵盤顯示器接口芯片,能對顯示器進行自動掃描,能自動識別鍵盤的鍵號,大大減輕了CPU的負擔。在這個系統中它主要的作用是形成鍵盤,顯示器。提供人工控制的物理系統。
8279的組成:數據緩沖器,I/O控制邏輯,控制和定時寄存器及定時與控制電路,掃描計數器,回復
緩沖器,鍵盤去抖動及控制電路,FIFO/傳感器RAM及其狀態(tài)寄存器,顯示RAM及顯示地址寄存器等組成。
8279的結構及引腳功能:
8279的內部結構由數據緩沖器,I/O控制邏輯,控制和定時器及定時控制電路,掃描計數器,回復緩沖器,鍵盤去抖動及控制電路,FIFO/傳感器RAM及其狀態(tài)寄存器,顯示RAM及顯示地址寄存器等部分組成.
(1)數據緩沖器及I/O控制邏輯   數據緩沖器是一個雙向緩沖器,它連接內部總線和外部總線,用于傳送CPU和8279之間的命令,數據和狀態(tài).I/O控制邏輯完成對芯片的讀寫控制,芯片選擇以及端口選擇.
(2)控制和定時器及定時用來寄存操作命令字.
(3)掃描計數器   掃描計數器有兩種工作方式.一種為外部譯碼方式.計數器以二進制方式計數,4位計數狀態(tài)從掃描線SL0-SL3輸出,經外部譯碼器譯碼后,形成16位掃描信號;另一種為內部譯碼方式.該方式下,掃描計數器的低二位經內部譯碼后從SL0-SL3輸出,形成4位掃描信號.
(4)回復緩沖器,鍵盤去抖動及控制電路   回復緩沖器緩沖并鎖存來自SL0-SL7八根回復線的回復信號.
(5)FIFO/傳感器RAM及其狀態(tài)寄存器   FIFO/傳感器RAM是一個雙重功能的8*8RAM.
(6)顯示RAM及顯示地址寄存器   顯示RAM用來存儲顯示數據,容量為16*8位.在顯示過程中,存儲的顯示數據輪流從顯示寄存器輸出.
在燈火控制實驗中,它的片選信號線接Q0、數據選擇輸入線接的是Q1,所以他的控制口地址是FF82H,數據口地址是FF80H,中斷是懸空的,因為鍵盤不是中斷方式是查詢方式。
2.2.3  其它器件的說明
6264靜態(tài)RAM擴展
6264是8k的8位靜態(tài)隨機存儲器芯片.CMOS工藝制作,單一+5V供電,28腳雙列直插式封裝.額定功耗為200MW.典型存取時間為200ns.地址線為A0-A14.
74LS373地址鎖存器
74LS373地址鎖存器是透明的帶有三態(tài)門的八D鎖存器.它的鎖存控制端可直接與單片機的鎖存控制信號端ALE相連,在ALE下降沿進行地址鎖存.當三態(tài)門的使能端信號線/E為低電平時.三態(tài)門處于導通狀態(tài),允許Q端輸出;當/E端為高電平時,輸出三態(tài)門斷開.輸出端對外部電路呈高阻狀態(tài).
74.LS138譯碼器
74LS138譯碼器有3個輸入端,組成8種輸入狀態(tài),輸出端有8個,每個輸出端對應8種輸入狀態(tài)的一種,低電平有效。此外還有3個使能端E3,E2,E1,這3個使能端必須同時輸入有效電平,譯碼器才能工作,既E3=1,E2=0,E1=0。
8255可編程接口芯片
(1) 三個并行I/O口-A口,B口,C口在此設計中用到了A,B兩個口。
(2) 工作方式控制電路;
(3) 讀寫控制邏輯電路;
(4) 數據總線緩沖器;
引腳功能:CS片選信號,RD讀入信號線,WR寫入信號,A1,A0—端口選擇信號;RESET復位信號線,Vcc,GND等。
74LS240驅動器
    在該系統中它是作為線驅動器起驅動作用的,它的輸入端1A1----1A4,2A1----2A4,與8279的輸出端相連,輸出端與雙色LED燈相連。其引腳圖為附件。
第3節(jié)   系統的軟件設計
在該系統的軟件設計中用到的是模塊程序設計,主要的模塊程序是鍵盤的模塊程序,它包括顯示的模塊程序,通過軟件的設計使系統有簡易的監(jiān)控功能,通過鍵盤可以修改通行時間和啟動或停止人工控制的路口燈火控制系統.
                                          
3.1  系統主程序設計
3.1.1程序框圖及說明
在本次設計中最后對鍵盤程序方案流程圖的確定如下圖所示:
在本次設計中鍵盤采用查詢方式,故在鍵盤程序的開始必須對現場進行保護,同時在查詢結束時不能影響相應程序段中在上一時刻的計數值,故在對鍵盤進行查詢完畢之后也必須能夠把正
確的返回值送給斷點,不能在此出現死循環(huán)(在調試中有此情況發(fā)生)。按照如下圖,所示框圖進行設計的調試后發(fā)現程序能夠很好的從死循環(huán)中跳出,繼續(xù)執(zhí)行其后的程序。但也必須考慮到在需要的時候不妨讓它暫時的進入到死循環(huán)狀態(tài)。比如在按下B、E、F,這三個鍵時,就必須讓程序在這里停止,不能讓它返回。圖中是讓它去繼續(xù)查詢有無別的按鍵,也就是說在這幾個鍵被按下的時候,如果沒有別的按鍵,它就一直在此等待,執(zhí)行自己相應的功能。
                    
                                       
          圖 1 初始化                            圖 2 8255干通支斷程序
                                    
          圖 3 8255干斷支通程序  
                                       圖 4 88255干通支斷轉換狀態(tài)程序
  
                 
圖 5 中斷服務程序
3.2顯示子程序及說明
主程序在剛上電時對系統進行初始化,然后讀一次鍵開關狀態(tài),由鍵標志位決定顯示的內容。
   
圖 6 顯示子程序
3.3延時子程序的計算
采用寄存器R0、R1、R2作為記數值,R2中暫存1,R1中存0。當減1后變?yōu)?55即R1中存數256。R0中存數#0B2H即178。
DELAY2延時為:
N=(2+2+2+1+1+2*178)+255*(1+1+2+2*178)=9164。
共計9164個指令周期,而系統晶振為11.0592。所以t=12/11.0592=1.085(微秒)
延時DELAY2為:
T=9164*1.085/1000000=0.09996
約等于0.1(秒)
通過改變R2的值可以改變延時的秒數。
3.4各鍵的功能
各鍵功能:
在本次設計中主要定義和調用了以下幾個鍵及其功能:A、B、C、D、E和F鍵。        各鍵功能如下所示:
A鍵  用于啟動主程序,如果沒有A鍵按下,則一直處于等待狀態(tài),所有的燈在此時為黃色,主程序不被執(zhí)行。
B鍵  用于在工作過程中對程序做急停處理,在鍵B被按下的時候主程序停止不動(在此要
注意對斷點的保護問題)。直到當有別的鍵被按下時才轉至相應鍵的功能支執(zhí)行相應的程序。
C鍵 用于做對任意時段時間的修改及其處理并且能夠自動返回到該時段的初始狀態(tài)重新進行計數(此數值即修改后的數值)。
E健 用于人工控制支斷干通狀態(tài)。無別的鍵按下便一直保持該狀態(tài)。
F健 用于人工控制支通干斷狀態(tài)。無別的鍵按下便一直保持該狀態(tài)。
結束語
這次課程設計我是把交通燈與16X16 LED液晶顯示器一起聯合起來寫的,因為對這些項目不太熟悉,只是結合自已平時來寫,因此有可能不是正確的。但經過這次課程設計,雖說沒做出成品,程序的設計也是參考網絡上的資料及書上的資料,因為我是計算機專業(yè)的,本身對電子方面的器件也不太熟悉,電路設計也不是太清楚。自已從中雖說沒真正了解其真正的設計過程,但是從參考中得到一些啟示,了解到在處理一些項目時,應該從哪幾方面入手,知道哪個問題應該從哪方面下手,知道這里所使用的器件是做什么用途,為自已以后去設計相類似的項目打下基礎,增加自已在單片機方面的一些經驗。通過這次課程設計,我從中了解到原來在我們的生活中各個方面都用到了單片機,單片機影響了人們的生活,因此我們作為計算機專業(yè)的學生,應該在這方面多下些功夫,等以后有機會,去設計真正的成品。
參考文獻
[1] 范風強 蘭嬋麗,《單片機語言C51應用實戰(zhàn)集錦(修訂版)》,電子工業(yè)出版社 北京
[2] 李光飛  樓苗然, 《51系列單片機        》,北京航空航天大學出版社         
[3] 潭浩強 ,《MCS-51單片機應用教程》,清華大學出版社                                 
[4] 梁廷貴 , 《現代集成電路手冊》, 科學技術文獻出版社
源程序
Z8279        EQU        0FF82H        ;8279狀態(tài)/命令口地址
D8279        EQU        0FF80H  ;8279數據口地址
LEDMOD        EQU        00H     ;左邊輸入八位字符顯示
                        ;外部譯碼鍵掃描方式,雙鍵互鎖
LEDFEQ        EQU        2FH     ;掃描速率
LEDCLS        EQU        0C1H    ;清除顯示RAM
LEDWR0        EQU        80H     ;設定的將要寫入的顯示RAM地址      
READKB  EQU     40H     ;讀FIFO RAM地址0的命令字
ORG                0000H
LJMP                START      ;主程序入口
ORG                0003H
LIMP                STARTA     ;開外部中斷
ORG                000BH
RETI
ORG                0013H
LIMP                STARTB     ;開外部中斷
                                             
顯示程序:
ORG 0000H
        MOV DPTR,#8406H ;8255控制口地址  
        MOV A,        #80H    ;命令字傳入控制口
        MOVX @DPTR,A
        LJMP START      ;開始程序     
        ORG 0040H
START: MOV 16H,#35      ;設定顯示秒數
        MOV SP,#30H     
        LCALL STATUS0   ;調用初始狀態(tài)全紅燈
STARTA: MOV                DPTR,#TAB1  
          PUSH     DPH
          PUSH     DPL
                  LJMP            START1
STARTB: MOV                DPTR,#TAB2
          PUSH     DPH
          PUSH     DPL
                  LJMP            START1
START:  JZ                  P3.2,STARTA
JZ                P3.3,STARTB
MOV                DPTR,#TAB
                  LJMP            START1
START1: LACALL   CLEARMEN
MOV                R4,#O3H                ;相臨字符串之間的間隔距離
MOV                R5,#40H                ;1幀顯示時間控制
LJMP                FUZHI
初始化程序:
CLEARMEN:MOV        A,#0FFH
MOV                R2,#50H
MOV DPTR, #1FFFH
MOV   A,   #80H
MOVX  @DPTR,  A
ZERO:   MOV          R2,A                        ;50H~6FH內存單元清零
INC                R2
CJNE                R2,#6FH,ZERO
RET
掃描子程序:
DISPLAY: MOV          A,#0FFH
           MOV  DPTR,#1FFCH
           MOVX  @DPTR,  A
           MOV  DPTR,#1FFDH
MOVX   @DPTR,  A                        ;關掃描
MOV    DPTR, #1FFEH
MOVX   @DPTR,A
                       
MOV                R6,#OFH  ;關顯示數據
MOV                R2,#6FH
DISLOOP:
MOV  DPTR,#1FFDH
          MOV    A,  R2
          MOVX  @DPTR,A
DEC                R2
MOV    A,R2
MOV  DPTR,#1FFCH
          MOV    A,  R2
MOVX  @DPTR,A
MOV  DPTR,#1FFEH
          MOV    A,  R6
MOVX  @DPTR,A
LCALL        DL1MS                        ;延時程序
JZ                R6,PAND                ;判斷結束跳轉程序
DEC                R2
DEC                R6
CIRCLE:   
LCALL STATUS1   ;南北綠燈東西紅燈
LCALL STATUS2   ;南北綠燈閃轉黃燈東西紅燈
LCALL STATUS3   ;南北紅燈東西綠燈
LCALL STATUS4   ;南北紅燈東西綠燈閃轉黃燈
LJMP                DISLOOP
賦值程序:
FUZHI:  POP  DPL
          POP  DPH
MOV                A,#00H
                  MOV                R0,#00H
DAT1:          MOV                A,@A+DPTR
MOV                6FH,A
LCALL        DISPLAY
判斷程序:
PAND:          DJNZ                R5,DISPLAY
                  CJNE                R0,#5FH,PAND2
                  LJMP                FUZHI2
PAND2:  ACALL   LEFT1
MOV                A,R0
INC                A
MOV                R0,A
                  LJMP                DAT1
FUZHI2:  INC                R4
JZ                R4,START
ACALL        LEFT1
LCALL        DISPLAY
左移程序:
LEFT1:  MOV                R2,#50H
MOV                A,#51H
MOV                R2,A
INC                R2
INC                A
CJNE                R2,#6FH,LEFT1
RET
延時程序:
DL1MS:  MOV                R7,#250                ;延時1        mS
L1:          DJNZ     R7,L1
                  RET
顯示數據表:
TAB1:DB  00H,00H,00H,00H,00H,10H,10H,0F0H                    ;雨
DB  10H,10H,00H,00H,00H,00H,00H,00H
DB  00H,00H,00H,7FH,01H,06H,09H,7FH
DB  06H,09H,11H,21H,7FH,00H,00H,00H
DB  00H,00H,00H,00H,00H,10H,10H,0F0H                    ;天
DB  10H,10H,00H,00H,00H,00H,00H,00H
DB  00H,40H,20H,10H,08H,04H,02H,01H
DB  01H,02H,04H,08H,10H,20H,40H,00H
DB  00H,00H,00H,00H,80H,40H,00H,0F0H                ;小
DB  00H,40H,80H,00H,00H,00H,00H,00H
DB  00H,00H,02H,01H,00H,10H,20H,3FH
DB  00H,00H,00H,02H,01H,00H,00H,00H
DB  00H,00H,80H,80H,00H,00H,00H,80H                 ;心
DB  00H,00H,00H,00H,00H,00H,00H,00H
DB  02H,01H,00H,00H,01H,02H,04H,06H
DB  09H,0AH,08H,08H,0AH,0DH,0AH,04H
TAB2:DB  00H,00H,00H,00H,00H,00H,00H,00H                    ;一
DB  00H,00H,00H,00H,00H,04H,0FFH,0FEH
DB  00H,00H,00H,00H,00H,00H,00H,00H
DB  00H,00H,00H,00H,00H,00H,00H,00H
DB  00H,40H,7CH,40H,44H,0FCH,45H,88H                ;路
DB  46H,50H,44H,20H,7CH,50H,50H,88H
DB  13H,06H,5CH,04H,50H,0F8H,50H,88H
DB  50H,88H,5CH,88H,0E0H,0F8H,00H,88H
DB  00H,04H,47H,0FEH,54H,20H,54H,40H                ;順
DB  55H,0FCH,55H,04H,55H,24H,55H,24H
DB  55H,24H,55H,24H,55H,24H,55H,24H
DB  54H,50H,44H,48H,84H,86H,01H,02H
DB  00H,10H,3FH,0F8H,20H,10H,28H,50H                    ;風
DB  24H,50H,22H,90H,22H,90H,21H,10H
DB  21H,10H,22H,90H,22H,90H,24H,50H
DB  28H,50H,30H,12H,40H,0AH,80H,06H
鍵盤服務程序:
FUWU00:      
        PUSH                 11H                              ;保護現場
        PUSH                 PSW
        LCALL        GETKEY                               ;判斷是否有鍵輸入
        CJNE                 A,                #0FFH,        JAP0
        MOV                 50H,                B
        MOV                 A,                50H
        CJNE     A,            #0BH,        PADJ           ;是否為B鍵
        LCALL         KEYB                                 ;調用B鍵服務功能
WAIT0:      
LCALL        GETKEY                                          ;等待有鍵輸入
        CJNE                 A,                #0FFH,        WAIT0
        MOV             50H,                B
        MOV                 A,                50H
        CJNE                 A,                #0AH,        PADJ           ;是否為A鍵
        LCALL         INIT8279                             ;清屏
        SJMP                 JAP0                             ;返回斷點
PADJ:      
MOV                 A,                50H           
        CJNE                 A,                #0CH,        PDJE0         ;判斷是否為C鍵
        LCALL        KEYC                             ;調用C鍵功能
        LCALL        KEYD                             ;調用D鍵功能
PDJE0:      
MOV                 A,                50H
        CJNE                 A,                #0EH,        PDJF0         ;判斷是否為E鍵
        LCALL        KEYE                             ;調用E鍵功能
PDJF0:      
MOV                 A,                50H
        CJNE                 A,                #0FH,        WAIT0         ;是否為F鍵
        LCALL        KEYF                                ;調用F鍵功能
        LJMP                 WAIT0                            ;繼續(xù)等待按鍵
JAP0:      
POP                 PSW                                 ;彈出堆棧
        POP                 11H
        RET                                            ;返回
FUWU01:      
        PUSH                 11H
        PUSH                 PSW
        LCALL        GETKEY
        CJNE                A,                #0FFH,        JAP01
        MOV                 50H,                B
        MOV                 A,                50H
        CJNE                 A,                #0BH,        PADJ1
        LCALL        KEYB
WAIT01:      
LCALL        GETKEY
        CJNE                 A,                #0FFH,        WAIT01
        MOV                 50H,                B
        MOV                 A,                50H
        CJNE                 A,                #0AH,        PADJ1
        LCALL        INIT8279
        MOV                 DPTR,        #8400H
        MOV                 A,                #96H
        MOVX                @DPTR,        A
        SJMP                 JAP01
PADJ1:      
MOV                 A,                50H
        CJNE                 A,                #0CH,        PDJE01
        LCALL        KEYC
        LCALL        KEYD1
PDJE01:      
MOV                 A,                50H
        CJNE                 A,                #0EH,        PDJF01
        LCALL        KEYE
PDJF01:      
MOV                 A,                50H
        CJNE                 A,                #0FH,        WAIT01
        LCALL        KEYF
        LJMP                 WAIT0
JAP01:      
POP                 PSW
        POP                11H
        RET
FUWU02:      
        PUSH                 11H
        PUSH                PSW
        LCALL        GETKEY
        CJNE                 A,                #0FFH,        JAP02
        MOV                 50H,                B
        MOV                 A,                50H
        CJNE                 A,                #0BH,        PADJ2
        LCALL        KEYB
WAIT02:      
LCALL        GETKEY
        CJNE                 A,                #0FFH,        WAIT02
        MOV                 50H,                B
        MOV                 A,                50H
        CJNE                 A,                #0AH,        PADJ2
        LCALL         INIT8279
        SJMP                  JAP02
PADJ2:      
MOV                 A,                50H
        CJNE                 A,                #0CH,        PDJE02
        LCALL        KEYC
        LCALL        KEYD2
PDJE02:      
MOV                 A,                50H
        CJNE                 A,                #0EH,        PDJF02
        LCALL        KEYE
PDJF02:      
MOV                 A,                50H
        CJNE                 A,                #0FH,        WAIT02
        LCALL        KEYF
        LJMP                 WAIT0
JAP02:      
POP                 PSW
        POP                 11H
        RET
FUWU03:      
        PUSH                 11H
        PUSH                 PSW
        LCALL        GETKEY
        CJNE                 A,                #0FFH,        JAP03
        MOV                 50H,                B
        MOV                 A,                50H
        CJNE                 A,                #0BH,        PADJ3
        LCALL        KEYB
WAIT03:      
LCALL        GETKEY
        CJNE                 A,                #0FFH,        WAIT03
        MOV                50H,                B
        MOV                 A,                50H
        CJNE                 A,                #0AH,        PADJ3
        LCALL        INIT8279
        SJMP                 JAP03
PADJ3:      
MOV                 A,                50H
        CJNE                 A,                #0CH,        PDJE03
        LCALL        KEYC
        LCALL        KEYD3
PDJE03:      
MOV                 A,                50H
        CJNE                 A,                #0EH,        PDJF03
        LCALL        KEYE
PDJF03:      
MOV                 A,                50H
        CJNE                 A,                #0FH,        WAIT01
        LCALL        KEYF
        LJMP                 WAIT0
JAP03:      
POP                PSW
        POP                 11H
        RET
鍵盤子程序:
KEYB:      
MOV                 R5,                #0BH                       ;在第七位顯示字符B
        MOV                 R4,                #06H
      
LCALL        ERROR                                          ;調用出錯程序
        RET
KEYC:      
LCALL        INIT8279         
        MOV                 R5,                #0CH                        ;在第七位顯示字符C
        MOV                 R4,                #06H
        LCALL        DISLED                                          ;調用顯示
WAIT1:      
LCALL        GETKEY                                             ;等待十位數據輸入
        CJNE                 A,                #0FFH,        WAIT1
        MOV                 R5,                B
        MOV                 31H,                B
        MOV                 R4,                #01H                        ;把數據送第二位顯示
        LCALL        DISLED            
WAIT2:      
LCALL        GETKEY                                      ;等待個位數據輸入
        CJNE                 A,                #0FFH,        WAIT2
        MOV                 R5,                B
        MOV                 30H,                B
        MOV                 R4,                #0                          ;把數據送第一位顯示
     LCALL        DISLED
        RET
KEYD:      
MOV                 A,                31H                          ;對十位數據進行處理
        MOV                 B,                #10
        MUL                 AB
        MOV                 B,                30H
        ADD                 A,                B
        MOV                 16H,                A                            ;把處理后的數據送入16H單元
        AJMP                 CIRCLE0                               ;轉到干道時間顯示
        RET
KEYD1:      
MOV                A,                31H
        MOV                 B,                #10
        MUL                 AB
        MOV                 B,                30H
        ADD                 A,                B
        MOV                 17H,                A                           ;處理后的數據送入17H單元
        AJMP                 CIRCLE1                              ;轉到干道的延時5S時間顯示
        RET
KEYD2:      
MOV                 A,                31H
        MOV                 B,                #10
        MUL                 AB
        MOV                 B,                30H
        ADD                 A,                B
        MOV                 18H,                A                          ;處理后的數據送入18H單元
        AJMP                 CIRCLE2                             ;轉到支道時間顯示
        RET
KEYD3:      
MOV                 A,                31H
        MOV                 B,                #10
        MUL                 AB
        MOV                 B,                30H
        ADD                 A,                B
        MOV                 19H,                A                               ;處理后的數據送入19H單元
        AJMP                 CIRCLE3                                  ;轉到支道的延時5S時間顯示
        RET
KEYE:      
MOV                 R5,                #0EH                            ;把字符E送到第七位顯示
        MOV                 R4,                #06H
        LCALL        DISLED
        MOV                 DPTR,        #8400H                          ;控制交通燈為南北綠,東西紅
        MOV                 A,                #96H
        MOVX                 @DPTR,         A
        RET
KEYF:      
MOV                 R5,                #0FH                            ;把字符F送到第七位顯示
        MOV                 R4,                #06H
        LCALL        DISLED
        MOV                 DPTR,        #8400H                          ;控制交通燈為南北紅,東西綠
        MOV                 A,                #69H
        MOVX                 @DPTR,        A
        RET
STATUS0:
        MOV DPTR , #8400H
        MOV A,#0FH
        MOVX @DPTR, A
        MOV R2,#10      ;延時一秒
        LCALL DELAY
        RET
STATUS1:                ;南北綠燈東西紅燈
        MOV DPTR , #8400H
        MOV A,#96H
        MOVX @DPTR, A
        MOV 11H,16H
        LCALL INIT8279  ;初始化清屏     
STA1:   LCALL LC        ;處理并調用顯示的數據
        MOV 15H,#07H    ;設定顯示位數
        MOV 14H,#06H
        MOV R5,12H
        LCALL DISPLAY   ;調用顯示
        MOV R5, 13H
        MOV R2,#10
        LCALL DELAY     ;延時
        LCALL FUWU      ;調用鍵盤服務程序
        DJNZ 11H,STA1   
        RET
STATUS2:                   ;南北綠燈閃轉黃燈東西紅燈
        MOV DPTR , #8400H
        MOV R3,#03H        ;閃爍三次
FLASH:
        MOV A,#9FH
        MOVX @DPTR,A
        MOV R2,#03H
        LCALL DELAY
        MOV A,#96H
        MOVX @DPTR,A
        MOV R2,#03H
        LCALL DELAY
        DJNZ R3,FLASH
        MOV A,#06H
        MOVX @DPTR,A
        LCALL INIT8279
        MOV 11H,#5          ;彎道時間
STA2:        LCALL LC
        MOV 14H,#4
        LCALL DISPLAY
        DJNZ 11H,STA2
        RET
STATUS3:                     ;南北紅燈東西綠燈
        MOV DPTR , #8400H
        MOV A,#69H
        MOVX @DPTR, A
        MOV 11H,#25          ;設定支道時間
        LCALL INIT8279
STA3:   LCALL LC
        MOV 15H,#03H
        MOV 14H, #02H      
        LCALL DISPLAY
        DJNZ 11H,STA3
        RET
STATUS4:                      ;南北紅燈東西綠燈閃轉黃燈
        MOV DPTR , #8400H
        MOV R3,#03H
FLASH1:
        MOV A,#6FH
        MOVX @DPTR,A
        MOV R2,#03H
        LCALL DELAY
        MOV A,#69H
        MOVX @DPTR,A
        MOV R2,#03H
        LCALL DELAY
        DJNZ R3,FLASH1
      
MOV A,#09H
        MOVX @DPTR,A
        MOV 11H,#05H
        LCALL INIT8279
STA4:        LCALL LC
        MOV 14H,#00H        ;讓該位顯示0
        LCALL DISPLAY
        DJNZ 11H,STA4
        RET
INIT8279:                   ;初始化
        MOV        DPTR,#Z8279                       
        MOV        A,#LEDMOD
        MOVX        @DPTR,A
        MOV        A,#LEDFEQ
        MOVX        @DPTR,A
        MOV        A,#LEDCLS
        MOVX        @DPTR,A
        LCALL        DELAY
        RET
DISLED:                      ;顯示字符子程序
        PUSH        DPH
        PUSH        DPL
        PUSH        ACC
        MOV        A,#LEDWR0
        ADD        A,R4
        MOV        DPTR,#Z8279
        MOVX        @DPTR,A
        MOV        DPTR,#LEDSEG
        MOV        A,R5
        MOVC        A,@A+DPTR
        MOV        DPTR,#D8279
        MOVX        @DPTR,A
        POP        ACC
        POP        DPL
        POP        DPH
        RET
DELAY:                      ;延時程序
        PUSH        0            ;延時100ms
        PUSH        1
       PUSH     2
DELAY1:        MOV        1,#0H
DELAY2:MOV 0,#0B2H
        DJNZ        0,$
        DJNZ        1,DELAY2
        DJNZ    2,DELAY1  
        POP     2
        POP        1
        POP        0
      
RET
DISPLAY:                    ;顯示字符程序
        MOV R5,12H        ;存高位
        MOV R4,15H        ;顯高位
        LCALL DISLED
        MOV R5,13H
        MOV R4,14H      
        LCALL DISLED
;        MOV R2,#10
;        LCALL DELAY
        ;MOV R5,#00H
        ;MOV R4,14H
        ;LCALL DISLED
        RET
LC:        MOV A, 11H         ;處理將要顯示的數據
        MOV B,#0AH
        DIV AB
        MOV 12H,A
        MOV 13H,B
        RET
ERROR:        LCALL STATUS0      ;顯示急停子程序
        MOV R5,#10H
        MOV R4,#05H
        LCALL DISLED
        MOV R5,#11H
        MOV R4,#04H
        LCALL DISLED
        MOV R5,#12H
        MOV R4,#03H
        LCALL DISLED
        MOV R5,#13H
        MOV R4,#02H
        LCALL DISLED
        RET
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久久久久久久 | 亚洲高清电影 | 欧美日韩国产一区二区三区不卡 | 国产精品一区二区av | 成人免费影院 | 国产视频福利 | 久久精品欧美一区二区三区麻豆 | 中文字幕免费在线 | 亚州精品天堂中文字幕 | 一区2区| 国产亚洲一区二区精品 | 亚洲国产精品一区二区久久 | 欧美中文字幕在线观看 | 日本a v在线播放 | 亚洲精品成人网 | 正在播放国产精品 | 黄色欧美 | 亚洲永久在线 | 精品国产一区二区 | 亚洲一区二区精品视频 | 亚洲国产成人一区二区 | 免费福利视频一区二区三区 | 久久久久国产一级毛片高清网站 | 天堂久久网 | 免费久久精品视频 | 免费视频二区 | 久久在线看 | 在线播放第一页 | 国产精品欧美一区二区三区不卡 | 国产三区在线观看视频 | 黑人巨大精品 | 国产精品资源在线观看 | 久久久久久久久久久丰满 | 黄色毛片在线看 | 久久精品中文 | 在线亚洲一区 | 黄色大片免费观看 | 天天爽夜夜骑 | 亚洲一区二区三区观看 | 日韩插插 | 看黄在线|