找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

基于單片機(jī)的交通信號(hào)燈設(shè)計(jì)論文下載(word格式)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:354655 發(fā)表于 2018-6-19 20:54 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于51單片機(jī)的交通燈設(shè)計(jì)
指導(dǎo)教師:
                 
               學(xué)院:              
            班級(jí):               
            姓名:
學(xué)號(hào):
一、設(shè)計(jì)目的與任務(wù)1、熟練的掌握KeilC51集成開發(fā)環(huán)境調(diào)試功能的使用2、將所學(xué)的C51單片機(jī)的理論知識(shí)運(yùn)用到實(shí)驗(yàn)中3、簡(jiǎn)單的掌握仿真軟件的proteus的應(yīng)用設(shè)計(jì)一個(gè)以單片機(jī)為中心控制系統(tǒng),以LED燈和數(shù)碼管顯示為外設(shè),實(shí)現(xiàn)十字路口交通燈的狀態(tài)顯示。二、設(shè)計(jì)要求1、以proteus仿真軟件為核心,畫出原理仿真圖。
2、以Keil C51編程軟件為主體,編寫芯片內(nèi)部執(zhí)行程序
三、總體設(shè)計(jì)思路
本設(shè)計(jì)以單片機(jī)為核心,以LED數(shù)碼管作為倒計(jì)時(shí)指示,根據(jù)設(shè)計(jì)的要求我們考慮了各功能模塊的幾種設(shè)計(jì)方案,以求最佳方案,實(shí)現(xiàn)實(shí)時(shí)顯示系統(tǒng)各種狀態(tài),系統(tǒng)還增設(shè)了根據(jù)交通擁擠情況可分別設(shè)置主干道和次干道的通行時(shí)間,以提高效率,緩減交通擁擠。系統(tǒng)總體設(shè)計(jì)框圖如圖1-1所示。
  *
圖1-1 系統(tǒng)總體設(shè)計(jì)框圖
1.電源提供方案
為使模塊穩(wěn)定工作,須有可靠電源。本次設(shè)計(jì)考慮了兩種電源方案:
方案一:采用獨(dú)立的穩(wěn)壓電源。此方案的優(yōu)點(diǎn)是穩(wěn)定可靠,且有各種成熟電路可供選用;缺點(diǎn)是各模塊都采用獨(dú)立電源,會(huì)使系統(tǒng)復(fù)雜,且可能影響電路電平。
方案二:采用單片機(jī)控制模塊提供電源。該方案的優(yōu)點(diǎn)是系統(tǒng)簡(jiǎn)明扼要,節(jié)約成本;缺點(diǎn)是輸出功率不高。
綜上所述,選擇第二種方案。
2.顯示界面方案
該系統(tǒng)要求完成倒計(jì)時(shí)功能;谏鲜鲈,本次設(shè)計(jì)考慮了兩種方案:
方案一:完全采用點(diǎn)陣式LED顯示。這種方案功能強(qiáng)大,可方便的顯示各種英文字符,漢字,圖形等,但實(shí)現(xiàn)復(fù)雜,且須完成大量的軟件工作。
方案二:完全采用數(shù)碼管顯示。這種方案優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,可以完成倒計(jì)時(shí)功能。缺點(diǎn)是功能較少,只能顯示有限的符號(hào)和數(shù)碼字符。根據(jù)本設(shè)計(jì)的要求,方案二已經(jīng)滿足了要求,所以本次設(shè)計(jì)采用方案二以實(shí)現(xiàn)系統(tǒng)的顯示功能。
3.輸入方案
這里同樣討論了兩種方案:
方案一:采用8155擴(kuò)展I/O口、鍵盤及顯示等。該方案的優(yōu)點(diǎn)是使用靈活可編程,并且有RAM及計(jì)數(shù)器。若用該方案,可提供較多I/O口,但操作起來稍顯復(fù)雜。
方案二:直接在I/O口線上接上按鍵開關(guān)。因?yàn)樵O(shè)計(jì)時(shí)精簡(jiǎn)和優(yōu)化了電路,所以剩余的端口資源還比較多,我們使用六個(gè)按鍵,分別是P16、P17、P27、P30、P32、P33,依次完成倒計(jì)時(shí)加1、倒計(jì)時(shí)減1、調(diào)完確認(rèn)、調(diào)時(shí)方向切換、南北強(qiáng)行和東西強(qiáng)行等功能。
由于該系統(tǒng)是對(duì)交通燈及數(shù)碼管的控制,只需用單片機(jī)本身的I/O口就可實(shí)現(xiàn),且本身的計(jì)數(shù)器及RAM已經(jīng)夠用,故選擇方案二。
硬件設(shè)計(jì)是整個(gè)系統(tǒng)的基礎(chǔ),要考慮的方方面面很多,除了實(shí)現(xiàn)交通燈基本功能以外,主要還要考慮如下幾個(gè)因素:①系統(tǒng)穩(wěn)定度;②器件的通用性或易選購性;③軟件編程的易實(shí)現(xiàn)性;④系統(tǒng)其它功能及性能指標(biāo);因此硬件設(shè)計(jì)至關(guān)重要,F(xiàn)從各功能模塊的實(shí)現(xiàn)逐個(gè)進(jìn)行分析探討。
總體設(shè)計(jì)
本設(shè)計(jì)以單片機(jī)為控制核心,采用模塊化設(shè)計(jì),共分以下幾個(gè)功能模塊:?jiǎn)纹瑱C(jī)控制系統(tǒng)、鍵盤及狀態(tài)顯示、倒計(jì)時(shí)模塊等。     交通燈的總體設(shè)計(jì)原理如3-0圖所示:
單片機(jī)作為整個(gè)硬件系統(tǒng)的核心,它既是協(xié)調(diào)整機(jī)工作的控制器,又是數(shù)據(jù)處理器。它由單片機(jī)振蕩電路、復(fù)位電路等組成。
鍵盤及狀態(tài)顯示,開關(guān)鍵盤輸入交通燈初始時(shí)間,通過單片機(jī)P1輸入到系統(tǒng)。
系統(tǒng)采用雙數(shù)碼管倒計(jì)時(shí)計(jì)數(shù)功能,最大顯示數(shù)字99。
友好的人機(jī)界面、靈活的控制方式、優(yōu)化的物理結(jié)構(gòu)是本設(shè)計(jì)的亮點(diǎn)。
單片機(jī)最小系統(tǒng)
1.振蕩電路
AT89C51是內(nèi)部具有振蕩電路的單片機(jī),只需在18腳和19腳之間接上石英晶體,給單片機(jī)加工作所需直流電源,振蕩器就開始振蕩起來。振蕩電路就為單片機(jī)工作提供了所需要的時(shí)鐘脈沖信號(hào),是單片機(jī)的內(nèi)部電路、單片機(jī)的內(nèi)部程序(若有)開始工作。振蕩電路不工作,整個(gè)單片機(jī)電路都不能正常工作。AT89C51常外接6MHz、12MHz的石英晶體,18腳和19腳分別對(duì)地接了一個(gè)20pF的電容,目的是防止單片機(jī)自激。若從18腳輸入外部時(shí)鐘脈沖,則19腳接地。
2.復(fù)位電路
復(fù)位電路就是在RST端(9腳)外接的一個(gè)電路,目的是使單片機(jī)上的電開始工作時(shí),內(nèi)部電路從初始狀態(tài)開始工作,或者在工作中人為讓單片機(jī)重新從初始狀態(tài)開始工作。在時(shí)鐘工作的情況下,只要復(fù)位引腳高電平保持在兩個(gè)機(jī)器周期以上的時(shí)間,AT89C51便能完成系統(tǒng)重置的各項(xiàng)工作,使得內(nèi)部特殊功能寄存器的內(nèi)容均被設(shè)置成已知狀態(tài),并且從地址0000H處讀入程序代碼而執(zhí)行程序。單片機(jī)最小系統(tǒng)電路如圖3-1所示:
圖3-1 單片機(jī)最小系統(tǒng)電路原理圖
顯示及其驅(qū)動(dòng)模塊鍵盤與狀態(tài)顯示功能
鍵盤在本設(shè)計(jì)中用于緊急情況的手動(dòng)控制裝置,以及定時(shí)時(shí)間的設(shè)置等功能,起到了不可缺少的重要作用。當(dāng)定時(shí)器定時(shí)為1秒時(shí)程序跳轉(zhuǎn)到時(shí)間顯示及信號(hào)燈顯示子程序,它將依次顯示信號(hào)燈時(shí)間,同時(shí)一直顯示信號(hào)燈的顏色,這時(shí)在返回定時(shí)子程序定時(shí)1秒,在顯示黃燈的下一個(gè)時(shí)間,這樣依次把所有的時(shí)間顯示完后在重新給時(shí)間計(jì)數(shù)器賦初值,重新進(jìn)入循環(huán)。鍵盤電路如圖3-2所示。
圖3-2 鍵盤電路
倒計(jì)時(shí)計(jì)數(shù)功能
本系統(tǒng)使用數(shù)碼管完成倒計(jì)時(shí)顯示功能。以南北方向?yàn)槔,?shù)碼管顯示的數(shù)值從綠燈的設(shè)置時(shí)間最大值往下減,每秒鐘減1,一直減到1。然后又從紅燈的設(shè)置時(shí)間最大值往下減,一直減到1。接下來又顯示綠燈時(shí)間,如此循環(huán)。
系統(tǒng)共有4個(gè)兩位的LED數(shù)碼管,分別放置在模擬交通燈控制板上的四個(gè)路口。因?yàn)樗膫(gè)方向的數(shù)碼管應(yīng)該顯示同樣的內(nèi)容,所以我們可以把它們同樣對(duì)待。也就是說各個(gè)方向的數(shù)碼管個(gè)位(把數(shù)碼管第二位定義為個(gè)位,第一位定義為十位)用一根信號(hào)線控制,十位用另一根信號(hào)線控制。這里采用動(dòng)態(tài)顯示。LED數(shù)碼管如圖3-3所示。
圖3-3 LED數(shù)碼管
根據(jù)該系統(tǒng)設(shè)計(jì)的功能要求選擇所用元器件

軟件在硬件平臺(tái)上構(gòu)筑,完成各部分硬件的控制和協(xié)調(diào)。系統(tǒng)功能是由軟硬件共同實(shí)現(xiàn)的,由于軟件的可伸縮性,最終實(shí)現(xiàn)的系統(tǒng)功能可強(qiáng)可弱,差別可能很大。因此,軟件是本系統(tǒng)的靈魂。軟件采用模塊化設(shè)計(jì)方法,不僅易于編程和調(diào)試,也可減小軟件故障率和提高軟件的可靠性。同時(shí),對(duì)軟件進(jìn)行全面測(cè)試也是檢驗(yàn)錯(cuò)誤排除故障的重要手段。這里我們選用了移值性好、結(jié)構(gòu)清晰、能進(jìn)行復(fù)雜運(yùn)算的C語言來實(shí)現(xiàn)編程。
3.1 軟件總體設(shè)計(jì)
軟件總體設(shè)計(jì)主要完成各部分的軟件控制和協(xié)調(diào)。本系統(tǒng)主程序模塊主要完成的工作是對(duì)系統(tǒng)的初始化,發(fā)送顯示數(shù)據(jù),同時(shí)對(duì)鍵盤進(jìn)行掃描,等待外部中斷,以及根據(jù)所需要的功能進(jìn)行相應(yīng)的操作。其流程圖如圖4-1所示。
圖4-1 軟件總體流程圖
 軟件主要子程序設(shè)計(jì) 緊急狀態(tài)子程序設(shè)計(jì)
1.在緊急狀態(tài)下,只有緊急狀態(tài)手動(dòng)控制按鍵才可以使所有的LED都被置為紅燈,車輛禁行、行人通行。緊急情況結(jié)束后再轉(zhuǎn)成自動(dòng)狀態(tài)。程序流程如圖4-2所示。
圖4-2 緊急狀態(tài)子程序
設(shè)置狀態(tài)子程序設(shè)計(jì)
設(shè)置狀態(tài)子程序如圖4-3所示。
圖4-3 設(shè)置狀態(tài)子程序
在設(shè)置狀態(tài),按下按鍵1(P16)開始設(shè)置南北的紅燈時(shí)間,按下按鍵2(P17)設(shè)置南北的綠燈時(shí)間,按下按鍵3(P27)返回正常運(yùn)行狀態(tài)。紅燈和綠燈的時(shí)間最大可以設(shè)為99,超出99的時(shí)候會(huì)從50開始重新計(jì)數(shù)。它包含倒計(jì)時(shí)調(diào)整和緊急狀態(tài)兩個(gè)狀態(tài)。主程序中放了一個(gè)按鍵的判斷指令,當(dāng)有按鍵按下的時(shí)候,程序就自動(dòng)的跳轉(zhuǎn)到按鍵子程序處理。當(dāng)檢測(cè)到按鍵2(P17)鍵按下的時(shí)候就自動(dòng)返回到主程序。當(dāng)出現(xiàn)緊急的情況的時(shí)候,按下按鍵3(P27)就切換到緊急狀態(tài),當(dāng)緊急事件處理完畢的時(shí)候,按下按鍵2(P17),就可以返回正常狀態(tài)。
鍵盤模塊子程序設(shè)計(jì)
鍵盤是人機(jī)進(jìn)行交互的重要接口之一。用戶通過按鍵對(duì)儀器下達(dá)命令,儀器對(duì)按鍵譯碼獲得相應(yīng)的鍵值,并執(zhí)行相應(yīng)的命令程序。鍵盤部分的軟件實(shí)現(xiàn)主要是指對(duì)鍵盤管理進(jìn)行編程,從而成功地讀取鍵盤值,實(shí)現(xiàn)相應(yīng)的功能。鍵盤實(shí)現(xiàn)的程序流程圖如圖4-4所示。
圖4-4 鍵盤實(shí)現(xiàn)的程序流程圖
根據(jù)上述流程圖編寫程序如下:
#include <reg51.h>
#include<intrins.h>
#define ucharunsigned char
#define uint  unsigned int
sbit  k1=P1^6;
sbit  k2=P1^7;
sbit  k3=P2^7;
sbit  k4=P3^0;
sbityellowled_nb=P1^4;    //南北黃燈
sbityellowled_dx=P1^1;    //東西黃燈
uchar codetable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar data dig;      //位選
uchar data led;      //偏移量
uchar data buf[4];
uchar datasec_dx=20;//東西數(shù)碼指示值
uchar datasec_nb=20;//南北數(shù)碼指示值
uchar dataset_timedx=20;
uchar dataset_timenb=20;//倒計(jì)時(shí)設(shè)置的鍵值保存
uchar data b;//定時(shí)器中斷次數(shù)
bit time;//燈狀態(tài)循環(huán)標(biāo)志
bit int0_time;//中斷強(qiáng)行標(biāo)志
bit   set;//調(diào)時(shí)方向切換鍵標(biāo)志
void delay(int ms);//延時(shí)子程序
void key();//按鍵掃描子程序
void key_to1();//鍵處理子程序
void key_to2();
void display();//顯示子程序
void main()
{
     TMOD=0X01;   
     TH0=0X3C;
     TL0=0XB0;
     EA=1;
     ET0=1;
     TR0=1;
     EX0=1;
     EX1=1;
     P1=0Xf3;// 東西通行
     while(1)
     {
            key(); //調(diào)用按鍵掃描程序
            display(); //調(diào)用顯示程序
     }      
}
void key()  //按鍵掃描子程序
{
     if(k1!=1)
     {
            delay(10);
            if(k1!=1)
            {
                   while(k1!=1);
                   key_to1();
            }
     }
     if(k2!=1)
     {
            delay(10);
            if(k2!=1)
            {
                   while(k2!=1);
                   key_to2();
            }
     }
      
      if(k4!=1)
      {
             delay(10);
             if(k4!=1)
             {
                  while(k4!=1);
                    set=!set;
             }
      }
     if(k3!=1&&int0_time==1)
     {      
            TR0=1;   //啟動(dòng)定時(shí)器
            sec_nb=20;
            sec_dx=20;
            int0_time=0;//清標(biāo)志
            
      }   else if(k3!=1&&int0_time==0)
               {
                   char set_timenb,set_timedx;
                   TR0=1;
                   set_timenb=sec_nb;
                   set_timedx=sec_dx; //設(shè)置的鍵值返回保存
                   }
      
}
void display()
{
            
            buf[1]=sec_dx/10; //第1位 東西秒十位
            buf[2]=sec_dx%10; //第2位 東西秒個(gè)位
            buf[3]=sec_nb/10; //第3位 南北秒十位
            buf[0]=sec_nb%10; //第4位 南北秒個(gè)位
            
            P0=table[buf[led]];
            delay(2);      //先延時(shí),提前顯示一位了
            P2=dig;
            dig=_crol_(dig,1);
            led++;
            if (led==4)
            {led=0;
            dig=0xfe;
            }
}
void time0(void)interrupt 1 using 1  //定時(shí)中斷子程序
{
     b++;
     if(b==10)       // 定時(shí)器中斷次數(shù)。
     {
            b=0;
            sec_dx--;
            sec_nb--;
/******************南北黃燈閃爍判斷*************************/            
            if(sec_nb==3&&time==0)
            
                   {
                    yellowled_nb=1;//南北黃燈亮
                    delay(300);
                    yellowled_nb=0;
                    }
                  
                   if(sec_nb==2&&time==0)
                   {
                   yellowled_nb=1;//南北黃燈亮
                    delay(300);
                    yellowled_nb=0;
                   }
                  
                   if(sec_nb==1&&time==0)
                   {
                   yellowled_nb=1;
                    delay(300);
                    yellowled_nb=0;
               }
            
/*******************東西黃燈閃判斷************************/            
            if(sec_dx==3&&time==1)
            {
                    yellowled_dx=1;//南北黃燈亮
                    delay(300);
                    yellowled_dx=0;
            }
                  
                   if(sec_dx==2&&time==1)
                   {
                   yellowled_dx=1;//南北黃燈亮
                    delay(300);
                    yellowled_dx=0;
                   }
                  
                   if(sec_dx==1&&time==1)
                   {
                   yellowled_dx=1;
                    delay(300);
                    yellowled_dx=0;
               }      
                  
            
/*******************************************/
                   if(sec_dx==0||sec_nb==0) //東西或南北先到達(dá)1S時(shí)即開始重新計(jì)時(shí)
                   {
                          sec_dx=set_timedx;
                          sec_nb=set_timenb; //第一次循環(huán)結(jié)束重置
                         if(time==1)
                          {
                                 P1=0XF3;  //東西通行
                          }
                          else
                          {
                                 P1=0xde; //南北通行
                          }
                          time=!time;   //取反
                          
                   }
            
     }
}
void key_to1()
{
     TR0=0; //關(guān)定時(shí)器
     
     if(set==0)
     sec_nb++; //南北加1S
     else
     sec_dx++;//東西加1S
     
     if(sec_nb==100)
            sec_nb=1;
     if(    sec_dx==100)
            sec_dx=1;//加到100置1
     
}
void key_to2()
{
     TR0=0;//關(guān)定時(shí)器
     
     if(set==0)
     sec_nb--; //南北減1S
     else
     sec_dx--; //東西減1S
     if(sec_nb==0)
            sec_nb=99;      
     if(    sec_dx==0)
            sec_dx=99;//減到1重置99
     
}
void int0(void)interrupt 0 using 1   //東西強(qiáng)行
{
     TR0=0;
     P1=0XF3;
     sec_dx=88;
     sec_nb=88;
     int0_time=1;
     
}
void int1(void)interrupt 2 using 1    //南北強(qiáng)行
{
     TR0=0;
     P1=0XDE;
     sec_nb=88;
     sec_dx=88;
     int0_time=1;
}
void delay(int ms)
{
     uint j,k;
     for(j=0;j<ms;j++)
     for(k=0;k<124;k++);
}
系統(tǒng)調(diào)試與測(cè)試系統(tǒng)操作說明
本設(shè)計(jì)采用的是開關(guān)鍵盤,共6個(gè)鍵。鍵盤用來輸入倒計(jì)時(shí)時(shí)間數(shù)字信息;功能菜單選擇鍵則用于主次干道通行時(shí)間分別設(shè)置、確定、取消(即調(diào)時(shí)方向的切換、倒計(jì)時(shí)的加減、東西強(qiáng)行、南北強(qiáng)行,調(diào)完確認(rèn))等功能。
系統(tǒng)分為兩個(gè)狀態(tài):設(shè)置狀態(tài)和顯示狀態(tài)。利用鍵盤可以進(jìn)行兩個(gè)狀態(tài)間的切換;開機(jī)時(shí),系統(tǒng)為顯示狀態(tài),此時(shí)顯示四個(gè)路口數(shù)碼管從默認(rèn)的倒計(jì)時(shí)時(shí)間開始倒計(jì)時(shí);顯示狀態(tài)時(shí),交通燈模組的四個(gè)LED數(shù)碼管進(jìn)行倒計(jì)時(shí);顯示過程中按鍵可以重新進(jìn)入設(shè)置狀態(tài)。
調(diào)試
根據(jù)電路功能逐級(jí)進(jìn)行:
1.通行方式功能調(diào)試:對(duì)行人和行車方向指示燈亮度和驅(qū)動(dòng)電路調(diào)試;
2.倒計(jì)時(shí)功能調(diào)試:數(shù)碼管亮度調(diào)試;
3.緊急情況手動(dòng)控制功能調(diào)試:包括按鍵功能的調(diào)試。
調(diào)試結(jié)果如下圖所示:
設(shè)計(jì)總結(jié)
通過本次課程設(shè)計(jì),我深深的體會(huì)到了作為一個(gè)硬件工程師的艱辛。即使做一個(gè)小小的項(xiàng)目,都需要做這么多細(xì)致入微的工作,必須考慮到問題的任何一個(gè)細(xì)節(jié),否則最后也將是功敗垂成。
    原理圖設(shè)計(jì): 當(dāng)我們選取了這樣一個(gè)題目,我們就開始收集相關(guān)的各種資料,對(duì)題目有個(gè)大致的了解,規(guī)劃一下設(shè)計(jì)的任務(wù)將要完成哪些功能。然后就具體的每一項(xiàng)功能應(yīng)該怎樣具體的設(shè)計(jì),例如用什么方法完成這一功能,這種想法是否合理,比較使用哪個(gè)芯片來完成這項(xiàng)功能。經(jīng)過長時(shí)間的查閱資料、思索、推敲,最后定出了這次設(shè)計(jì)的原理圖。

    硬件焊接:開始制作實(shí)物之前,按照老師的要求先進(jìn)行整板的規(guī)劃,這是一個(gè)非常關(guān)鍵的步驟,因?yàn)楫?dāng)你焊接上器件之后將會(huì)很難修改。結(jié)果發(fā)現(xiàn)了真的還有一些不足,比如在畫板的過程中我們居然忘記留出電源接口,還有一些兩根電源線沒有和其他線接到一塊,另外我給按鍵留的引腳的孔太小了,數(shù)碼管的引腳情況也給弄錯(cuò)了,這些都是因?yàn)榻?jīng)驗(yàn)不夠和粗心造成的。這也都給以后的學(xué)習(xí)留下了經(jīng)驗(yàn)和教訓(xùn),必須先拿到或熟悉芯片才能確定引腳的間距以及大小,制板過程必須要細(xì)心。發(fā)現(xiàn)這些錯(cuò)誤,在焊接過程中我們采取了一系列的措施來補(bǔ)救這些錯(cuò)誤。關(guān)于焊接,因?yàn)樽约旱乃酱_實(shí)不怎么樣,這需要一定的經(jīng)驗(yàn)和技巧,但是我卻是遲遲把握不到這種技巧。剛開始烙鐵和焊錫配合不到一塊,然后就是焊錫的量的控制問題,始終達(dá)不到老師說明的那種效果,這些都說明了我在實(shí)際動(dòng)手能力方面還有待加強(qiáng)
     編程調(diào)試:在整個(gè)程序的編寫過程中,研究每個(gè)子程序是否可行,我是通過Keil C和Proteus兩個(gè)軟件來實(shí)現(xiàn)的。Proteus是一個(gè)單片機(jī)的仿真軟件,發(fā)現(xiàn)它之后真的很受用,通過它可以不用連接硬件就能檢查程序是否可行。Keil C則幫助我檢查程序是否存在語法錯(cuò)誤之類的問題,還可以生成hex文件,供proteus軟件仿真使用。通過這兩個(gè)軟件,我完成了整個(gè)設(shè)計(jì)程序的編寫與調(diào)試工作。
    通過上面的這個(gè)步驟,把程序調(diào)試好,接下來就是真正的硬件連接調(diào)試了。程序既然已經(jīng)在仿真的軟件上通過認(rèn)證,如果連接上硬件不可行的話,說明在硬件上某個(gè)部分存在一定的問題。這點(diǎn)得到了驗(yàn)證:硬件模擬的時(shí)候,緊急情況用的開關(guān)有一個(gè)有問題,按下的時(shí)候沒有反應(yīng)。用萬用表檢測(cè)發(fā)現(xiàn),開關(guān)內(nèi)部的連接沒有錯(cuò)誤,但是當(dāng)開關(guān)按下的時(shí)候,不是接通的,說明此開關(guān)有問題。于是我又將有問題的開關(guān)進(jìn)行了更換,結(jié)果硬件連接調(diào)試很順利。
    通過這次畢業(yè)設(shè)計(jì),使我得到了一次用專業(yè)知識(shí)、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,以及在常用編程設(shè)計(jì)思路技巧的掌握方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基礎(chǔ)。

完整的Word格式文檔51黑下載地址:
基于單片機(jī)的交通信號(hào)燈模擬控制系統(tǒng).doc (147 KB, 下載次數(shù): 50)


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

使用道具 舉報(bào)

沙發(fā)
ID:665208 發(fā)表于 2019-12-16 15:40 | 只看該作者
在?有仿真圖嗎?附件里有嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表