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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2328|回復: 1
打印 上一主題 下一主題
收起左側(cè)

VHDL嵌入式交通燈課程設(shè)計報告

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:245165 發(fā)表于 2017-11-2 08:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
嵌入式課程設(shè)計報告

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





201772


交通信號燈設(shè)計
1. 引言
   隨著交通量的快速增長和缺乏對道路的系統(tǒng)研究和控制,擴建道路并沒有充分發(fā)揮出預(yù)期的作用。而城市道路多為十字路口、多交叉的特點,也決定了城市交通道路狀況必然受這種露的制約。所以,如何采用合適的控制方法,最大限度利用好耗費巨資修建的多車道道路,緩解城區(qū)的交通狀況,越來越成為交通運輸管理和嘗試規(guī)劃部門急需解決的主要問題。在這種情況下,道路交通信號燈開始發(fā)揮了越來越重要的作用,因此研究交通燈具有現(xiàn)實意義。
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為標準的1HZ的時鐘信號;R為復位信號;SPC為緊急情況信號,負責緊急情況的處理,當緊急情況發(fā)生時,南北主干道和東西支干道均顯示紅燈。  
該程序定義了4個狀態(tài)S0,S1,S2,S3。當狀態(tài)為S0時,南北方向亮綠燈,東西方向亮紅燈60s;當為狀態(tài)為S1時,南北方向亮黃燈,東西方向亮紅5s ;當狀態(tài)為S2時,南北方向亮紅燈,東西方向綠燈35s;當狀態(tài)為S3時,南北方向亮滅燈,東西方向滅燈6s;程序還設(shè)計了一個緊急信號情況,當遭遇緊急情況時,主干道和支干道都亮紅燈。
   狀態(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
   模塊一 :分頻器   
   分頻器實現(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;     --時鐘、復位、特殊情況      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;   --復位         
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
   模塊三:  顯示控制電路     
   譯碼首先是將二進制無符號數(shù)轉(zhuǎn)化為BCD碼,在把BCD碼經(jīng)過譯碼電路轉(zhuǎn)換數(shù)碼管顯示:
  file:///C:\Users\dell-pc\AppData\Local\Temp\ksohtml\wpsC26C.tmp.jpg
VHDL源程序:
二進制轉(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);     --時鐘、復位、特殊情況         
  --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);     --時鐘、復位、特殊情況      
--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)試)
   單片機系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,許多硬件錯誤是在軟件調(diào)試過程中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進一步排除故障。可見硬件的調(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計則無從談起。  
   硬件的調(diào)試主要是把電路各種參數(shù)調(diào)整到符合設(shè)計要求。先排除硬件電路故障,包括設(shè)計性錯誤和公益性故障。一般原則是先靜態(tài)后動態(tài)。  
  利用萬用表或邏輯測試儀器,檢查電路中的各器件以及引腳是否連接正確,是否有短路故障。  
   先要將單片機AT89S51芯片取下,對電路板進行通電檢查,通過觀察看是否有異常,然后用萬用表測試各電源電壓,這些都沒有問題后,接上仿真機進行聯(lián)機調(diào)試觀察各接口線路是否正常。  
   單片機AT89S51是系統(tǒng)的核心,利用萬用表檢測單片機電源Vcc是否為(40)+5 V、晶振是否正常工作(可用示波器測試,也可以用萬用表檢測,兩引腳電壓一般為1.8~2.3V)、復位引腳RST(復位時為高電平,單片機工作時為低電平)EA是否為+5V(高電平),這樣一來單片機就能工作了,再結(jié)合電路圖,檢測故障就很容易了
4. 結(jié)論
   通過這次實訓,我們在程序的功能,源程序修改以及最后的硬件調(diào)試波形仿真中取得了更深一步的成就,通過理論結(jié)合實際進行不斷地修改、討論。填補了我們在這一方面的不足,當最后結(jié)果出來的時候,我們心比蜜甜,通過這次實訓,我們在實踐中學會了很多在平時的實驗中無法學到得東西。將使我們在以后的工作中受益匪淺。
5. 參考文獻
  1PLD與數(shù)字系統(tǒng)設(shè)計 李輝編著 西安電子科技大學出版社,2005
  2、《數(shù)字電子技術(shù)基礎(chǔ)》(第四版),閻石主編,高教出版社  
  3、《VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計》 候伯亨、顧新【M】西安電子科 技大學出版社,2001-4
  4、電子愛好者.柳淳.北京.中國電力出版社,2005
  5、電子技能與實訓 張大彪.北京.電子工業(yè)出版社,2004


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



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:342050 發(fā)表于 2018-5-31 11:33 | 只看該作者
太棒了,支持
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 超碰美女在线 | 亚洲一区中文字幕在线观看 | 欧美日韩在线一区二区 | 精品1区2区3区 | 一本大道久久a久久精二百 欧洲一区二区三区 | 日本中文字幕一区 | 国产电影一区二区 | 欧美在线观看一区 | 成年免费大片黄在线观看岛国 | 特黄色毛片 | 久久人人爽人人爽人人片av免费 | 欧美日韩一区在线 | 天天干天天插天天 | 国产视频中文字幕 | 亚洲精品乱码久久久久久蜜桃 | 一区二区三区国产视频 | 日韩精品免费 | 99爱免费| 国产三级大片 | 99pao成人国产永久免费视频 | 中文字幕在线观看www | 欧美成人h版在线观看 | 精久久 | 亚洲国产情侣自拍 | 国产精品1区| 91网站视频在线观看 | 亚洲免费福利视频 | 精产国产伦理一二三区 | 欧美福利| 亚洲永久入口 | 中文字幕一级毛片视频 | 久久一本 | 精品免费国产视频 | 日韩久久中文字幕 | 美女激情av| 国产一区二区三区www | 免费久 | 日韩成人av在线 | 欧美午夜精品久久久久久浪潮 | 日中文字幕在线 | 亚洲一区av在线 |