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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5064|回復(fù): 0
收起左側(cè)

單片機(jī)交通燈實(shí)驗(yàn)報(bào)告

[復(fù)制鏈接]
ID:298827 發(fā)表于 2018-3-29 16:22 | 顯示全部樓層 |閱讀模式
交通燈實(shí)驗(yàn)報(bào)告
班級(jí):
姓名:
.實(shí)驗(yàn)要求
使用單片機(jī)系統(tǒng)主機(jī)板和單片機(jī)系統(tǒng)I/O板設(shè)計(jì)一個(gè)硬件系統(tǒng),最終實(shí)現(xiàn)一個(gè)交通路口紅綠燈的控制。用兩個(gè)數(shù)碼管顯示秒,8個(gè)LED燈分成四組,分別作為十字交叉路口的紅綠燈。亮燈的狀態(tài)是:亮1s,滅1s

二.硬件連線方案見(jiàn)下表:
使用的并口
主機(jī)板插座
I/O板插座
功能
 P0
 P2
 P00
段碼傳送至數(shù)碼管
 P1
 P3
 P20
 控制信號(hào)傳送至數(shù)碼管.段選DULA、位選G1、地址CBA
 P2
 P4
 P2
給指示燈傳送數(shù)據(jù)

三.程序流程圖可參考下圖:

四:單片機(jī)源代碼
  1. #include<reg51.h>  //包含特殊功能寄存器聲明頭文件
  2. sbit dula=P1^3;  // 特殊功能位定義,數(shù)碼管段碼控制信號(hào)
  3.             
  4. sbit g1=P1^4;  //數(shù)碼管位選控制信號(hào)

  5. sbit c=P1^5;  //c表示P1.0口,地址最高位
  6. sbit b=P1^6;  //地址次高位
  7. sbit a=P1^7;  //地址最低位
  8. sbit sg=P2^0;  //特殊功能位
  9. sbit sr=P2^1;
  10. sbit eg=P2^2;
  11. sbit er=P2^3;
  12. sbit ng=P2^4;
  13. sbit nr=P2^5;
  14. sbit wg=P2^7;
  15. sbit wr=P2^6;
  16. char s=10,ms=0;

  17. unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定義無(wú)符號(hào)數(shù)組,定義的數(shù)據(jù)要放在ROM(程序存儲(chǔ)區(qū))里面              
  18. bit fang=0;

  19. void delay(){  //延時(shí)函數(shù),通過(guò)for循環(huán)進(jìn)行延時(shí)
  20.               unsigned char i;  //定義計(jì)數(shù)器變量
  21.               for(i=0;i<255;i++);
  22. }

  23. initial(){  //初始化函數(shù)
  24.               TMOD=1;  //設(shè)置定時(shí)器/計(jì)數(shù)器0工作方式1
  25.               TL0=0XF0;  //設(shè)置定時(shí)器/計(jì)數(shù)器0賦初值(低八位)
  26.               TH0=0XD8;  //設(shè)置定時(shí)器/計(jì)數(shù)器0賦初值(高八位)

  27.               TR0=1;  //啟動(dòng)定時(shí)器TO
  28.               ET0=1;  //允許定時(shí)器TO中斷
  29.               EA=1;  //允許CPU中斷
  30.               sr=1;
  31.               sg=0;
  32.               er=0;
  33.               eg=1;
  34.               nr=1;
  35.               ng=0;
  36.               wr=0;
  37.               wg=1;
  38.               g1=0;
  39. }

  40. display(){
  41.               P0=tab[s/10];dula=1;  //顯示秒十位
  42.               c=1;b=1;a=0;g1=1;
  43.               delay();  //延時(shí)
  44.               g1=0;

  45.               P0=tab[s%10];dula=1;  //顯示秒個(gè)位
  46.               c=1;b=1;a=1;g1=1;
  47.               delay();
  48.               g1=0;
  49. }

  50. main(){    //主函數(shù)
  51.               initial();
  52.               while(1){  //無(wú)限循環(huán)
  53.                             display();  //延時(shí)
  54.               }
  55. }

  56. t_0() interrupt 1{  //外部信號(hào)出發(fā)中斷1中斷服務(wù)函數(shù)
  57.               TL0=0XF0;  //設(shè)置定時(shí)器/計(jì)數(shù)器0賦初值(低八位)
  58.               TH0=0XD8;  //設(shè)置定時(shí)器/計(jì)數(shù)器0賦初值(高八位)
  59.               ms++;  //計(jì)數(shù)器加1
  60.               if(ms==50&&s<=3){
  61.                             wg=1;
  62.                             sg=1;
  63.                             eg=1;
  64.                             ng=1;
  65.               }
  66.               if(ms==100){  //判斷計(jì)數(shù)器是否記滿100
  67.                             if(fang==0){  //數(shù)碼管顯示0
  68.                                           ng=0;
  69.                                           sg=0;
  70.                             }
  71.                             else{
  72.                                           eg=0;
  73.                                           wg=0;
  74.                             }
  75.                             ms=0;
  76.                             s--;
  77.                             if(s==0){  //數(shù)碼管顯示0
  78.                                           s=10;
  79.                                           fang=~fang;
  80.                                           sr=~sr;
  81.                                           sg=~sg;
  82.                                           er=~er;
  83.                                           eg=~eg;
  84.                                           nr=~nr;
  85.                                           ng=~ng;
  86.                                           wr=~wr;
  87.                                           wg=~wg;
  88.                             }
  89.               }
  90. }
復(fù)制代碼

五.實(shí)驗(yàn)總結(jié):
最終實(shí)現(xiàn)一個(gè)交通路口紅綠燈的控制。用兩個(gè)數(shù)碼管顯示秒,8個(gè)LED燈分成四組,分別作為十字交叉路口的紅綠燈。相對(duì)雙向綠燈的最后幾秒時(shí),綠燈要閃爍,即亮滅交替,亮滅時(shí)間均為0.5秒,然后變成紅燈。



完整的Word格式文檔51黑下載地址:
交通燈實(shí)驗(yàn)報(bào)告2.docx (71.23 KB, 下載次數(shù): 15)



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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