问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

跪求51单片机交通信号灯c语言程序设计

发布网友 发布时间:2022-05-05 04:30

我来回答

4个回答

热心网友 时间:2022-07-01 13:10

///******************************************************************************** 实验名 : 动态显示数码管实验* 使用的IO : * 实验效果 : 数码管显示76543210。* 注意 :当位选用P1口的时候注意可能会有一位不亮,那么调整J21*******************************************************************************/#include<reg51.h>
//--定义使用的IO口--//#define GPIO_DIG P0#define GPIO_PLACE P1
#define GPIO_TRAFFIC P2
sbit RED10 = P2^0; //上人行道红灯sbit GREEN10 = P2^1; //上人行道绿灯sbit RED11 = P2^2;sbit YELLOW11= P2^3;sbit GREEN11 = P2^4;
sbit RED00 = P3^0; //右人行道红灯sbit GREEN00 = P3^1; //右人行道绿灯sbit RED01 = P2^5;sbit YELLOW01= P2^6;sbit GREEN01 = P2^7;
//--定义全局变量--//unsigned char code DIG_PLACE[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制 查表的方法控制unsigned char code DIG_CODE[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char DisplayData[8];//用来存放要显示的8位数的值unsigned char Time, Second; //用来存放定时时间
//--声明全局函数--//void DigDisplay(); //动态显示函数void Timer0Cofig(void);
/******************************************************************************** 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*******************************************************************************/
void main(void){ Second = 1;
Timer0Cofig();
while(1) { if(Second == 70) { Second = 1; }
//--宝田路通行,30秒--// if(Second < 31) { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(30 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(30 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay();
//--宝田路通行--//
GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭 RED00 = 1; GREEN00 = 1;
GREEN11 = 0; //宝田路绿灯亮 GREEN10 = 0; //宝田路人行道绿灯亮
RED01 = 0; //前进路红灯亮 RED00 = 0; //前进路人行道红灯亮 }
//--黄灯等待切换状态,5秒--// else if(Second < 36) { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(35 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(35 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay();
//--黄灯阶段--//
GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭 RED00 = 1; GREEN00 = 1;
YELLOW11 = 0; //宝田路黄灯亮 RED10 = 0; //宝田路人行道红灯亮
YELLOW01 = 0; //前进路红灯亮 RED00 = 0; //前进路人行道红灯亮 }
//--前进路通行--// else if(Second < 66) { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(65 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(65 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay();
//--黄灯阶段--//
GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭 RED00 = 1; GREEN00 = 1;
RED11 = 0; //宝田路红灯亮 RED10 = 0; //宝田路人行道红灯亮
GREEN01 = 0; //前进路绿灯亮 GREEN00 = 0; //前进路人行道绿灯亮 }
//--黄灯等待切换状态,5秒--// else { DisplayData[0] = 0x00; DisplayData[1] = 0x00; DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(70 - Second) %10]; DisplayData[4] = 0x00; DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2]; DisplayData[7] = DisplayData[3]; DigDisplay();
//--黄灯阶段--//
GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭 RED00 = 1; GREEN00 = 1;
YELLOW11 = 0; //宝田路黄灯亮 RED10 = 0; //宝田路人行道红灯亮
YELLOW01 = 0; //前进路红灯亮 RED00 = 0; //前进路人行道红灯亮 } } }
/******************************************************************************** 函 数 名 : DigDisplay* 函数功能 : 使用数码管显示* 输 入 : 无* 输 出 : 无*******************************************************************************/
void DigDisplay(){ unsigned char i; unsigned int j;
for(i=0; i<8; i++) { GPIO_PLACE = DIG_PLACE[i]; //发送位选 GPIO_DIG = DisplayData[i]; //发送段码 j = 10; //扫描间隔时间设定 while(j--); GPIO_DIG = 0x00; //消隐 }}
/******************************************************************************** 函 数 名 : Timer0Cofig* 函数功能 : 配置定时器* 输 入 : 无* 输 出 : 无*******************************************************************************/
void Timer0Cofig(void){ TMOD = 0x01; //定时器0选择工作方式1 TH0 = 0x3C; //设置初始值,定时50MS TL0 = 0xB0; EA = 1; //打开总中断 ET0 = 1; //打开定时器0中断 TR0 = 1; //启动定时器0 }
/******************************************************************************** 函 数 名 : Timer0* 函数功能 : 定时器0中断函数* 输 入 : 无* 输 出 : 无*******************************************************************************/
void Timer0() interrupt 1{ TH0 = 0x3C; //设置初始值 TL0 = 0xB0; Time++; if(Time == 20) { Second ++; Time = 0; }}追问请问这些条件都满足吗,

追答时间延时不同,其他的有

热心网友 时间:2022-07-01 13:10

#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar a=5,b=25,c;
sbit SDA = P1^1;sbit SHIFT = P1^2;sbit ST = P1^0;sbit L1=P3^0;sbit Y1=P3^1;sbit H1=P3^2;sbit L2=P3^3;sbit Y2=P3^4;sbit H2=P3^5;
#define NOP _nop_()
uchar led[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar select[] = {0x0fe,0xfd,0xfb,0xf7};uchar i=0;
void delay_us(uint us){ while(us--);}
void Init( ){ SDA = 0; SHIFT = 0; ST = 0; TMOD=0x11; TH0=(65536-1000)/256; TL0=(65536-1000)%256; TH1=(65536-1000)/256; TL1=(65536-1000)%256; TR0=1; EA=1; ET0=1; ET1=1; c=a+b;}
void delay(){ uchar jj; for(jj=0;jj<200;jj++); while(jj--);}
void display(uchar dat){ uchar ii; uchar sdata=dat; for(ii=0;ii<8;ii++) { if(sdata&0x80)SDA=1; else SDA = 0; sdata<<=1; SHIFT =0; NOP; NOP; SHIFT = 1; NOP; NOP; } ST = 1; NOP; NOP; ST = 0;}
void display1() //绿灯{ P2 = select[0]; display(led[c%100/10]);delay_us(500); P2 = select[1]; display(led[c%10]);delay_us(500); }
void display2() //红灯{ P2 = select[2]; display(led[c%100/10]);delay_us(500); P2 = select[3]; display(led[c%10]);delay_us(500);}
void zidong(){}
void main(){ Init(); while(1){ delay(); delay(); display1(); display2(); }}
void timer0() interrupt 1 //绿灯{ uint jj; TH0=(65536-1000)/256; TL0=(65536-1000)%256; jj++; if(jj==1000) { c--; jj=0; } if(c>5) { L1=0;Y1=1;H1=1; L2=1;Y2=1;H2=0; } if(c<=5) { L1=1;Y1=0;H1=1; L2=1;Y2=1;H2=0; } if(c<=0) { TR0=0; TR1=1; c=30; } } void timer1() interrupt 3 //红灯{ uint nn; TH1=(65536-1000)/256; TL1=(65536-1000)%256; nn++; if(nn==1000) { c--; nn=0; } if(b>5) { L1=1;Y1=1;H1=0; L2=0;Y2=1;H2=1; } if(c<=5) { L1=1;Y1=1;H1=0; L2=1;Y2=0;H2=1; } if(c<=0) { TR0=1; TR1=0; c=30; }}

时间自己修改啦

热心网友 时间:2022-07-01 13:11

求51单片机交通信号灯c语言程序设计
你这个是电路,程序
论文 多少字

热心网友 时间:2022-07-01 13:11

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孤胆枪手怎么设置局域网啊、 我家小狗刚领来,没有名字,拜托大家起个名字。 护肤品代加工 水浒Q传跨服PK是怎么回事啊 新水浒Q传什么叫PK保护状态,上号不到一分钟就被打,求解 水浒Q传 为什么要pk有什么好处? 为什么贷款每次都审核失败 有谁能说一下手机贷审核不通过的原因吗?我都审核好多次了都不能通过... 贷款审核失败是什么原因 为什么贷款未通过审核 单片机c语言写简单交通灯 C语言程序设计编写一个交通红绿灯的控制,各位高手帮帮忙急! 十字路口交通灯的设计方案,是单片机(C语言)的编程!!1 哪里可以学习调酒品酒? 廊坊哪有学调酒的呀。我一点都不会。想学。 哪里可以学调酒的呢?? 在哪里可以学调酒? 哪里的技校可以学习调酒? 落个字是什么意思 哪有学调酒的地方? 怎么正确的用茶水洗眼睛? 广东话&quot;落&quot;是什么意思 用什么天然植物洗眼睛好? 落字是什么意思 用什么给小孩子洗眼睛好 洗眼睛用什么好呢 1加8手机私密相册删除了怎么恢复 激素脸留下的黑斑怎么消除 激素脸出油暴痘怎么办 怎样去激素脸? 用C语言编写的交通灯控制程序 单片机设计倒计时交通灯(c语言程序)设计要求如下; 51单片机C语言程序:交通灯系统 交通灯 C语言 单片机。中断函数问题 爱玩橡皮泥的儿童应该学点啥 mysql执行alter语句超慢 鸡蛋羹的制作过程是什么? 咖啡先生是谁 以平面模特出道的她,逐渐崭露头角,如今嫁入豪门!让人羡慕,你怎么看? 有谁知道深圳市玉律维珍妮内衣厂高管的邮箱。请帮忙! 谁知道深圳万象附近 JB 理发店里面高级师的名字???急 大光明眼睛洗眼睛用的是什么 我买的2019年12月份到2020年12月份的北京中国旅行社年卡怎么退?现在联系不到人怎么办? 嗯北京风景年票恶实体卡在哪个公园有卖的实体卡? 2020年9月去北京旅游回家还需隔离14天吗? 2020北京世界公园门票多少钱和优惠政策 2020年9月去北京旅游回家后可以参加大营活动吗? 以前有案底,不能去北京旅游吗?警察有权留我电话号码吗? 2020年7月20日以后外省人员可以到北京旅游吗? 淘宝主页搜索下拉框 关键词怎么弄