当前位置: 首页 > news >正文

泉州自助建站哪里有培训网

泉州自助建站,哪里有培训网,广东网站建设公司报价表,淘宝做批发的网站51单片机交通灯 1 讲解视频:2 功能要求3 仿真图:4 原理图PCB5 实物图6 程序设计:7 设计报告8 资料清单(提供资料清单所有文件):设计资料下载链接: 51单片机简易交通灯_可调时间_夜间紧急 仿真代…

51单片机交通灯

  • 1 讲解视频:
  • 2 功能要求
  • 3 仿真图:
  • 4 原理图+PCB
  • 5 实物图
  • 6 程序设计:
  • 7 设计报告
  • 8 资料清单(提供资料清单所有文件):
    • 设计资料下载链接:

51单片机简易交通灯_可调时间_夜间+紧急

仿真+代码+原理图PCB+报告+讲解

仿真图proteus 7.8以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:J030

1 讲解视频:

包含仿真讲解和实物演示

基于51单片机的交通灯proteus实物设计

2 功能要求

基于51单片机的交通灯设计

本设计基于AT89C51/52(与AT89S51/52、STC89C51/52通用,可替换其他51内核)单片机

1.正常模式工作状态:

状态1:东西方向绿灯通行20秒,南北方向禁止通行25秒;

状态2:东西方向黄灯闪烁提醒5秒,南北继续红灯倒计时;

状态3:南北方向绿灯通行30秒,东西红灯禁止通行35秒,分别通过数码管倒计时;

状态4:南北方向黄灯闪烁提醒5秒,东西继续红灯倒计时;

状态5:执行状态1,反复循环。

\2. 紧急模式

南北方向和东西方向红灯常亮禁止通行。数码管显示00。

\3. 夜间模式

南北方向和东西方向黄灯闪烁。

\4. 可以通过按键调东西/南北方向绿灯时间。切换键切换方向,加减键调整时间。

3 仿真图:

正常倒计时

imgimg

夜间黄灯闪烁

4 原理图+PCB

img

img

img

img

5 实物图

img

6 程序设计:

img
代码

#include <reg51.h>				//头文件
#define uchar unsigned char
#define uint  unsigned int		//宏定义uchar data buf[4];					//秒显示的变量
uchar data sec_dx=20;  			//东西数默认
uchar data sec_nb=30;			//南北默认值
uchar data set_timedx=20;		//设置东西方向的时间
uchar data set_timenb=30;		//设置南北方向的时间
int n;
uchar data countt0,countt1;//定时器0中断次数
//定义6组开关
sbit  k4=P3^7;      //切换方向
sbit  k1=P3^5;		//时间加
sbit  k2=P3^6;		//时间减
sbit  k3=P3^4;		//确认
sbit  k5=P3^1;		//禁止
sbit  k6=P1^5;		//夜间模式
部分代码,不完整,完全代码在压缩包main函数
//https://docs.qq.com/doc/DS3Zab1lNU0d2QVZtsbit Red_nb=P2^6;		//南北红灯标志
sbit Yellow_nb=P2^5;	//南北黄灯标志
sbit Green_nb=P2^4;     //南北绿灯标志sbit Red_dx=P2^3;		//东西红灯标志
sbit Yellow_dx=P2^2;	//东西黄灯标志
sbit Green_dx=P2^1;		//东西绿灯标志bit set=0;				//调时方向切换键标志 =1时,南北,=0时,东西
bit dx_nb=0;			//东西南北控制位
bit shansuo=0;			//闪烁标志位
bit yejian=0;			//夜间黄灯闪烁标志位uchar code table[11]={	//共阴极字型码0x3f,  //--00x06,  //--10x5b,  //--20x4f,  //--30x66,  //--40x6d,  //--50x7d,  //--60x07,  //--70x7f,  //--80x6f,  //--90x00   //--NULL
};//函数的声明部分
void delay(int ms);			//延时子程序
void key();					//按键扫描子程序
void display();				//显示子程序
void logo();   				//开机LOGO
//主程序
void main()
{TMOD=0X11;	   				//定时器设置TH1=0X3C;		TL1=0XB0;TH0=0X3C;					//定时器0置初值 0.05STL0=0XB0;EA=1;						//开总中断ET0=1;						//定时器0中断开启ET1=1;					   //定时器1中断开启TR0=1;						//启动定时0TR1=0;						 	//关闭定时1logo();						//开机初始化P2=0Xc3;					// 开始默认状态,东西绿灯,南北黄灯   sec_nb=sec_dx+5; 			//默认南北通行时间比东西多5秒while(1)					  //主循环{	 key(); 					//调用按键扫描程序display(); 				//调用显示程序}	
}
//函数的定义部分
void key(void)	//按键扫描子程序
{	 if(k1!=1)							//当K1(时间加)按下时{display();       				//调用显示,用于延时消抖if(k1!=1)							//如果确定按下{TR0=0;	       				//关定时器	shansuo=0;					//闪烁标志位关P2=0x00;					//灭显示TR1=0;							//启动定时1if(set==0){//设置键按下set_timedx++;   		//南北加1S}else{set_timenb++;    		//东西加1S}if(set){Red_nb=1;		//南北红灯标志Yellow_nb=1;	//南北黄灯标志Green_nb=1;     //南北绿灯标志}else{Red_dx=1;		//东西红灯标志Yellow_dx=1;	//东西黄灯标志Green_dx=1;     //东西绿灯标志}if(set_timenb==100)set_timenb=1;if(	set_timedx==100)set_timedx=1;   		//加到100置1sec_nb=set_timenb ; 		//设置的数值赋给东西南北sec_dx=set_timedx;			do{ display();				 //调用显示,用于延时}while(k1!=1);			 //等待按键释放}}if(k2!=1)							//当K2(时间减)按键按下时{		display();       				//调用显示,用于延时消抖  if(k2!=1)						//如果确定按下{	TR0=0;         				//关定时器0	shansuo=0;					//闪烁标志位关P2=0x00;					//灭显示TR1=0;						//关定时器1	if(set==0){//设置键按下set_timedx--;   		//南北减1S}else{set_timenb--;    		//东西减1S}if(set){Red_nb=1;		//南北红灯标志Yellow_nb=1;	//南北黄灯标志Green_nb=1;     //南北绿灯标志}else{Red_dx=1;		//东西红灯标志Yellow_dx=1;	//东西黄灯标志Green_dx=1;     //东西绿灯标志}if(set_timenb==0)set_timenb=99;	if(	set_timedx==0 )set_timedx=99;   		//减到1重置99sec_nb=set_timenb ;	 		//设置的数值赋给东西南北sec_dx=set_timedx;do	{ display();       		//调用显示,用于延时}while(k2!=1);			   //等待按键释放}}if(k3!=1)							//当K3(确认)键按下时{	display();       				//调用显示,用于延时消抖if(k3!=1)						//如果确定按下{TR0=1;  						//启动定时器0sec_nb=set_timenb;				//从中断回复,仍显示设置过的数值sec_dx=set_timedx;				//显示设置过的时间TR1=0;							//关定时器1	if(set==0)						//时间倒时到0时{ P2=0X00;					 //灭显示Green_dx=1;						//东西绿灯亮Red_nb=1;					//南北红灯亮sec_nb=sec_dx+5; 			//回到初值}else { P2=0x00;					//南北绿灯,东西红灯Green_nb=1;Red_dx=1;sec_dx=sec_nb+5; }}}if(k4!=1)							//当K4(切换)键按下{display();       				//调用显示,用于延时消抖if(k4!=1)						//如果确定按下{ P2=0X00;					 //灭显示TR0=0;						//关定时器0	set=!set;					//取反set标志位,以切换调节方向TR1=0;						//关定时器1dx_nb=set;if(set){Red_nb=1;		//南北红灯标志Yellow_nb=1;	//南北黄灯标志Green_nb=1;     //南北绿灯标志}else{Red_dx=1;		//东西红灯标志Yellow_dx=1;	//东西黄灯标志Green_dx=1;     //东西绿灯标志}do{display(); 			   //调用显示,用于延时}				while(k4!=1);			  //等待按键释放}}	if(k5!=1)							//当K5(禁止)键按下时{display();       				//调用显示,用于延时消抖if(k5!=1)						//如果确定按下{ 	TR0=0;						//关定时器P2=0x00;					//灭显示Red_dx=1;Red_nb=1;					//全部置红灯TR1=0;sec_dx=00;					//四个方向的时间都为00sec_nb=00;do{display(); 				//调用显示,用于延时}	while(k5!=1);			//等待按键释放	}}if(k6!=1)							//当K6(夜间模式)按下 {display();       				//调用显示,用于延时消抖 if(k6!=1)						//如果确定按下{ 	TR0=0;						//关定时器P2=0x00;TR1=1;sec_dx=00;					//四个方向的时间都为00sec_nb=00;do{display(); 			  //调用显示,用于延时}	while(k6!=1);			//等待按键释放	}}
}
void display(void) //显示子程序
{		buf[1]=sec_nb/10; 		//第1位 东西秒十位buf[2]=sec_nb%10; 		//第2位 东西秒个位buf[3]=sec_dx/10; 		//第3位 南北秒十位buf[0]=sec_dx%10; 		//第4位 南北秒个位		P1=0xff;          		// 初始灯为灭的P0=0x00;				 灭显示P1=0xfe;           		//片选LED1P0=table[buf[1]];		//送东西时间十位的数码管编码			delay(1);				//延时P1=0xff;				//关显示P0=0x00;				//灭显示P1=0xfd;             	//片选LED2P0=table[buf[2]];		 //送东西时间个位的数码管编码delay(1);				 //延时P1=0xff;				//关显示P0=0x00;				//关显示P1=0Xfb;		  		//片选LED3P0=table[buf[3]];		//送南北时间十位的数码管编码delay(1);				//延时P1=0xff;				 //关显示P0=0x00;				 //关显示P1=0Xf7;				 //片选LED4	P0=table[buf[0]];		//送南北时间个位的数码管编码delay(1);				//延时
}void time0(void) interrupt 1 using 1  	//定时中断子程序
{TH0=0X3C;							//重赋初值TL0=0XB0;							//12m晶振50ms//重赋初值TR0=1;								//重新启动定时器countt0++;							//软件计数加1if(countt0==10)						//加到10也就是半秒{if((sec_nb<=5)&&(dx_nb==0)&&(shansuo==1))  		//东西黄灯闪		{Green_dx=0;Yellow_dx=0;}		   				if((sec_dx<=5)&&(dx_nb==1)&&(shansuo==1))  		//南北黄灯闪		{  Green_nb=0;Yellow_nb=0;}	}if(countt0==20)	                  	// 定时器中断次数=20时(即1秒时){	countt0=0;						//清零计数器sec_dx--;						//东西时间减1sec_nb--;						//南北时间减1if((sec_nb<=5)&&(dx_nb==0)&&(shansuo==1))  		//东西黄灯闪		{Green_dx=0;Yellow_dx=1;}		   				if((sec_dx<=5)&&(dx_nb==1)&&(shansuo==1))  		//南北黄灯闪		{  Green_nb=0;Yellow_nb=1;}		 						if(sec_dx==0&&sec_nb==5) 		//当东西倒计时到0时,重置5秒,用于黄灯闪烁时间   {sec_dx=5;shansuo=1;}if(sec_nb==0&&sec_dx==5)		//当南北倒计时到0时,重置5秒,用于黄灯闪烁时间   {sec_nb=5;shansuo=1;}if(dx_nb==0&&sec_nb==0)			//当黄灯闪烁时间倒计时到0时,{P2=0x00;					//重置东西南背方向的红绿灯Green_nb=1;Red_dx=1;dx_nb=!dx_nb;shansuo=0;sec_nb=set_timenb;			//重赋南北方向的起始值sec_dx=set_timenb+5;		//重赋东西方向的起始值}		if(dx_nb==1&&sec_dx==0)			//当黄灯闪烁时间到{P2=0X00;					//重置东西南北的红绿灯状态Green_dx=1;					 //东西绿灯亮Red_nb=1;					 //南北红灯亮dx_nb=!dx_nb;				 //取反shansuo=0;					//闪烁sec_dx=set_timedx;			//重赋东西方向的起始值sec_nb=set_timedx+5;		//重赋南北方向的起始值}}	
}

系统硬件框图

img

7 设计报告

13017字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

8 资料清单(提供资料清单所有文件):

0、常见使用问题及解决方法–必读!!!!
10、讲解视频
1、仿真图
2、程序源码
3、功能要求
4、原理图和PCB
5、开题报告
6、元器件清单
7、设计报告
8、软硬件流程框图
9、实物图片和说明
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

设计资料下载链接:

http://www.dinnco.com/news/32552.html

相关文章:

  • 网站还能赚钱吗安卓优化神器
  • 建一网站要多少钱手机端网站优化
  • 官方网站的资料做证据怎样推广自己的店铺啊
  • 大连 做 企业网站百度下载并安装到桌面
  • 网站建设费用如何做账百度快速排名技术培训教程
  • 规范网站维护 建设 管理seo引擎优化公司
  • 网站日志状态码谷歌浏览器下载电脑版
  • 社交电商平台种类杭州关键词优化外包
  • 工商登记代理代办百度优化软件
  • 深圳宝安网站建设公司品牌seo推广咨询
  • 建站工具缺点论坛软文案例
  • 政府网站微信公众平台建设郑州seo外包平台
  • wordpress code插件网站seo收录
  • 制作网站的基本工作流程网络推广学校
  • 让人做网站需要准备什么软件最近发生的重大新闻事件
  • 制作动画的软件网络推广优化是干啥的
  • wordpress博客排行短视频关键词优化
  • 福建省今天最新疫情公布广州seo推广
  • 空间网页版网站seo收录工具
  • 做购物网站 国外服务器seo服务
  • 怎么建网站不用买空间学会计哪个培训机构比较正规
  • centos7 wordpress搭建扬州整站seo
  • 网站写作赚钱nba排名最新赛程
  • 西安模板网站建设套餐国外十大免费服务器和域名
  • 深圳网站制作公司流程图推广赚钱软件排行
  • 政府部门网站建设负责部门html网页制作网站
  • 网站通栏如何做特效北京sem
  • 网站建设与推广是什么意思发布软文的平台有哪些
  • 湖北网站建设优化西安网约车平台
  • 香港卖手机网站大全网站seo关键词设置