找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15713|回复: 66
打印 上一主题 下一主题
收起左侧

单片机交通灯设计全套资料 实物 仿真 论文都有 4个数码管显示

  [复制链接]
跳转到指定楼层
楼主
我买的一个很详细的交通灯设计资料分享给大家(实物 仿真 原理图 pcb 开题报告 论文一应俱全,该有的都有了,看下面的目录列表就知道了):

1
、单片机是通用的无论51还是52、无论stc还是at都一样,引脚功能都一样,原理图和程序也是一样的。
2、原理图中的. sch等格式是要用protel99se打开的,没有软件的不要紧,我已帮您转换成word格式和pdf格式的了。
3、程序中的.c文件可以用记事本打开,就是程序了。其他的是写程序是自动生成的,没什么用的。
4、可以按照正面布局,尽量不要按照实物的背面焊接,很容易看错,要按照原理图焊接,不要按照仿真图焊接,因为仿真只是模拟一个现象。
5、关于资料好评后发送~~好评后记得向客服要哦~~~,我们的论文是针对这个设计写的,不包修改,不包查重,望知悉。


全部资料包含以下目录(在本帖附件都都可下载):
Altium Designer Sunner画图软件学习视频
Altium Designer Sunner画图软件安装视频
AltiumDesignerSummer9 画图软件安装包
C语言视频教程
KEIL 软件安装视频
keil4软件安装包 开发工具地址
MCU 单片机芯片资料
PCB图
Protel 99 软件安装包
Protel 99 软件安装视频
Protel 99画图软件学习视频
Proteus ISIS  仿真软件学习视频
Proteus 软件安装包
PROTEUS仿真软件的安装方法
交通灯开题报告
仿真图(使用PROTEUS软件打开文件里面后缀为DSN的文件)
元件清单
制作过程
单片机初学者视频教程 郭天祥老师
单片机初学者视频教程 霖锋老师
单片机初学者视频程序讲解教程
单片机程序下载软件 STC-ISP-V4.83
原理图
参考论文
实物照片
工程新建  程序下载 视频教程
开发工具地址 keil4软件安装包
操作视频地址
毕设答辩技巧
焊接注意事项和调试讲解
程序
程序讲解视频
答辩常见问题解答
设计资料
使用前必读.doc
原理图 打开方式.txt
程序打开方法.txt




  1. #include <reg52.h>                 //调用单片机头文件
  2. #define uchar unsigned char   //宏定义"uchar"代替"unsigned char"。
  3. #define uint  unsigned int          //宏定义"uint"用来定义无符号整型数。


  4. //数码管段选定义 0     1    2    3           4           5        6         7          8           9       
  5. uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  6. //                                           A        B         C          D           E   F        不显示
  7.                                          0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};         //断码       

  8. uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};       
  9. uchar smg_i = 4;    //显示数码管的个位数

  10. //数码管位选定义
  11. sbit smg_we1 = P2^0;            //数码管位选定义
  12. sbit smg_we2 = P2^1;
  13. sbit smg_we3 = P3^6;
  14. sbit smg_we4 = P3^7;


  15. char dx_s = 0;        //东西  南北 倒计时变量
  16. sbit dx_red    = P2^4;            //东西红灯
  17. sbit dx_green  = P2^3;                //东西绿灯
  18. sbit dx_yellow = P2^2;                //东西黄灯

  19. sbit nb_red    = P2^7;                //南北红灯
  20. sbit nb_green  = P2^6;                //南北绿灯
  21. sbit nb_yellow = P2^5;                //南北黄灯       

  22. uchar flag_jtd_mode;  //交通灯的模式 根据时间
  23. bit flag_1s = 0;
  24. bit flag_500ms;
  25. bit flag_dx_nb;                 //东西南北模式
  26. uchar flag_5m_value;
  27. uchar i;
  28. uchar flag_alarm;        //模式
  29. uchar dx_time = 30,nb_time = 20;   //东西、南北的时间
  30. uchar flag_jdgz ;     //交通管制


  31. /***********************数码位选函数*****************************/
  32. void smg_we_switch(uchar i)
  33. {
  34.         switch(i)
  35.         {
  36.                 case 0: smg_we1 = 0;  smg_we2 = 1; smg_we3 = 1;  smg_we4 = 1; break;
  37.                 case 1: smg_we1 = 1;  smg_we2 = 0; smg_we3 = 1;  smg_we4 = 1; break;
  38.                 case 2: smg_we1 = 1;  smg_we2 = 1; smg_we3 = 0;  smg_we4 = 1; break;
  39.                 case 3: smg_we1 = 1;  smg_we2 = 1; smg_we3 = 1;  smg_we4 = 0; break;
  40.         }       
  41. }


  42. /********************************************************************
  43. * 名称 : delay_1ms()
  44. * 功能 : 延时1ms函数
  45. * 输入 : q
  46. * 输出 : 无
  47. ***********************************************************************/
  48. void delay_1ms(uint q)
  49. {
  50.         uint i,j;
  51.         for(i=0;i<q;i++)
  52.                 for(j=0;j<110;j++);
  53. }


  54. /********************************************************************
  55. * 名称 : display()
  56. * 功能 : 数码管显示
  57. * 输入 : 无
  58. * 输出 : 无
  59. ***********************************************************************/
  60. void display()
  61. {
  62.         uchar i;
  63.         for(i=0;i<smg_i;i++)
  64.         {               
  65.                 P0 = 0xff;                  //消隐
  66.                 smg_we_switch(i);            //位选
  67.                 P0 = dis_smg[i];          //段选          
  68.                 delay_1ms(3);
  69.         }
  70. }

  71. /*********************定时器0、定时器1初始化******************/
  72. void time0_init()          
  73. {
  74.         EA  = 1;                   //开总中断
  75.         TMOD = 0X11;          //定时器0、定时器1工作方式1
  76.         ET0 = 1;                  //开定时器0中断
  77.         TR0 = 1;                  //允许定时器0定时
  78. //        ET1 = 1;                  //开定时器1中断
  79. //        TR1 = 1;                  //允许定时器1定时       
  80. }

  81. /*********************交通灯处理函数*********************************/
  82. void jiaotongdeng_dis()
  83. {
  84.         if(flag_1s == 1)
  85.         {
  86.                 flag_1s = 0;
  87.                 if(dx_s == 0)
  88.                 {
  89.                         if(flag_dx_nb == 1)
  90.                                 dx_s = nb_time;          //南北时间
  91.                         else
  92.                                 dx_s = dx_time;          //东西时间
  93.                         flag_dx_nb = ~flag_dx_nb;
  94.                 }
  95.                 dx_s --;
  96.         }
  97.         dis_smg[0] = smg_du[dx_s % 10] ;
  98.         dis_smg[1] = smg_du[dx_s / 10] ;
  99.         dis_smg[2] = smg_du[dx_s % 10] ;
  100.         dis_smg[3] = smg_du[dx_s / 10] ;

  101. /***********************南北时间*********************************/
  102.                 if(flag_dx_nb == 0)  
  103.                 {
  104.                         if(dx_s > 5)
  105.                         {
  106.                                 dx_red    = 1;  //灭
  107.                                 dx_green  =        0;        //亮
  108.                                 dx_yellow = 1;        //灭
  109.                                 nb_red    = 0;  //亮
  110.                                 nb_green  =        1;        //灭
  111.                                 nb_yellow = 1;        //灭
  112.                                 flag_5m_value = 0;       
  113.                         }else if(dx_s <= 5)                 //当小于5秒时  黄灯要闪了
  114.                         {
  115.                                 dx_red    = 1;    //灭
  116.                                 dx_green  =        1;          //灭
  117.                                 nb_red    = 0;    //亮
  118.                                 nb_green  =        1;          //灭
  119.                                 nb_yellow = 1;          //灭
  120.                                 if(flag_500ms == 0)
  121.                                 {
  122.                                         dx_yellow = 0;//亮       
  123.                                 }
  124.                                 else
  125.                                 {
  126.                                         dx_yellow = 1;//灭       
  127.                                 }
  128.                         }
  129.                 }
  130. /***********************东西时间*********************************/
  131.                 if(flag_dx_nb == 1)  
  132.                 {
  133.                         if(dx_s > 5)
  134.                         {
  135.                                 dx_red    = 0;     //亮
  136.                                 dx_green  =        1;           //灭
  137.                                 dx_yellow = 1;           //灭
  138.                                 nb_red    = 1;     //灭
  139.                                 nb_green  =        0;           //亮
  140.                                 nb_yellow = 1;           //灭
  141.                                 flag_5m_value = 0;       
  142.                         }else if(dx_s <= 5)                 //当小于5秒时  黄灯要闪了
  143.                         {
  144.                                 dx_red    = 0;     //灭
  145.                                 dx_green  =        1;           //灭
  146.                                 dx_yellow = 1;           //灭
  147.                                 nb_red    = 1;     //灭
  148.                                 nb_green  =        1;           //灭
  149.                                 if(flag_500ms == 0)           //黄灯闪烁
  150.                                 {
  151.                                         nb_yellow = 0;        //亮       
  152.                                 }
  153.                                 else
  154.                                 {
  155.                                         nb_yellow = 1;        //灭       
  156.                                 }
  157.                         }
  158.         }                       
  159. }

  160. /********************独立按键程序*****************/
  161. uchar key_can;         //按键值

  162. void key()         //独立按键程序
  163. {
  164.         static uchar key_new;
  165.         key_can = 20;                   //按键值还原
  166.         P1 |= 0x1f;
  167.         if((P1 & 0x1f) != 0x1f)                //按键按下
  168.         {
  169.                 delay_1ms(1);                     //按键消抖动
  170.                 if(((P1 & 0x1f) != 0x1f) && (key_new == 1))
  171.                 {                                                //确认是按键按下
  172.                         key_new = 0;
  173.                         switch(P1 & 0x1f)
  174.                         {
  175.                                 case 0x1e:  key_can = 1;  break;         //得到按键值
  176.                                 case 0x1d:  key_can = 2;  break;         //得到按键值
  177.                                 case 0x1b:  key_can = 3;  break;         //得到按键值
  178.                                 case 0x17:  key_can = 4;  break;         //得到按键值
  179.                         }
  180.                 }                       
  181.         }
  182.         else
  183.                 key_new = 1;       
  184. }

  185. uchar menu_1,flag_s;


  186. /********************设置函数*****************/
  187. void key_with()
  188. {
  189.         if(key_can == 4)   //交通管制按键
  190.         {
  191.                 flag_jdgz ++;
  192.                 if(flag_jdgz > 5)
  193.                         flag_jdgz = 0;       
  194.                 if(flag_jdgz == 1)         //  全部亮红灯
  195.                 {
  196.                         dx_red    = 0;  //亮
  197.                         dx_green  =        1;        //灭
  198.                         dx_yellow = 1;        //灭
  199.                         nb_red    = 0;  //亮
  200.                         nb_green  =        1;        //灭
  201.                         nb_yellow = 1;        //灭                       
  202.                 }
  203.                 if(flag_jdgz == 2)         //  东西红灯  南北绿灯
  204.                 {
  205.                         dx_red    = 0;  //亮
  206.                         dx_green  =        1;        //灭
  207.                         dx_yellow = 1;        //灭
  208.                         nb_red    = 1;  //灭
  209.                         nb_green  =        0;        //亮
  210.                         nb_yellow = 1;        //灭                       
  211.                 }
  212.                 if(flag_jdgz == 3)         //  南北红灯  东西绿灯
  213.                 {
  214.                         dx_red    = 1;  //灭
  215.                         dx_green  =        0;        //亮
  216.                         dx_yellow = 1;        //灭
  217.                         nb_red    = 0;  //亮
  218.                         nb_green  =        1;        //灭
  219.                         nb_yellow = 1;        //灭                       
  220.                 }
  221.                 if(flag_jdgz == 4)         //  南北绿灯  东西绿灯
  222.                 {
  223.                         dx_red    = 1;  //灭
  224.                         dx_green  =        0;        //亮
  225.                         dx_yellow = 1;        //灭
  226.                         nb_red    = 1;  //灭
  227.                         nb_green  =        0;        //亮
  228.                         nb_yellow = 1;        //灭                       
  229.                 }
  230.                 if(flag_jdgz == 5)         //  南北黄灯  东西黄灯
  231.                 {
  232.                         dx_red    = 1;  //灭
  233.                         dx_green  =        1;        //灭
  234.                         dx_yellow = 0;        //亮
  235.                         nb_red    = 1;  //灭
  236.                         nb_green  =        1;        //灭
  237.                         nb_yellow = 0;        //亮                       
  238.                 }
  239.         }
  240.         if(key_can == 1)          //设置键
  241.         {
  242.                 menu_1 ++;
  243.                 if(menu_1 >= 3)
  244.                 {
  245.                         menu_1  = 0;
  246.                 }
  247.         }

  248.         if(menu_1 == 1)           //设置东西的时间
  249.         {
  250.                 if(key_can == 2)
  251.                 {
  252.                         dx_time ++ ;                //加1
  253.                         if(dx_time > 99)
  254.                                 dx_time = 99;
  255.                 }
  256.                 if(key_can == 3)
  257.                 {
  258.                         dx_time -- ;                //减1
  259.                         if(dx_time <= 10)
  260.                                 dx_time = 10;
  261.                 }
  262.                 dis_smg[0] = smg_du[10] ;        //显示为A
  263.                 dis_smg[1] = smg_du[10] ;        //显示为A
  264.                 dis_smg[2] = smg_du[dx_time % 10] ;                //显示东西设置的时候
  265.                 dis_smg[3] = smg_du[dx_time / 10] ;       
  266.         }       
  267.         if(menu_1 == 2)           //设置南北的时间
  268.         {
  269.                 if(key_can == 2)
  270.                 {
  271.                         nb_time ++ ;                //加1
  272.                         if(nb_time > 99)
  273.                                 nb_time = 99;
  274.                 }
  275.                 if(key_can == 3)
  276.                 {
  277.                         nb_time -- ;                //减1
  278.                         if(nb_time <= 10)
  279.                                 nb_time = 10;
  280.                 }
  281.                 dis_smg[0] = smg_du[11] ;        //显示为B
  282.                 dis_smg[1] = smg_du[11] ;        //显示为B
  283.                 dis_smg[2] = smg_du[nb_time % 10] ;                //显示东西设置的时候
  284.                 dis_smg[3] = smg_du[nb_time / 10] ;       
  285.         }
  286. }


  287. /********************************************************************
  288. * 名称 : main()
  289. * 功能 : 实现灯的闪烁
  290. * 输入 : 无
  291. * 输出 : 无
  292. ***********************************************************************/
  293. void main()
  294. {
  295.         time0_init();
  296.         dx_s = nb_time;          //东西时间
  297.         while(1)
  298.         {
  299.                 key();
  300.                 if(key_can < 20)
  301.                         key_with();
  302. //                menu_dis();



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

全部资料打包下载(非常详细):
##单片机交通灯 4个数码管.rar (14.67 MB, 下载次数: 994)


评分

参与人数 4黑币 +20 收起 理由
gqzjl + 5 共享资料的黑币奖励!
活得简单 + 5 赞一个!
mimonarch + 5 共享资料的黑币奖励!
菜鸟小哥 + 5 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏26 分享淘帖 顶12 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-5-9 18:09 | 只看该作者
好资料,很全 51黑有你更精彩.
回复

使用道具 举报

板凳
ID:192145 发表于 2017-5-9 19:52 来自手机 | 只看该作者
好资料,赞一个
回复

使用道具 举报

地板
ID:198867 发表于 2017-5-9 23:07 | 只看该作者
下载后不是rar?
回复

使用道具 举报

5#
ID:1 发表于 2017-5-9 23:38 | 只看该作者
DFYZ 发表于 2017-5-9 23:07
下载后不是rar?

是rar文件 我测试过
回复

使用道具 举报

6#
ID:64138 发表于 2017-5-10 15:23 | 只看该作者
正在学习中
回复

使用道具 举报

7#
ID:242365 发表于 2017-10-26 00:24 | 只看该作者
怎么下载不成
回复

使用道具 举报

8#
ID:243091 发表于 2017-10-27 17:13 | 只看该作者
请问,P 2 口为什么要加排阻....而且 2 K 怎么来的
回复

使用道具 举报

9#
ID:280338 发表于 2018-1-31 06:44 | 只看该作者
下载后不是rar?
回复

使用道具 举报

10#
ID:333934 发表于 2018-5-29 22:24 | 只看该作者
不是rar格式的,怎么回事?
回复

使用道具 举报

11#
ID:343378 发表于 2018-6-29 21:34 | 只看该作者
下载了怎么是记事本模式  都是乱码
回复

使用道具 举报

12#
ID:362137 发表于 2018-6-30 09:46 | 只看该作者
谢谢大佬,正好这个有点不会做
回复

使用道具 举报

13#
ID:360322 发表于 2018-7-2 07:08 | 只看该作者
下载都只是文档
回复

使用道具 举报

14#
ID:310363 发表于 2018-7-3 11:12 | 只看该作者
好资料,不错。
回复

使用道具 举报

15#
ID:366116 发表于 2018-7-6 10:18 来自手机 | 只看该作者
好资料
回复

使用道具 举报

16#
ID:368489 发表于 2018-7-10 10:58 | 只看该作者
好评 想学习一下!
回复

使用道具 举报

17#
ID:368765 发表于 2018-7-11 13:39 | 只看该作者
不错,好好学习
回复

使用道具 举报

18#
ID:416861 发表于 2018-10-28 20:26 | 只看该作者
好棒!大神!
回复

使用道具 举报

19#
ID:410499 发表于 2018-10-29 10:10 | 只看该作者
借用  借用 大神
回复

使用道具 举报

20#
ID:417036 发表于 2018-10-31 11:00 | 只看该作者
代码在哪,里面的代码都乱了
回复

使用道具 举报

21#
ID:350104 发表于 2018-11-8 09:06 | 只看该作者
资料确实很完整 很有用  就是程序解释不是很清楚
回复

使用道具 举报

22#
ID:379620 发表于 2018-11-8 22:56 | 只看该作者
很优秀的作品
回复

使用道具 举报

23#
ID:379620 发表于 2018-11-8 22:57 | 只看该作者
很优秀的作品,值得学习
回复

使用道具 举报

24#
ID:433212 发表于 2018-12-1 14:21 | 只看该作者
打不开啊
回复

使用道具 举报

25#
ID:441855 发表于 2018-12-8 10:19 | 只看该作者
好资料赞一个
回复

使用道具 举报

26#
ID:441855 发表于 2018-12-8 10:20 | 只看该作者
好资料  赞一个
回复

使用道具 举报

27#
ID:445248 发表于 2018-12-13 22:09 来自手机 | 只看该作者
admin 发表于 2017-5-9 23:38
是rar文件 我测试过

请问下载后怎样正确打开,我不懂,希望你可以为我解答
回复

使用道具 举报

28#
ID:446582 发表于 2018-12-15 19:18 | 只看该作者
很详细,收藏,楼主辛苦了
回复

使用道具 举报

29#
ID:352362 发表于 2018-12-17 14:34 | 只看该作者

借用  借用 大神
回复

使用道具 举报

30#
ID:399179 发表于 2018-12-18 13:02 来自手机 | 只看该作者
感谢楼主分享
回复

使用道具 举报

31#
ID:449073 发表于 2018-12-18 19:09 | 只看该作者
大佬6666
回复

使用道具 举报

32#
ID:449253 发表于 2018-12-18 20:15 | 只看该作者
admin 发表于 2017-5-9 23:38
是rar文件 我测试过

乱码
回复

使用道具 举报

33#
ID:451382 发表于 2018-12-21 10:57 来自手机 | 只看该作者
很详细,很好,对我的实习很有用
回复

使用道具 举报

34#
ID:432200 发表于 2018-12-23 09:33 | 只看该作者
admin 发表于 2017-5-9 23:38
是rar文件 我测试过

我下载下来不是rar
回复

使用道具 举报

35#
ID:453357 发表于 2018-12-25 09:07 | 只看该作者
很有用的资料
回复

使用道具 举报

36#
ID:454340 发表于 2018-12-25 13:39 | 只看该作者

很详细,很好,对我的实习很有用
回复

使用道具 举报

37#
ID:435947 发表于 2018-12-26 23:22 | 只看该作者
给力!!
回复

使用道具 举报

38#
ID:274121 发表于 2018-12-31 21:11 | 只看该作者
文章很有想象力,符合交通灯的指示习惯
回复

使用道具 举报

39#
ID:448896 发表于 2019-1-2 11:13 | 只看该作者
s1945077681 发表于 2018-12-13 22:09
请问下载后怎样正确打开,我不懂,希望你可以为我解答

显示扩展名 把.txt改成.rar
回复

使用道具 举报

40#
ID:459442 发表于 2019-1-2 12:56 | 只看该作者
仿真文件夹的hex文件可以正常显示交通灯,程序里面生成的hex文件正常显示不了是什么情况
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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