用C语言编写的交通灯程序

发布者:advancement4最新更新时间:2015-07-20 来源: 51hei关键字:C语言  交通灯 手机看文章 扫描二维码
随时随地手机看文章
用四盏双色灯模拟,P1口控制;南北红灯亮30秒,同时东西绿灯亮25秒,绿灯闪烁3次(间隔为1秒),然后黄灯亮2秒;然后东西与南北互换一下;重复;
#include "reg51.h" //


#define uint unsigned int
#define uchar unsigned char

#define ON 0 //0的时候灯亮
#define OFF 1 //1的时候灯亮

//管脚定义
//南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒
//东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒
sbit PortDX_Yellow = P1^0; //东西方向黄灯
sbit PortDX_Red = P1^1; //东西方向红灯
sbit PortDX_Green = P1^2; //东西方向绿灯
sbit PortNB_Yellow = P1^3; //南北方向黄灯
sbit PortNB_Red = P1^4; //南北方向红灯
sbit PortNB_Green = P1^5; //南北方向绿灯


void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz)
{
uint ti;
while(ms--)
{
for(ti=0;ti<112;ti++){}//112
}
}

/*==================== 主函数 ====================*/
void main(void)
{
delay(400); //开机延时400ms
while(1)
{
PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮3秒
PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮3秒
delay(3000);
PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北红灯亮28秒
PortDX_Yellow = OFF;PortDX_Red = OFF;PortDX_Green = ON ;//东西绿灯亮28秒
delay(28000);
PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北红灯亮2秒
PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮2秒
delay(2000);
PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮1秒
PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮1秒
delay(1000);
PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮2秒
PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//东西红灯亮2秒
delay(2000);
PortNB_Yellow = OFF;PortNB_Red = OFF;PortNB_Green = ON ;//南北绿灯亮38秒
PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//东西红灯亮38秒
delay(3800);
}
}


1.当为黄灯时南北、东西两道同时为黄灯;以提示行人或车辆下一个灯色即将到来时间 3秒。
2.当南北为红灯,南北道车辆禁止通行,时间30秒;南北道为绿灯,南北道车辆通过时间38秒 。
3.当东西道绿灯,东西道车辆通行,时间为28秒;东西道为红灯,东西道车辆禁止通过时间为40秒。
4.这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。 
关键字:C语言  交通灯 引用地址:用C语言编写的交通灯程序

上一篇:单片机驱动点阵16*16综合C程序-包含各种效果
下一篇:51单片机PWM细分控制步进电机的研究初稿

推荐阅读最新更新时间:2024-03-16 14:25

C语言实现共阴极数码管操作
共阴极或者共阳极数码管,因为其需要电流大,而一般51输出电流低,需要锁存器。买的开发板使用的共阴极数码管。 至于其构造,找个相关方面的书看看,这里主要是对做好的电路板进行编程。 刚开始的时候,感觉在数码管上显示数字很厉害。但是等到自己写这篇日志的时候,才发现了了。。 在对数码管编程前,需要对锁存器有所了解。买的开发板上用的是74HC573贴片式的。 74HC573真值表 输入 输出 !OE LE D | Q L H H | H L H L | L L L X |
[单片机]
<font color='red'>C语言</font>实现共阴极数码管操作
XXTEA加密算法的原理及其C语言实现
在数据的加解密领域,算法分为对称密钥与非对称密钥两种。对称密钥与非对称密钥由于各自的特点,所应用的领域是不尽相同的。对称密钥加密算法由于其速度快,一般用于整体数据的加密,而非对称密钥加密算法的安全性能佳,在数字签名领域得到广泛的应用。 TEA 算法是由剑桥 大学计算机实验室的 David Wheeler 和 Roger Needham 于 1994 年发明, TEA 是 Tiny Encryption Algorithm 的缩写, 以加密解密速度快,实现简单著称。 TEA 算法每一次可以操作 64bit(8byte) ,采用 128bit(16byte) 作为 key ,算法采用迭代的形式,推荐的迭代轮数是 64 轮,最少 3
[单片机]
XXTEA加密算法的原理及其<font color='red'>C语言</font>实现
单片机为什么要使用C语言
将C向MCU(俗称单片机)8051上的移植始于80年代的中后期。客观上讲,C向8051 MCU移植的难点不少。如: ·8051的非冯·诺依慢结构(程序与数据存储器空间分立),再加上片上又多了位寻址存储空间; ·片上的数据和程序存储器空间过小和同时存在着向片外扩展它们的可能; ·片上集成外围设备的被寄存器化(即SFR),而并不采用惯用的I/O地址空间; ·8051芯片的派生门类特别多(达到了上百种之多),而C语言对于它们的每一个硬件资源又无一例外地要能进行操作。 这些都是过去以MPU为基础的C语言所没有的。经过Keil/Franklin、Archmeades、IAR、BSO/Tasking等公司艰若不懈的努力,终于于90年代开始而趋
[单片机]
51单片机C语言程序100例分析(1)IO+C语言+头文件
//实例1:用单片机控制第一个灯亮 #include reg51.h //包含51单片机寄存器定义的头文件 void main(void) { P1=0xfe;//P1=11111110B,即P1.0输出低电平 } 分析:通过这短短的几行代码就可以让51单片机的P1.0引脚输出低电平,首先#include reg51.h 这句代码是包含51单片机寄存器定义的头文件,51单片机是寄存器和IO统一编址的,所以你往相应的寄存器中写1就会在对应引脚输出高电平,写0就会输出低电平,我们知道51共32个引脚作为IO端使用,所以只需要四个寄存器(一个寄存器是8位,这取决于数据总线),打开头文件就会发现P0和0X80这个
[单片机]
单片机C语言快速精度除法方案
目前的51单片机在进行带小数点结果的除法一般可以采用浮点数计算的方式,但是浮点数计算有一个缺点就是非常耗时,在对时间要求严格的工况就不太适用。 笔者的工作室长期承接单片机、电路、机电液、工控、自动化、计算机软件等项目,最近做了个单片机计算器的设计,在设计除法时利用长整形除法和取余运算,可以得到若干小数位的精度运算,与大家共享。 设计思路如下: 假设长整形除数a, 长整形被数b,步骤如下: 1 得到除法的整数部分,c=a/b; 2 设d为a%b,e=10*d, 得到除法的第一位小数,f=e/b; (要点:将a余b的余数乘以10倍,再和被除数b相除,就得到小数点后一位小数) 3 设g为e%b,h=10*g, 得到除法的第二位小数,
[单片机]
单片机花样流水灯c语言程序
程序代码如下 #include reg51.h #define uchar unsigned char #define uint unsigned int uchar code Pattern_P0 = { 0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xE7,0xD8,0xBD,0x7E,0xBD,0xDB,0xE7,0xFF,0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF, 0xAA,0x55,0x18,0xFF,0xF0,0x0F,0x00,0xFF,0xF8,0xF1,
[单片机]
51单片机利用Timer0实现十字路口交通灯
功能实现:当东西是绿灯时,南北是红灯,东西绿灯定时一段时间后变为黄灯闪烁三次,南北仍为黄灯,闪烁完后东西变为红灯,南北变为绿灯,定是一段时间后,南北变为黄灯闪烁三次(此时东西仍为红灯),闪烁三次后,南北变为红灯,东西变为绿灯。 proteus仿真原理图 汇编源代码: ORG 0000H LJMP MAIN ORG 000BH LJMP INTI0 ORG 0030H MAIN: MOV SP,#60H MOV B,#0AH MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH MOV R3,#1H MOV P0,#0CH SETB
[单片机]
51单片机利用Timer0实现十字路口<font color='red'>交通灯</font>
如何优化C语言代码
1、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有 很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找 法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大 提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存 放的数中使用了大量的插入和删除指令,那使用链表要快得多。 数组与指针语句具有十分密码的关系,一般来说,指针比较灵活简洁,而数组则比 较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短, 执行效率更高。但是在Keil中则相反,使用数组比使用的指针生成的代码更短。。 3、使用尽量小的数据类型
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved