历史上的今天
今天是:2024年10月23日(星期三)
2019年10月23日 | 51单片机交通灯全套设计资料分享
2019-10-23 来源:51hei
1、用单片机stc89C52 设计一个交通灯系统,并用数码管显示时间,LED指示通行。
2、用protel 99se设计电路图,pcb图等
3、数码管用三极管驱动。
4、按键功能:黄灯常亮(深夜模式)、禁行、东西通行、南北通行、时间加、时间减、切换、确定。



仿真图:
1、单片机是通用的无论51还是52、无论stc还是at都一样,引脚功能都一样,原理图和程序也是一样的。
2、原理图中的. sch等格式是要用protel99se打开的,没有软件的不要紧,我已帮您转换成word格式和pdf格式的了。
3、程序中的.c文件可以用记事本打开,就是程序了。其他的是写程序是自动生成的,没什么用的。
4、可以按照正面布局,尽量不要按照实物的背面焊接,很容易看错,要按照原理图焊接,不要按照仿真图焊接,因为仿真只是模拟一个现象。
5、关于资料好评后发送~~好评后记得向客服要哦~~~,我们的论文是针对这个设计写的,不包修改,不包查重,望知悉。
原理图 打开方式:
DXP格式用 Altium designer Summer 软件打开
protel99格式用 protel99SE 软件打开
PDF格式用 PDF 软件打开
Word格式用 Word 或用WPS 软件打开
4种格式的原理图都内容是一样的 只是打开方式不同
请注意,原理图上有些接线的地方是用网络标号连接的,意思就是名字相同的两个点就是连接在一起的相当导线的作用,图上所有的VCC要接在一起,所有的GND要接在一起。
请看原理图焊接,不要看仿真图焊接。
wrod格式里面的原理图是复制出来的,有一点点变行变形,麻烦大家注意一下,尽量看其他三种格式的图焊接,
如果论文里面的原理图和原理图文件夹内的图不一样的话,请大家以原理图文件夹内的为准,原理图文件夹的图是和实物配套的,可以自己截图或复制,然后粘贴到论文里面去。
单片机源程序如下:
#include #define uchar unsigned char //宏定义"uchar"代替"unsigned char"。 #define uint unsigned int //宏定义"uint"用来定义无符号整型数。 //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, // A B C D E F 不显示 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码 uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; uchar smg_i = 4; //显示数码管的个位数 //数码管位选定义 sbit smg_we1 = P2^0; //数码管位选定义 sbit smg_we2 = P2^1; sbit smg_we3 = P3^6; sbit smg_we4 = P3^7; char dx_s = 0; //东西 南北 倒计时变量 sbit dx_red = P2^4; //东西红灯 sbit dx_green = P2^3; //东西绿灯 sbit dx_yellow = P2^2; //东西黄灯 sbit nb_red = P2^7; //南北红灯 sbit nb_green = P2^6; //南北绿灯 sbit nb_yellow = P2^5; //南北黄灯 uchar flag_jtd_mode; //交通灯的模式 根据时间 bit flag_1s = 0; bit flag_500ms; bit flag_dx_nb; //东西南北模式 uchar flag_5m_value; uchar i; uchar flag_alarm; //模式 uchar dx_time = 30,nb_time = 20; //东西、南北的时间 uchar flag_jdgz ; //交通管制 /***********************数码位选函数*****************************/ void smg_we_switch(uchar i) { switch(i) { case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break; case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break; case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break; case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break; } } /******************************************************************** * 名称 : delay_1ms() * 功能 : 延时1ms函数 * 输入 : q * 输出 : 无 ***********************************************************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i } /******************************************************************** * 名称 : display() * 功能 : 数码管显示 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void display() { uchar i; for(i=0;i P0 = 0xff; //消隐 smg_we_switch(i); //位选 P0 = dis_smg[i]; //段选 delay_1ms(3); } } /*********************定时器0、定时器1初始化******************/ void time0_init() { EA = 1; //开总中断 TMOD = 0X11; //定时器0、定时器1工作方式1 ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0定时 // ET1 = 1; //开定时器1中断 // TR1 = 1; //允许定时器1定时 } /*********************交通灯处理函数*********************************/ void jiaotongdeng_dis() { if(flag_1s == 1) { flag_1s = 0; if(dx_s == 0) { if(flag_dx_nb == 1) dx_s = nb_time; //南北时间 else dx_s = dx_time; //东西时间 flag_dx_nb = ~flag_dx_nb; } dx_s --; } dis_smg[0] = smg_du[dx_s % 10] ; dis_smg[1] = smg_du[dx_s / 10] ; dis_smg[2] = smg_du[dx_s % 10] ; dis_smg[3] = smg_du[dx_s / 10] ; /***********************南北时间*********************************/ if(flag_dx_nb == 0) { if(dx_s > 5) { dx_red = 1; //灭 dx_green = 0; //亮 dx_yellow = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; //灭 flag_5m_value = 0; }else if(dx_s <= 5) //当小于5秒时 黄灯要闪了 { dx_red = 1; //灭 dx_green = 1; //灭 nb_red = 0; //亮 for(j=0;j<110;j++);
史海拾趣
|
目前在做一个SRAM驱动,写成的是流驱动,驱动写好了! 但是在做MMU地址映射表时出问题了!具体如下: 原来的g_oalAddressTable[DATA] 表为 g_oalAddressTable DCD 0x80000000, ...… 查看全部问答> |
|
方法和技术——《使用2790型数字源表开关系统测试双安全气囊充气机模块》 机械臂接口 – 数字I/O 2790内置的数字接口能够直接控制器件机械臂。数字接口包含五路TTL兼容数字输出和两路输入,以及外部供电的继电器和地线连接。五路输出提供测试通过/失败通知。可以定义两个上限和两个下限用于任何数字万用表测试。每个测 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:39 编辑 有谁用过CC430及CC1111的吗?有没有相关的资料,最好是中文的 … 查看全部问答> |
|
今天调新板子,程序从JTAG和AS口都下不进去,且提示不同。 加载JTAG,程序烧到48%,出ERROR: CFG_DONE pin failed to go high. 用万用表测,CFG_DONE 角经电阻10K接到3.3V,且 CFG_nCE 已接地。 换成AS口,在选择目标POF文件时就出错 ...… 查看全部问答> |
|
最近在zigbee板块发表帖子时发现选项只有问题讨论,已解决等,是否可以在增加一个经验分享呢?因为有时发帖子时搞个问题讨论或者已解决有点不伦不类,望采纳!… 查看全部问答> |
|
想请教大家一个问题,我用的是atmega128最小系统板,每次我编好一个程序,然后用Programmers Notepad [WinAVR] 调试,用makefile选择F_CPU频率,有时候选择8M,有时候选择1M,程序调试好后用AVR Studio 4 下载到单片机都可以运行。我想问一下,用ma ...… 查看全部问答> |




