A. 如何用c语言编程在单片机上做交通信号灯
硬件电路设计
此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。因此,可加输出锁存器。在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。
(1)电路连接图:
三、软件程序(C语言)
以下是整个设计的软件程序,直接可以编译成*。Hex代码。通过以上电路,下载到单片机,可直接运行。
//*****************************//
//程序名:十字路口交通灯控制
//编写人:黄庭剑
//初写时间:2009年1月2日
//程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2秒钟再实现切换.
//CPU说明:AT89C51型单片机;24MHZ晶体振荡器
//完成时间:2009年1月6日
//*****************************//
#include<stdio.h>
#include<reg51.h>
#include<intrins.h>
sfrp0=0x80;
sfrp1=0x90;
sfrp2=0xA0;
sfrp3=0xb0;//这部分内容其实在“#include<reg51.h>”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。其实两者是一样的。
sbitsw=p0^0;
sbitOE=P0^6;
sbitLE=P0^7;//74LS373锁存器控制端定义
chardisplay[]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};//p1口的数码管时间显示调用,利用74L74BCD码,8位驱动输出;
//函数声明begin
voiddelay1(intcount);
voiddelay_long(intnumber1,intnumber2);
voidpeople_car_drive();
//函数声明end
//***********************//延时子程序
voiddelay1(intcount)
{inti;
for(i=count;i>0;i--)
{;}
}
voiddelay_long(intnumber1,intnumber2)
{
inta,b;
for(a=number1;a>0;a--)
{
for(b=number2;b>0;b--)
{_nop_();}
}
}
//**********************//延时子程序
voidpeople_car_drive()
{
intp_1=2,i,j=9,p_2=6;//****************//行人通行时,延时20秒
p2=0x09;//南北红灯亮
p3=0x24;//东西绿灯亮
while(p_1-->0)
{LE=1;
OE=0;
if(p_1==0){OE=1;}//当十位数减到0时,只显示个位数
p1=display[p_1];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_1==0&&j==3)break;//减到3时退出循环,让其黄灯闪烁显示
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
//*******************************************************************************//
p2=0x12;//南北黄灯闪烁三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
//*****************以下是车辆通行时延时60秒//
p2=0x24;//南北绿灯亮
p3=0x09;//东西红灯亮
while(p_2-->0)
{LE=1;
OE=0;
if(p_2==0){OE=1;}//当十位数减到0时,只显示个位数
p1=display[p_2];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_2==0&&j==3)break;//减到2时退出循环
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
p2=0x12;//南北黄灯闪烁三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);//南北黄灯闪烁三秒完毕
}
voidmain()//主函数入口处
{
p0=0x01;
p1=0x00;
p2=0x00;
p3=0x00;//初始化各端口
{while(1)
{
if(sw==0)
{people_car_drive();}
else
{
p2=0x00;
p3=0x00;//关闭所有交通灯
}
}
}
}
B. 道路交通标志标牌如何识别
识别方法如下:
我国交通主标志分为警告标志、禁令标志、指示标志、指路标志、旅游区标志和道路施工安全标志六种。禁停标志是属于禁令标志的一种。
交通禁停标志 有一个红色圆圈里面是蓝底红叉的是全线禁停,就是说明临时停车也不行。一个红色圆圈里面只是蓝底或者只有一个红色斜线的是允许临时停放但禁止长时间停放标志。 当马路边缘有黄色的实线油漆,它表示禁止停放车辆。如果是一段黄色一段黑色的虚线,表示可以临时停车。
注意这个也是不能长时间停放车辆的,如果被交警发现一直停着不走,可能也会被处罚。 当在路面上看到有黄色的交叉的网格状区域时,也是不能停车的,一般出现在交叉路口,人流量较大的路口。
另一种是白色斜杆区域,也是不能停车的,一般会在大型多车道的道路上看到。 此外在地上标明或有指示牌指明“消防通道”或“紧急通道”的路段也是不能停车的。
交通标牌的类型和区分方法
许多车友在高速路或者生活中都会接触到交通标志牌,马路上如果你能够分清每个交通标志牌类型,能够为自己节省许多时间,所以认清道路上的标志牌也比较重要。今天带大家了解一下交通标牌的类型和区分方法,大家只需要从下面几个方面区分即可。
一、道路交通标志牌字母区分:
在道路上常常会见到比如G、S的标示,但你却不清楚这种代表什么意思,只了解我也跟随导行走,我觉得在我国城市的路面互联网分成道路,省道和国道路面。
高级的路面,速率和实时路况那就是彻底有别于城区的路面,归属于彻底封闭式的,在标示中通常和国道标志牌相同全是用G打头做为标志,比如G3。
而本省英文字母用“S”打头,国家和本省均为乳白色字体样式,翠绿色背景色,国家上边有鲜红色横条,本省上边为淡黄色饰条。必须留意的是,英文字母“G”和“S”打头的均为全封闭式路面,仅仅“S”打头的标志意味着该道路归属于某某某省地区,并无其他含意。
二、交通标志牌类型:
行车道及速度限制信息内容标示,这一应当就无需再多了,大部分过的都了解,假如连这一都搞不懂,那估算都是白瞎了。在每条道路上都是有高速限速标志牌,例如速度限制100km/h、120km/h,每一行车道的速度限制信息内容全是不同的,如果超速行驶,那么难题就来啦。
到达站信息内容标志牌,这一也很普遍,在方式不一样大城市和地域的那时候,都是有每过几十米开展提示的标明,这就能够提早做出整体规划。
服务地方信息内容标志牌,服务地方的交通路牌标志为大写的英文英文字母P表达,并相互配合着加油枪、刀叉及其扳子图样。
服务地方一般有餐馆,小型超市,洗手间,加气站,汽修厂等可出示交通出行工作人员将会必须的服务项目,通常在20-30千米就会有个服务地方,较为偏僻的地域服务地方的间距将会会较长。
路面高速收费站标志牌,说到服务地方,那还要讲一讲高速收费站,这都是1个很显着的标示,上边写着高速收费站,正下方标着ETC及其人工服务收费标准图型标示,这时就应当减慢时速提前准备进入地铁站。
三、标志牌分类:
1、警示标志:警示标志是警示车子、非机动车留意风险地址的标示;
2、禁令标志:禁令标志是严禁或限定车子、非机动车交通出行个人行为的标示;
3、指示标志:指示标志是标示车子、非机动车行驶的标示;
4、指路标志:指路标志是传送道方位、地址、间距信息内容的标示;
5、旅游景区标示:旅游景区标示是出示游玩景点方位、间距的标示;
6、公路施工安全标识:公路施工安全标识是通知公路施工区行驶的标示。
7、辅助标示:辅助标示是附属在主标示之中,起辅助表明功效的标示,分表达时间、车子类型、地区或间距、警示、严禁原因等种类。
以上就是常见的几种道路交通标志牌,认清它们可以减少许多时间。 如果你正在找交通标志牌制作厂家,道路标志牌制作,公路标志牌报价,交通指路标志牌厂家首选飞耀交安设施。
C. 模拟交通灯的简单C语言题
#include<stdio.h>
int a;
int main(){
scanf("%d",&a);
if(a==0) printf("停");
else if(a==1) printf("行");
else printf("等待");
return 0;
}
D. 单片机c语言写简单交通灯
#include<reg51.h>
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
int a = 0;
int b = 10;
int c = 0;
int d = 5;
void timer0(void) interrupt 1
{
TH0 = 15536/256;
TL0 = 15536%256;
++a;
if(a==20)
{
a=0;
--b;
if(b==0)
{
b=10;
++c;
}
if(c==0)
{
P10 = 1;//红灯亮的端口
P11 = 0;
P12 = 0;
}
if(c==1)
{
P11 = 1;//绿灯亮的端口
P10 = 0;
P12 = 0;
}
if(c == 2)
{
b = d;//黄灯亮,显示为5~0
--d;//////////////////////////这里
P12 = 1;
P11 = 0;
P10 = 0;
}
if(c==3)
{
c=0;
}
}
}
void show()
{
P2 = (b/10)*16 + b%10;
}
void main()
{
TMOD = 0x01;
P10 = 0;
P11 = 0;
P12 = 0;
TH0 = 15536/256;
TL0 = 15536%256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
show();
}
}
E. 新手开车技巧基础篇:怎么辨别各种路面标识(下)
新手驾驶技巧基础篇:如何辨别各种路标(下)不管你是新手还是老手不管你开的是比亚迪还是宝马想要拿到驾照一定要记住交通标志。也许你认为这是一件简单的事情但是当数百个标志放在一起时你能正确地告诉他们吗?识别不寻常的交通标志有许多不常见的迹象边肖列出了其中一些向你解释。禁止超车。禁止某些两种车通过。不平衡速度路过标志极限轴重标志驼峰预警隧道警告路堤警告过水路面警告有人守卫铁路道口。最低限速标志先见面先走环形车道标志非机动车驾驶两边的交通标志车辆汇合引导标志高速公路终点道路施工右封路通过立交进入高速公路以上是太平洋汽车网编辑整理的最新信息。
F. c语言编写十字路口交通灯的程序
这程序是自己写的吗?要是的话也有点太,,,,那啥了吧,就是有点乱,感觉不用sbit那么多。不过自己写的怎么都比抄的好。
P0=table【I】
table数组从来没看到。定义的数组是uchar codetable[]和uchar codeS[8,codes数组也没看到。
G. c语言怎么写出交通灯的简单程序
我实训是做了这个项目,发给你看看,功能主要和交通灯的差不多,还可以显示具体的时间,跳转的时候,时间是倒计时的,当到0以后,下面灯转换
#include<reg51.h>
unsigned int shi,ge,js;
void delay(unsigned char i);
sbit P2_0=P2^0;
sbit P2_1=P2^1;
unsigned int i=0;
unsigned char key_press();
unsigned char key_scan();
unsigned int m=0;m2=0;n1=6;n2=2;
void TIMERO_1();
void TIMERO_0();
unsigned char led[4]={0xee,0xdb,0xf5,0xdb};
unsigned char code tabe[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x00};
unsigned char num;
unsigned char key_scan()
{ unsigned char hang,lie,key;
P3=0x0f;
if(P3!=0x0f)
delay(100);
if(P3!=0x0f)
{
switch(P3&0x0f)
{
case 0x0e:hang=0;break;
case 0x0d:hang=1;break;
case 0x0b:hang=2;break;
//case 0x07:hang=3;break;
}
P3=0xf0;
switch(P3&0xf0)
{
case 0xe0:lie=0;break;
case 0xd0:lie=1;break;
case 0xb0:lie=2;break;
case 0x70:lie=3;break;
}
while(P3!=0xf0);
key=hang*4+lie;
}
// else
// key=12;
return (key);
}
unsigned char key_press()
{
unsigned char temp,key_flag;
P3=0x0f;
delay(100);
temp=P3;
if (temp!=0x0f)
{
key_flag=1;
}
else
{
key_flag=0;
}
return key_flag;
}
void TIMERO_0() interrupt 1
{
TH0=0X3C;
TL0=0XB0;
m++;
if(m==20)
{
m=0;
n1--;
shi=n1/10;
ge=n1%10;
}
if(n1==0)
{i=i+1;
n2=3;
TR1=1;
TR0=0;
}
//if(ge==0)
//{ge=2;}
}
void TIMERO_1() interrupt 3
{
TH1=0X3C;
TL1=0XB0;
m2++;
if(m2==20)
{
m2=0;
n2--;
shi=n2/10;
ge=n2%10;
}
if(n2==0)
{
i=i+1;
n1=js;
TR0=1;
TR1=0;
if(i== 4)
{
i=0;
}
//if(ge==0)
//{ge=js;}
}
}
void display(unsigned char a,b,c,d,e,f)
{
P2_1=1;
P2_0=0;
P0=0x20;
P2_0=1;
P2_1=0;
P0=tabe[a];
delay(10);
P0=0x00;
P2_1=1;
P2_0=0;
P0=0X10;
P2_0=1;
P2_1=0;
P0=tabe[b];
delay(10);
P0=0x00;
P2_1=1;
P2_0=0;
P0=0x08;
P2_0=1;
P2_1=0;
P0=tabe[c];
delay(10);
P0=0x00;
P2_1=1;
P2_0=0;
P0=0x04;
P2_0=1;
P2_1=0;
P0=tabe[d];
delay(10);
P0=0x00;
P2_1=1;
P2_0=0;
P0=0x02;
P2_0=1;
P2_1=0;
P0=tabe[e];
delay(10);
P0=0x00;
P2_1=1;
P2_0=0;
P0=0x01;
P2_0=1;
P2_1=0;
P0=tabe[f];
delay(10);
P0=0x00;
delay(10);
}
void main()
{
TMOD=0X11;
TH0=0X3C;
TL0=0XB0;
TH1=0X3C;
TL1=0XB0;
ET1=1;
ET0=1;
EA=1;
P1=0XFF;
while(1)
{
P0=0;
if(key_press())
{ num=key_scan();
if(num<=9)
{
shi=ge;
ge=num;
js=shi*10+ge;
n1=js;
}
if(num==10)
{
TR0=0;
TR1=0;
shi=ge;
ge=num;
}
if(num==11)
{
TR0=1;
i=0;
js=shi*10+ge;
}
}
P1=led[i];
display(12,12,12,12,shi,ge);
}
}
void delay(unsigned char i )
{
unsigned char j, k;
for(k=0;k<i;k++);
for(j=0;j<255;j++);
}
H. MATLAB编写交通标志检测与识别的源程序
获取server安装的各种组件的powershell命令,可以在server上正常命令行执行
powershell -command "& {get-windowsfeature | Out-File -FilePath C:\Command.txt}"
但我用C语言写出来的exe去跑的时候总是不能正常执行,因为server环境里面没有debug环境,所以也不知道具体错在什么地方了,具体source如下:
C/C++ code?
TCHAR szCommandLine[1024] = {0};
sprintf(szCommandLine,
"powershell -command \"& {get-windowsfeature | Out-File -FilePath C:\\Command.txt}\"");
bSuccess = CreateProcess( NULL, // No mole name (use command line).
szCommandLine, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ); // Pointer to PROCESS_INFORMATION structure.
I. 交通标志识别,求解!很简单
一杠代表50米。二杠代表100米。三杠代表150米 这个记住就行。