标题: 单片机交通灯设计全套资料 实物 仿真 论文都有 4个数码管显示 [打印本页]

作者: strugglesdy    时间: 2017-5-9 16:41
标题: 单片机交通灯设计全套资料 实物 仿真 论文都有 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, 下载次数: 996)



作者: admin    时间: 2017-5-9 18:09
好资料,很全 51黑有你更精彩.
作者: 易兆38号    时间: 2017-5-9 19:52
好资料,赞一个
作者: DFYZ    时间: 2017-5-9 23:07
下载后不是rar?

作者: admin    时间: 2017-5-9 23:38
DFYZ 发表于 2017-5-9 23:07
下载后不是rar?

是rar文件 我测试过
作者: A473956691    时间: 2017-5-10 15:23
正在学习中
作者: wanglingl    时间: 2017-10-26 00:24
怎么下载不成
作者: happiness1    时间: 2017-10-27 17:13
请问,P 2 口为什么要加排阻....而且 2 K 怎么来的
作者: jinzigang    时间: 2018-1-31 06:44
下载后不是rar?
作者: xdj1212    时间: 2018-5-29 22:24
不是rar格式的,怎么回事?
作者: BDRT    时间: 2018-6-29 21:34
下载了怎么是记事本模式  都是乱码
作者: euxfcnmoi    时间: 2018-6-30 09:46
谢谢大佬,正好这个有点不会做
作者: candy0078    时间: 2018-7-2 07:08
下载都只是文档
作者: tudouchen    时间: 2018-7-3 11:12
好资料,不错。
作者: aaaaa3    时间: 2018-7-6 10:18
好资料
作者: FITZ    时间: 2018-7-10 10:58
好评 想学习一下!
作者: dadda    时间: 2018-7-11 13:39
不错,好好学习

作者: phoenix_jsy    时间: 2018-10-28 20:26
好棒!大神!
作者: qq104542    时间: 2018-10-29 10:10
借用  借用 大神
作者: jimtaijun    时间: 2018-10-31 11:00
代码在哪,里面的代码都乱了
作者: zhouwei0815    时间: 2018-11-8 09:06
资料确实很完整 很有用  就是程序解释不是很清楚
作者: 将刺激的    时间: 2018-11-8 22:56
很优秀的作品
作者: 将刺激的    时间: 2018-11-8 22:57
很优秀的作品,值得学习
作者: 玉尚轩    时间: 2018-12-1 14:21
打不开啊
作者: xiaozhiTZM    时间: 2018-12-8 10:19
好资料赞一个
作者: xiaozhiTZM    时间: 2018-12-8 10:20
好资料  赞一个
作者: s1945077681    时间: 2018-12-13 22:09
admin 发表于 2017-5-9 23:38
是rar文件 我测试过

请问下载后怎样正确打开,我不懂,希望你可以为我解答
作者: fengzhuang    时间: 2018-12-15 19:18
很详细,收藏,楼主辛苦了
作者: warmsake    时间: 2018-12-17 14:34

借用  借用 大神
作者: 快乐眼泪    时间: 2018-12-18 13:02
感谢楼主分享
作者: 1334351454    时间: 2018-12-18 19:09
大佬6666
作者: zsy123    时间: 2018-12-18 20:15
admin 发表于 2017-5-9 23:38
是rar文件 我测试过

乱码

作者: ffffmy    时间: 2018-12-21 10:57
很详细,很好,对我的实习很有用
作者: 德鲁大叔11    时间: 2018-12-23 09:33
admin 发表于 2017-5-9 23:38
是rar文件 我测试过

我下载下来不是rar

作者: 2237440251    时间: 2018-12-25 09:07
很有用的资料
作者: tensionlasplus    时间: 2018-12-25 13:39

很详细,很好,对我的实习很有用
作者: 五厘米    时间: 2018-12-26 23:22
给力!!
作者: beardyan    时间: 2018-12-31 21:11
文章很有想象力,符合交通灯的指示习惯
作者: whgyyl    时间: 2019-1-2 11:13
s1945077681 发表于 2018-12-13 22:09
请问下载后怎样正确打开,我不懂,希望你可以为我解答

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

作者: 小小天天    时间: 2019-1-2 12:56
仿真文件夹的hex文件可以正常显示交通灯,程序里面生成的hex文件正常显示不了是什么情况
作者: ojobwdk    时间: 2019-1-3 21:05
proteus的仿真程序跟文件夹程序里的c程序一样吗?

作者: bape8023    时间: 2019-1-20 18:23
好东西,正好用
作者: ifree8    时间: 2019-1-22 16:50
很好的资料啊,值得学习!
作者: lhblhb    时间: 2019-1-30 12:29
谢谢 谢谢
作者: 15332135378    时间: 2019-1-30 17:45
jinzigang 发表于 2018-1-31 06:44
下载后不是rar?

我也打不开
作者: kadnn    时间: 2019-2-22 10:57
感谢楼主,正要在考虑要做个什么
作者: tigerzq    时间: 2019-2-25 10:55
够详细了,这个才是实用的交通信号灯
作者: 嗯哼——    时间: 2019-2-28 22:45
怎么打不开
作者: xuhaoa    时间: 2019-3-5 10:43
小小天天 发表于 2019-1-2 12:56
仿真文件夹的hex文件可以正常显示交通灯,程序里面生成的hex文件正常显示不了是什么情况

我也是的
作者: 大美女    时间: 2019-3-19 18:29
真好 谢谢
作者: 735960862    时间: 2019-3-25 14:35
很好用
作者: 九幽幻辰    时间: 2019-4-7 15:42
小小天天 发表于 2019-1-2 12:56
仿真文件夹的hex文件可以正常显示交通灯,程序里面生成的hex文件正常显示不了是什么情况

其实就是程序是有错的,仿真里的hex文件是对的,程序怕是得自己改
作者: soukoukoop    时间: 2019-5-20 13:13
程序运行到后面2个错误是什么意思

{SIZIL8G593K]2@[93T0LF6.png (18.44 KB, 下载次数: 425)

{SIZIL8G593K]2@[93T0LF6.png

作者: jbx    时间: 2019-5-22 18:35
真心雷到了,楼主厉害了
作者: 晏小周    时间: 2019-6-7 12:17
很好,很给力
作者: cheish    时间: 2019-6-12 15:46
admin 发表于 2017-5-9 18:09
好资料,很全 51黑有你更精彩.

挺好的
作者: 1+1=6    时间: 2019-6-13 08:32
帮我一个大忙,唯一的一个突破口在你这里得到解决
作者: csrliubin    时间: 2019-6-13 10:04
很好,给力!
作者: iamaock    时间: 2019-6-26 19:42
新人学习了。
作者: 1,1258    时间: 2019-12-21 21:22
程序代码生成的.hex文件无法正常仿真,交通灯4位.hex文件才可以正常仿真
作者: LSFZ    时间: 2019-12-25 09:13
对新手很有帮助
作者: 18856141120    时间: 2020-2-3 23:17
这个挺不错的
作者: 1471490645    时间: 2020-5-6 18:47
有proteus文件吗,可以直接打开仿真吗
作者: llllllllll1111    时间: 2020-5-10 19:12
有报错啊
作者: llllllllll1111    时间: 2020-5-11 10:43
好像可以了
作者: gqzjl    时间: 2020-6-3 19:08
感谢楼主分享
作者: swustlx86    时间: 2020-6-17 09:02
好资料,51黑有你更精彩!!!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1