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

標(biāo)題: VHDL嵌入式交通燈課程設(shè)計報告 [打印本頁]

作者: 大可    時間: 2017-11-2 08:40
標(biāo)題: VHDL嵌入式交通燈課程設(shè)計報告
嵌入式課程設(shè)計報告

學(xué)院
信息電子技術(shù)
專業(yè)
通信工程
班級
20141
學(xué)籍號
1
姓名
CQ
指導(dǎo)教師
徐建東





201772


交通信號燈設(shè)計
1. 引言
   隨著交通量的快速增長和缺乏對道路的系統(tǒng)研究和控制,擴(kuò)建道路并沒有充分發(fā)揮出預(yù)期的作用。而城市道路多為十字路口、多交叉的特點(diǎn),也決定了城市交通道路狀況必然受這種露的制約。所以,如何采用合適的控制方法,最大限度利用好耗費(fèi)巨資修建的多車道道路,緩解城區(qū)的交通狀況,越來越成為交通運(yùn)輸管理和嘗試規(guī)劃部門急需解決的主要問題。在這種情況下,道路交通信號燈開始發(fā)揮了越來越重要的作用,因此研究交通燈具有現(xiàn)實(shí)意義。
2. 系統(tǒng)設(shè)計
(1)硬件電路設(shè)計
           file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC1C9.tmp.png
  交通燈控制系統(tǒng)框圖
    file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC1D9.tmp.jpg
交通燈控制系統(tǒng)總體電路圖
VHDL編寫程序?qū)崿F(xiàn)交通信號控制器的端口控制信號。其中, clk為標(biāo)準(zhǔn)的1HZ的時鐘信號;R為復(fù)位信號;SPC為緊急情況信號,負(fù)責(zé)緊急情況的處理,當(dāng)緊急情況發(fā)生時,南北主干道和東西支干道均顯示紅燈。  
該程序定義了4個狀態(tài)S0,S1,S2,S3。當(dāng)狀態(tài)為S0時,南北方向亮綠燈,東西方向亮紅燈60s;當(dāng)為狀態(tài)為S1時,南北方向亮黃燈,東西方向亮紅5s ;當(dāng)狀態(tài)為S2時,南北方向亮紅燈,東西方向綠燈35s;當(dāng)狀態(tài)為S3時,南北方向亮滅燈,東西方向滅燈6s;程序還設(shè)計了一個緊急信號情況,當(dāng)遭遇緊急情況時,主干道和支干道都亮紅燈。
   狀態(tài)一:主道綠燈次道綠燈持續(xù)時間小于65s時,狀態(tài)保持不變,若持續(xù)時間等于65s時,轉(zhuǎn)換到下一狀態(tài)黃燈。   
   狀態(tài)二:主道黃燈持續(xù)時間小于5s時,狀態(tài)保持不變,若持續(xù)時間等于5s時,轉(zhuǎn)換到下一狀態(tài)紅燈。   
  狀態(tài)三:主道黃燈次道紅燈持續(xù)時間小于35s時,狀態(tài)保持不變,若持續(xù)時間等于35s時,轉(zhuǎn)換到下一狀態(tài)滅燈。  
  狀態(tài)四:主道滅燈持續(xù)時間小于46s時,狀態(tài)保持不變,若持續(xù)時間等于6s時,轉(zhuǎn)換到下一狀態(tài)綠燈。
  狀態(tài)五:緊急情況都亮紅燈。
  2程序設(shè)計                              
       file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC1F9.tmp.png
   模塊一 :分頻器   
   分頻器實(shí)現(xiàn)的是將高頻時鐘信號轉(zhuǎn)換成低頻時鐘信號,clk信號經(jīng)分頻器將50MHz經(jīng)過PLL分頻為25MHz在經(jīng)過計數(shù)器分為1HZ.
      file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC20A.tmp.jpg
VHDL源程序:
library ieee;  
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div is  port(clk3:IN std_logic;      
clkout1:OUT std_logic);  
end div;  
architecture one of div is
begin  
process(clk3)
variable cnt:integer range 0 to 1250;
variable tmp:std_logic;
begin
ifclk3'event?and?clk3='1')then
If cnt>=1249
then
cnt:=0;
tmp:=not tmp;
Else cnt:=cnt+1;
End if;
End if;
clkout1<=tmp;
End process;
End one

時序仿真圖
  file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC22A.tmp.jpg
   模塊二: 控制器
   控制器的作用是根據(jù)計數(shù)器計數(shù)的值確定狀態(tài)轉(zhuǎn)換。本控制器的設(shè)計方法是利用時鐘沿的上升沿讀取前級計數(shù)器的計數(shù)值,然后做出反應(yīng)。主要控制紅、綠、黃燈的亮、滅。
                         file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC23B.tmp.jpg
VHDL源程序:
LIBRARY IEEE;  
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH;
ENTITY jiaotongd1 IS      
   PORT (CLK,R,SPC: IN STD_LOGIC;     --時鐘、復(fù)位、特殊情況      LIGHT: OUT STD_LOGIC_VECTOR(5 DOWNTO 0);     
--light:G1,R1,Y1,G2,R2,Y2;      
Q1,Q2 : OUT INTEGER RANGE 0 TO 65);   
END jiaotongd1   
ARCHITECTURE behav OF jiaotongd1 IS   
TYPE STATES IS (S0,S1,S2,S3);    --定義枚舉   
SIGNAL STATE : STATES     
SIGNAL T1,T2: INTEGER RANGE 0 TO 65;   
BEGIN   
P1: PROCESS  (CLK,STATE)     
BEGIN      
IF R='1'THEN STATE<=S0;T1<=60;T2<=65;   --復(fù)位         
ELSIF SPC='1' THEN LIGHT<="010010";     --特殊情況亮紅燈         
ELSIF CLK'EVENT AND CLK='1' THEN                       C
ASE  STATE IS  --statess0時,南北方向亮綠燈,東西方向亮紅燈,60s
WHEN S0=> LIGHT<="100010";                       
T1<=T1-1;T2<=T2-1;                       
Q1<=T1;Q2<=T2;                  
IF T1=0 THEN                     
STATE<=S1;T1<=4;T2<=4;                    
END IF;  
--statess1時,南北方向亮黃燈,東西方向亮紅,5s         
WHEN S1=> LIGHT<="001010";                     
T1<=T1-1;T2<=T2-1;                     
Q1<=T1;Q2<=T2;                    
IF T1=0 THEN                     
STATE<=S2;T1<=35;T2<=35;                    
END IF;   --statess2時,南北方向亮紅燈,東西方向綠燈,35s   
WHEN S2=> LIGHT<="010100";                     
T1<=T1-1;T2<=T2-1;                        
Q1<=T1;Q2<=T2;                  
IF T2=0 THEN                     
STATE<=S3;T1<=6;T2<=6;                    
END IF;        
--南北方向同時滅燈6s                             
WHEN S3=> LIGHT<="000000";                     
T1<=T1-1;T2<=T2-1;                       
Q1<=T1;Q2<=T2;                    
IF T1=0 THEN                     
STATE<=S0;T1<=60;T2<=65;                    
END IF;         
WHEN OTHERS=>STATE<=S0;T1<=60;T2<=65;--主干道   
END CASE;
END IF;   
END PROCESS;
END behav;
時序仿真圖
   file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC25B.tmp.jpg
   模塊三:  顯示控制電路     
   譯碼首先是將二進(jìn)制無符號數(shù)轉(zhuǎn)化為BCD碼,在把BCD碼經(jīng)過譯碼電路轉(zhuǎn)換數(shù)碼管顯示:
  file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC26C.tmp.jpg
VHDL源程序:
二進(jìn)制轉(zhuǎn)化BCD:
LIBRARY IEEE;  
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.all;
ENTITY yima2 IS      
      PORT (datain: IN STD_LOGIC_VECTOR(6 DOWNTO 0);     --時鐘、復(fù)位、特殊情況         
  --light:G1,R1,Y1,G2,R2,Y2;     
   daout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));        
   END yima2   
ARCHITECTURE behav OF yima2 IS   
begin   
PROCESS(datain)     
BEGIN
case datain is  
when "0000000"=>daout<="00000000";
when "0000001"=>daout<="00000001";
when "0000010"=>daout<="00000010";
when "0000011"=>daout<="00000011";
when "0000100"=>daout<="00000100";
when "0000101"=>daout<="00000101";
when "0000110"=>daout<="00000110";
when "0000111"=>daout<="00000111";
when "0001000"=>daout<="00001000";
when "0001001"=>daout<="00001001";--9
when "0001010"=>daout<="00010000";
when "0001011"=>daout<="00010001";
when "0001100"=>daout<="00010010";
when "0001101"=>daout<="00010011";
when "0001110"=>daout<="00010100";
when "0001111"=>daout<="00010101";
when "0010000"=>daout<="00010110";
when "0010001"=>daout<="00010111";
when "0010010"=>daout<="00011000";
when "0010011"=>daout<="00011001";--19
when "0010100"=>daout<="00100000";
when "0010101"=>daout<="00100001";
when "0010110"=>daout<="00100010";
when "0010111"=>daout<="00100011";
when "0011000"=>daout<="00100100";
when "0011001"=>daout<="00100101";
when "0011010"=>daout<="00100110";
when "0011011"=>daout<="00100111";
when "0011100"=>daout<="00101000";
when "0011101"=>daout<="00101001";--29
when "0011110"=>daout<="00110000";--30
when "0011111"=>daout<="00110001";
when "0100000"=>daout<="00110010";
when "0100001"=>daout<="00110011";
when "0100010"=>daout<="00110100";
when "0100011"=>daout<="00110101";
when "0100100"=>daout<="00110110";
when "0100101"=>daout<="00110111";
when "0100110"=>daout<="00111000";
when "0100111"=>daout<="00111001";--39
when "0101000"=>daout<="01000000";
when "0101001"=>daout<="01000001";
when "0101010"=>daout<="01000010";
when "0101011"=>daout<="01000011";
when "0101100"=>daout<="01000100";
when "0101101"=>daout<="01000101";
when "0101110"=>daout<="01000110";
when "0101111"=>daout<="01000111";
when "0110000"=>daout<="01001000";
when "0110001"=>daout<="01001001";--49
when "0110010"=>daout<="01010000";
when "0110011"=>daout<="01010001";
when "0110100"=>daout<="01010010";
when "0110101"=>daout<="01010011";
when "0110110"=>daout<="01010100";
when "0110111"=>daout<="01010101";
when "0111000"=>daout<="01010110";
when "0111001"=>daout<="01010111";
when "0111010"=>daout<="01011000";
when "0111011"=>daout<="01011001";--59
when "0111100"=>daout<="01100000";--60
when "0111101"=>daout<="01100001";
when "0111110"=>daout<="01100010";
when "0111111"=>daout<="01100011";
when "1000000"=>daout<="01100100";
when "1000001"=>daout<="01100101";--65
when others=>daout<="11111111";
END CASE;   
END PROCESS;
END behav;

BCD譯碼顯示:   
LIBRARY IEEE;  
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.all;
ENTITY yima IS      
      PORT (datain: IN STD_LOGIC_VECTOR(7 DOWNTO 0);     --時鐘、復(fù)位、特殊情況      
--datain2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);     
daout1: OUT STD_LOGIC_VECTOR( 6 DOWNTO 0);   
--light:G1,R1,Y1,G2,R2,Y2;      
daout2: OUT STD_LOGIC_VECTOR( 6 DOWNTO 0));        
END yima   
ARCHITECTURE behav OF yima IS  
begin   
PROCESS(datain)     
BEGIN  
case datain(7 downto 4) is
when "0000"=>daout1<="1000000";
when "0001"=>daout1<="1111001";
when "0010"=>daout1<="0100100";
when "0011"=>daout1<="0110000";
when "0100"=>daout1<="0011001";
when "0101"=>daout1<="0010010";
when "0110"=>daout1<="0000010";
when "0111"=>daout1<="1111000";
when "1000"=>daout1<="0000000";
when "1001"=>daout1<="0010000";
when others=>daout1<="0000000";
END CASE;  
case datain(3 downto 0) is
when "0000"=>daout2<="1000000";
when "0001"=>daout2<="1111001";
when "0010"=>daout2<="0100100";
when "0011"=>daout2<="0110000";
when "0100"=>daout2<="0011001";
when "0101"=>daout2<="0010010";
when "0110"=>daout2<="0000010";
when "0111"=>daout2<="1111000";
when "1000"=>daout2<="0000000";
when "1001"=>daout2<="0010000";
when others=>daout2<="0000000";
END CASE;   
END PROCESS;
END behav;
3. 仿真(組裝與調(diào)試)
   單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,許多硬件錯誤是在軟件調(diào)試過程中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進(jìn)一步排除故障。可見硬件的調(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計則無從談起。  
   硬件的調(diào)試主要是把電路各種參數(shù)調(diào)整到符合設(shè)計要求。先排除硬件電路故障,包括設(shè)計性錯誤和公益性故障。一般原則是先靜態(tài)后動態(tài)。  
  利用萬用表或邏輯測試儀器,檢查電路中的各器件以及引腳是否連接正確,是否有短路故障。  
   先要將單片機(jī)AT89S51芯片取下,對電路板進(jìn)行通電檢查,通過觀察看是否有異常,然后用萬用表測試各電源電壓,這些都沒有問題后,接上仿真機(jī)進(jìn)行聯(lián)機(jī)調(diào)試觀察各接口線路是否正常。  
   單片機(jī)AT89S51是系統(tǒng)的核心,利用萬用表檢測單片機(jī)電源Vcc是否為(40)+5 V、晶振是否正常工作(可用示波器測試,也可以用萬用表檢測,兩引腳電壓一般為1.8~2.3V)、復(fù)位引腳RST(復(fù)位時為高電平,單片機(jī)工作時為低電平)EA是否為+5V(高電平),這樣一來單片機(jī)就能工作了,再結(jié)合電路圖,檢測故障就很容易了
4. 結(jié)論
   通過這次實(shí)訓(xùn),我們在程序的功能,源程序修改以及最后的硬件調(diào)試波形仿真中取得了更深一步的成就,通過理論結(jié)合實(shí)際進(jìn)行不斷地修改、討論。填補(bǔ)了我們在這一方面的不足,當(dāng)最后結(jié)果出來的時候,我們心比蜜甜,通過這次實(shí)訓(xùn),我們在實(shí)踐中學(xué)會了很多在平時的實(shí)驗(yàn)中無法學(xué)到得東西。將使我們在以后的工作中受益匪淺。
5. 參考文獻(xiàn)
  1PLD與數(shù)字系統(tǒng)設(shè)計 李輝編著 西安電子科技大學(xué)出版社,2005
  2、《數(shù)字電子技術(shù)基礎(chǔ)》(第四版),閻石主編,高教出版社  
  3、《VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計》 候伯亨、顧新【M】西安電子科 技大學(xué)出版社,2001-4
  4、電子愛好者.柳淳.北京.中國電力出版社,2005
  5、電子技能與實(shí)訓(xùn) 張大彪.北京.電子工業(yè)出版社,2004


完整的Word格式文檔51黑下載地址:
交通燈控制 嵌入式.doc (1.6 MB, 下載次數(shù): 11)




作者: zxzxwdwd    時間: 2018-5-31 11:33
太棒了,支持




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩免| 日韩激情视频一区 | 91精品国产一区二区三区香蕉 | 亚洲区一区二区 | 一区二区日韩 | 免费啪啪 | 成人影院午夜 | 人人种亚洲 | 日韩精品成人 | 国产精品久久久久久久久久三级 | 中文一级片 | 中文无吗| 国产探花在线观看视频 | 亚洲午夜视频在线观看 | h视频免费在线观看 | 龙珠z在线观看 | 日韩中文在线视频 | 天天玩天天操天天干 | 亚洲国产精品一区 | 欧美一区二区二区 | 91国语清晰打电话对白 | 亚洲色图插插插 | 亚洲欧美日韩电影 | 国产精品久久国产精品99 | 久久1区 | 一区二区三区精品视频 | 精品国产一区二区三区日日嗨 | 亚洲欧美高清 | 欧美老妇交乱视频 | 国产乱码精品一区二区三区忘忧草 | 久久亚洲一区二区 | 91 在线 | 亚洲美女天堂网 | 欧美午夜一区 | 天天摸天天看 | 久久亚洲精品国产精品紫薇 | 国产综合av | 精品国产一区二区三区性色 | 国产精品久久国产精品 | 热久久性| 91社影院在线观看 |