找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8347|回复: 10
收起左侧

交通灯设计 AD格式的原理图和PCB与单片机源代码

  [复制链接]
ID:188333 发表于 2017-4-11 08:25 | 显示全部楼层 |阅读模式
一个用51单片机做的交通灯的设计制作,而且带ad画的原理图和pcb,有c语言和汇编语言两种格式的源代码.

ad格式的原理图:
0.png


pcb图:
0.png
0.png 0.png

单片机c语言源代码:
  1. /*        程序效果:单片机模拟控制交通灯程序,规则如下:当南北通车时,此时南北的绿灯亮,
  2. 东西的红灯亮,之后南北的绿灯闪烁3次,过后黄灯亮,延时片刻,转东西绿灯亮同时南北红灯亮,
  3. 之后东西的绿灯闪烁3次,过后黄灯亮,延时片刻;数码管显示的值都同步,结束。*/
  4. #include<AT89X52.h> //头文件
  5. #define uchar unsigned char//宏定义
  6. #define uint  unsigned int
  7. /*  旧IO定义*/
  8. sbit FMQ=        P1^0;                //蜂鸣器
  9. sbit QR        =        P1^3;                //北红灯
  10. sbit QY        =        P1^1 ;       //北黄灯
  11. sbit QG        =        P1^2 ;    //北绿灯
  12. sbit HR        =        P2^2 ;    //南红灯
  13. sbit HY        =        P2^0;     //南黄灯
  14. sbit HG        =        P2^1;     //南绿灯       
  15. sbit ZR        =        P1^4 ;    //东红灯
  16. sbit ZY        =        P1^5 ;    //东黄灯
  17. sbit ZG        =        P1^6 ;    //东绿灯
  18. sbit YR        =        P2^5 ;    //西红灯
  19. sbit YY        =        P2^4 ;    //西黄灯
  20. sbit YG        =        P2^3 ;    //西绿灯         
  21. sbit SWITCH1        =        P2^7;        //时间显示的十位控制
  22. sbit SWITCH2        =        P2^6;        //时间显示的个位控制
  23. /*        //新IO定义
  24. sbit FMQ=        P1^0;                //蜂鸣器
  25. sbit QR        =        P1^1;                //北红灯
  26. sbit QY        =        P1^2 ;       //北黄灯
  27. sbit QG        =        P1^3 ;    //北绿灯
  28. sbit HR        =        P1^4 ;    //南红灯
  29. sbit HY        =        P1^5;     //南黄灯
  30. sbit HG        =        P1^6;     //南绿灯       
  31. sbit ZR        =        P2^7 ;    //东红灯
  32. sbit ZY        =        P2^6 ;    //东黄灯
  33. sbit ZG        =        P2^5 ;    //东绿灯
  34. sbit YR        =        P2^2 ;    //西红灯
  35. sbit YY        =        P2^3 ;    //西黄灯
  36. sbit YG        =        P2^4 ;    //西绿灯         
  37. sbit SWITCH1        =        P2^1;        //时间显示的十位控制
  38. sbit SWITCH2        =        P2^0;        //时间显示的个位控制
  39. */
  40. //sbit P3_2=P3^2;
  41. //sbit P3_3=P3^3;
  42. uchar DAT;//显示时间变量
  43. uchar DISP[2]={0,0};//显示缓冲区
  44. uchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共阳数码管段码表0  1 2 3
  45. 0x99,0x92,0x82,0xF8,0x80,0x90,0xFF        //4 5 6 7 8 9 灭
  46. };
  47. void DISPCLK(uchar i);//显示函数

  48. void DEL1MS(uint z)        //延时子函数
  49. {
  50. uint x,y;
  51. for(x=0;x<z;x++)
  52. for(y=0;y<110;y++);
  53. }
  54. void main()    //主函数
  55. {    //  uchar i,j,k,m,n;//定义局部变量
  56.      uchar i,j;
  57.     TCON=0x5;  //外部中断为下降沿触发
  58.          PX1=1;//南北方向高优先级
  59.      EX0=1;           //
  60.      EX1=1;    //开外部中断
  61.      EA=1;     //开总中断
  62.         //IO口初始化
  63.          P0=0xFF;
  64.          P1=0xFF;
  65.          P2=0xFF;
  66.          P3=0xFF;       
  67.          //DAT=25; //汇编0x25
  68.    while(1)
  69.    {
  70.           P1=0xFF;//灯灭
  71.           P2=0xFF;//
  72.           DAT=30;//写入每一通路的通行时间
  73.           QG=0;//南北向绿灯亮
  74.           HG=0;
  75.           ZR=0;//东西向红灯亮
  76.           YR=0;
  77.   /*
  78. QR        =1;                //北红灯
  79. QY        =1         ;       //北黄灯
  80. QG        =0         ;    //北绿灯 QG=0;//南北向绿灯亮
  81. HR        =1         ;    //南红灯
  82. HY        =1    ;     //南黄灯
  83. HG        =0        ;     //南绿灯       
  84. ZR        =0         ;    //东红灯
  85. ZY        =1         ;    //东黄灯
  86. ZG        =1         ;    //东绿灯
  87. YR        =0         ;    //西红灯
  88. YY        =1         ;    //西黄灯
  89. YG        =1         ;    //西绿灯
  90.         */  
  91.           //ACC=DAT;

  92.           for(i=0;i<25;i++)
  93.           {       
  94.             for(j=0;j<220;j++)
  95.                 {
  96.                   // BCD();//BCD码调整
  97.                    DISPCLK(DAT);//显示
  98.                    DEL1MS(3);//延时3毫秒   

  99.                  }
  100.                  FMQ=1;//蜂鸣器响
  101.                  //ACC=DAT;
  102.                 // ACC=ACC+0x99; //完成数字的减1操作

  103.                 // DA A;//???       
  104.                  DAT=DAT-1; //调整好的数字送显存                 
  105.            }

  106.            //最后5秒黄灯闪
  107.                  P1=0xff;
  108.                  P2=0xff;//关所有的灯
  109.                  ZY=0;//黄灯亮
  110.                  YY=0;
  111.                  QY=0;
  112.                  HY=0;                  
  113.                 for(i=0;i<5;i++)
  114.           {       
  115.             for(j=0;j<220;j++)
  116.                 {
  117.                    //BCD();//BCD码调整
  118.                    DISPCLK(DAT);//显示
  119.                    DEL1MS(3);//延时3毫秒
  120.                   
  121.                  }
  122.                  QY=~QY;// 南北向黄灯亮
  123.                  HY=~HY;
  124.                  ZY=~ZY;//东西方向黄灯亮
  125.                  YY=~YY;  
  126.                  FMQ=~FMQ;//黄灯时蜂鸣器叫一声

  127.                  DAT=DAT-1; ////完成数字的减1操作,调整好的数字送显存         
  128.                  
  129.            }

  130.            P1=0xff;
  131.            P2=0xff;         
  132.            DAT=20; //汇编0x20
  133.            ZG=0;//东西方向绿灯亮
  134.            YG=0;
  135.            QR=0;//南北方向红灯亮
  136.            HR=0;
  137.            ACC=DAT;
  138.            for(i=0;i<15;i++)//执行15秒
  139.           {       
  140.             for(j=0;j<220;j++)
  141.                 {
  142.                    //BCD();//BCD码调整
  143.                    DISPCLK(DAT);//显示
  144.                    DEL1MS(3);//延时3毫秒  
  145.                  }
  146.                  FMQ=1;//蜂鸣器响
  147.              DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存
  148.                
  149.            }
  150.                  //最后5秒黄灯闪
  151.                  P1=0xff;
  152.                  P2=0xff;//关所有的灯
  153.                  ZY=0;//黄灯亮
  154.                  YY=0;
  155.                  QY=0;
  156.                  HY=0;
  157.           for(i=0;i<5;i++)
  158.           {       
  159.             for(j=0;j<220;j++)
  160.                 {
  161.                    //BCD();//BCD码调整
  162.                    DISPCLK(DAT);//显示
  163.                    DEL1MS(3);//延时3毫秒                   
  164.                  }
  165.                  QY=~QY;// 南北向黄灯亮
  166.                  HY=~HY;
  167.                  ZY=~ZY;//东西方向黄灯亮
  168.                  YY=~YY;  
  169.                  FMQ=~FMQ;//黄灯时蜂鸣器叫一声

  170.                  DAT=DAT-1; //完成数字的减1操作 ,调整好的数字送显存         
  171.                  
  172.            }
  173.         }         
  174.                  
  175. }

  176. void D_X()  interrupt 0 using 0        //东西(横向)方向道路紧急通行50秒中断程序
  177. {       
  178.         uchar i,j,temp1,temp2,temp3; //定义局部变量
  179.         EA=0;//关总中断
  180.         P3_2=1;
  181.         while(!P3_2) ;//等待按键释放
  182.         temp1=DAT;//保存显示数据
  183.         temp2=P1;
  184.         temp3=P2;

  185.         DAT=50;
  186.         P1=0xff;
  187.         P2=0xff;
  188.         ZG=0;//东西方向绿灯亮
  189.         YG=0;
  190.         QR=0; //南北向红灯亮
  191.         HR=0;
  192.        
  193.          
  194.         for(i=0;i<50;i++)//执行50秒
  195.         {       
  196.             for(j=0;j<220;j++)
  197.                 {
  198.                    //BCD(DAT);//BCD码调整
  199.                    DISPCLK(DAT);//显示
  200.                    DEL1MS(3);//延时3毫秒
  201.                  }
  202.              DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
  203.          }
  204.         DAT=temp1;//回复显示数据
  205.         P1=temp2;
  206.         P2=temp3;

  207.         EA=1;//开总中断
  208. }

  209. void N_B()  interrupt 2 using 0         //南北(纵向)方向道路紧急中断程序
  210. {       
  211.         uchar i,j,temp1,temp2,temp3; //定义局部变量
  212.         EA=0;//关总中断
  213.         P3_3=1;
  214.         while(!P3_3) ;//等待按键释放
  215.         temp1=DAT;//保存显示数据
  216.         temp2=P1;
  217.         temp3=P2;

  218.         DAT=50;
  219.         P1=0xff;
  220.         P2=0xff;
  221.         ZR=0;//东西方向红灯亮
  222.         YR=0;
  223.         QG=0; //南北向绿灯亮
  224.         HG=0;        
  225.         for(i=0;i<50;i++)//执行50秒
  226.         {       
  227.             for(j=0;j<220;j++)
  228.                 {
  229.                    //BCD(DAT);//BCD码调整
  230.                    DISPCLK(DAT);//显示
  231.                    DEL1MS(3);//延时3毫秒
  232.                  }
  233.              DAT=DAT-1;////完成数字的减1操作,调整好的数字送显存               
  234.          }
  235.         DAT=temp1;//回复显示数据
  236.         P1=temp2;
  237.        

  238. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



汇编语言单片机源码:

  1. ;智能交通灯控制器程序
  2.                 ;以下程序完成各脚的预定义
  3.                 FMQ        EQU        P1.0                ;蜂鸣器
  4.                 QR        EQU        P1.1                ;北红灯
  5.                 QY        EQU        P1.2                ;北黄灯
  6.                 QG        EQU        P1.3                ;北绿灯
  7.                 HR        EQU        P1.4                ;南红灯
  8.                 HY        EQU        P1.5                ;南黄灯
  9.                 HG        EQU        P1.6                ;南绿灯       
  10.                 ZR        EQU        P2.7                ;东红灯
  11.                 ZY        EQU        P2.6                ;东黄灯
  12.                 ZG        EQU        P2.5                ;东绿灯               
  13.                 YR        EQU        P2.2                ;西红灯
  14.                 YY        EQU        P2.3                ;西黄灯               
  15.                 YG        EQU        P2.4                ;西绿灯
  16.                 SWITCH1        EQU        P2.1                ;时间显示的十位控制               
  17.                 SWITCH2        EQU        P2.0                ;时间显示的个位控制
  18.                
  19.                 DAT        EQU        60H                ;显存
  20.                
  21.                 ORG  0000H
  22.                  LJMP START
  23.                  ORG  0003H
  24.                  LJMP D_X                        ;外部中断0,东西向紧急按键
  25.                  ORG  000BH
  26.                  RETI                                ;
  27.                  ORG  0013H
  28.                  LJMP N_B                        ;外部中断1,南北向紧急按键
  29.                  ORG  001BH
  30.                  RETI
  31.                  ORG  0023H
  32.                  RETI

  33.                  ORG  0040H                        ;定位
  34. START:
  35.                
  36.                 MOV        TCON,        #5H                ;外部中断为下降沿触发
  37.                 SETB        EX0                        ;
  38.                 SETB        EX1                        ;开外部中断
  39.                 SETB        EA                        ;开总中断
  40.                 ;IO口初始化
  41.                 MOV   P0,#0FFH
  42.                 MOV   P1,#0FFH                        ;
  43.                 MOV   P2,#0FFH   ;
  44.                 MOV   P3,#0FFH                        ;
  45.                 MOV        DAT,        #25H                ;
  46.                
  47.                
  48. AUTCLK:
  49.                 MOV        P1,        #0FFH                ;
  50.                 MOV        P2,        #0FFH                ;  
  51.                 MOV        DAT,        #30H                ;写入每一通路的通行时间
  52.                 CLR        QG                        ;南北向绿灯亮
  53.                 CLR        HG                        ;
  54.                 CLR        ZR                        ;东西向红灯亮
  55.                 CLR        YR                        ;
  56.                
  57.                         MOV        A,        DAT                ;
  58.                 MOV        R2,        #25                ;写入时间值
  59. A1:
  60.                 MOV        R1,        #220                ;
  61. A2:
  62.                 ACALL        BCD                        ;BCD调整
  63.                 ACALL        DISPCLK                        ;显示
  64.                 ACALL        DEL1MS                        ;延时
  65.                 ACALL        DEL1MS                        ;
  66.                 ACALL        DEL1MS                        ;
  67.                 DJNZ        R1,        A2                ;
  68.                 SETB        FMQ                        ;       
  69.                 MOV        A,        DAT                ;完成数字的减1操作
  70.                 ADD        A,        #99H                ;
  71.                 DA        A                        ;
  72.                 MOV        DAT,        A                ;调整好的数字送显存
  73.                 DJNZ        R2,        A1                ;
  74.                 ;最后5秒黄灯闪
  75.                 MOV        P1,        #0FFH                ;
  76.                 MOV        P2,        #0FFH                ;关所有灯                                  
  77.                 CLR        ZY                        ;黄灯亮
  78.                 CLR        YY                        ;
  79.                 CLR        QY                        ;
  80.                 CLR        HY                        ;

  81.                 MOV        R2,        #5                ;
  82. A3:
  83.                 MOV        R1,        #220                ;
  84. A4:
  85.                 ACALL        BCD                        ;
  86.                 ACALL        DISPCLK                        ;
  87.                 ACALL        DEL1MS                        ;
  88.                 ACALL        DEL1MS                        ;
  89.                 ACALL        DEL1MS                        ;
  90.                 DJNZ        R1,        A4                ;
  91.                 CPL        QY                        ;南北向绿灯亮
  92.                 CPL        HY                        ;
  93.                 CPL        ZY                        ;东西向红灯亮
  94.                 CPL        YY                        ;       
  95.                 CPL        FMQ                        ;黄灯时蜂鸣器叫一声
  96.                 MOV        A,        DAT                ;
  97.                 ADD        A,        #99H                ;
  98.                 DA        A                        ;
  99.                 MOV        DAT,        A                ;
  100.                 DJNZ        R2,        A3                ;


  101.                 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  102.                 MOV        P1,        #0FFH                ;
  103.                 MOV        P2,        #0FFH                ;
  104.                 MOV        DAT,        #20H                ;
  105.                 CLR        ZG                        ;东西向绿灯亮
  106.                 CLR        YG                        ;
  107.                 CLR        QR                        ;南北向红灯亮
  108.                 CLR        HR                        ;
  109.                 MOV        A,        DAT                ;
  110.                 MOV        R2,        #15                ;执行15秒
  111. A5:
  112.                 MOV        R1,        #220                ;
  113. A6:
  114.                 ACALL        BCD                        ;BCD调整
  115.                 ACALL        DISPCLK                        ;显示
  116.                 ACALL        DEL1MS                        ;
  117.                 ACALL        DEL1MS                        ;
  118.                 ACALL        DEL1MS                        ;
  119.                 DJNZ        R1,        A6                ;
  120.                 SETB        FMQ                        ;       
  121.                 MOV        A,        DAT                ;
  122.                 ADD        A,        #99H                ;减1操作
  123.                 DA        A                        ;
  124.                 MOV        DAT,        A                ;
  125.                 DJNZ        R2,        A5                ;
  126.                 ;最后5秒黄灯闪
  127.                 MOV        P1,        #0FFH                ;
  128.                 MOV        P2,        #0FFH                ;关所有灯
  129.                 CLR        ZY                        ;黄灯亮
  130.                 CLR        YY                        ;
  131.                 CLR        QY                        ;
  132.                 CLR        HY                        ;

  133.                 MOV        R2,        #5                ;
  134. A7:
  135.                 MOV        R1,        #220                ;
  136. A8:
  137.                 ACALL        BCD                        ;
  138.                 ACALL        DISPCLK                        ;
  139.                 ACALL        DEL1MS                        ;
  140.                 ACALL        DEL1MS                        ;
  141.                 ACALL        DEL1MS                        ;
  142.                 DJNZ        R1,        A8                ;
  143.                 CPL        QY                        ;南北向黄灯亮
  144.                 CPL        HY                        ;
  145.                 CPL        ZY                        ;东西向黄灯亮
  146.                 CPL        YY                        ;       
  147.                 CPL        FMQ                        ;黄灯时蜂鸣器叫一声
  148.                 MOV        A,        DAT                ;
  149.                 ADD        A,        #99H                ;
  150.                 DA        A                        ;
  151.                 MOV        DAT,        A                ;
  152.                 DJNZ        R2,        A7                ;
  153.                 AJMP        AUTCLK                        ;
  154.                 NOP                                ;
  155.                 NOP                                ;
  156.                 NOP                                ;
  157.                 LJMP START
  158. ;;*********************************
  159. ;;显示子程序
  160. ;;**********************************          
  161. DISPCLK:
  162.         MOV        DPTR,        #TAB        ;定入表头
  163.         ;显示个位
  164.         MOV        A,        50H        ;
  165.         MOVC        A,        @A+DPTR        ;
  166.                MOV        P0,        A        ;
  167.                CLR        SWITCH2                ;  个位显示
  168.                LCALL        DEL1MS                ;
  169.                SETB        SWITCH2                ;个位灭
  170.                ;显示十位
  171.                MOV        A,        51H        ;
  172.                MOVC        A,        @A+DPTR        ;
  173.                MOV        P0,        A        ;
  174.                CLR        SWITCH1                ; 十位显示
  175.                LCALL        DEL1MS                ;
  176.                SETB        SWITCH1                ; 十位灭
  177.                RET                        ;
  178.                NOP                        ;
  179.                NOP                        ;
  180.                NOP                        ;
  181.                LJMP  START
  182. ;************************************************************
  183. ;横向道路紧急中断程序
  184. ;************************************************************
  185. D_X:
  186.                 CLR        EA                        ;关总中断
  187.                 JNB        P3.2,        $                ;
  188.                 MOV        A,        DAT                ;保存显示数据
  189.                 MOV        20H,        A                ;
  190.                 MOV        DAT,        #50H                ;
  191.                 MOV        21H,        P1                ;
  192.                 MOV        22H,        P2                ;
  193.                 MOV        P1,        #0FFH                ;
  194.                 MOV        P2,        #0FFH                ;
  195.                 CLR        ZG                        ;东西向绿灯亮
  196.                 CLR        YG                        ;
  197.                 CLR        QR                        ;南北向红灯亮
  198.                

  199. …………限于本文篇幅 余下代码请从51黑下载附件…………
  200. \032
复制代码

0.png

下载:
实例4 交通灯.zip (6.96 MB, 下载次数: 127)
回复

使用道具 举报

ID:203433 发表于 2017-5-23 21:44 来自手机 | 显示全部楼层
有实验报告吗?
回复

使用道具 举报

ID:293228 发表于 2018-3-17 17:26 | 显示全部楼层
谢谢楼主,对我画pcb的帮助很大
回复

使用道具 举报

ID:293228 发表于 2018-3-17 17:32 | 显示全部楼层
如果由设计思路和原理就更好了
回复

使用道具 举报

ID:409516 发表于 2018-10-14 17:17 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:432842 发表于 2018-11-25 15:07 | 显示全部楼层
我想下载啊   
回复

使用道具 举报

ID:433094 发表于 2018-11-25 22:04 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:355099 发表于 2018-12-4 10:25 | 显示全部楼层
谢谢楼主   无线交通灯的毕业设计搞了半年  这个AD图真难找。。。
回复

使用道具 举报

ID:438135 发表于 2018-12-4 17:21 | 显示全部楼层
感谢分享 确实是好东西 本来有个设计有点问题的 看了你的设计 非常有益
回复

使用道具 举报

ID:1019397 发表于 2022-4-21 17:37 来自手机 | 显示全部楼层
中间的电铃是什么用啊
回复

使用道具 举报

ID:1102417 发表于 2024-6-20 17:19 | 显示全部楼层
我的DP哪儿显示有错误这是为什么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表