单片机交通灯灯c语言程序,51单片机控制交通灯原理图及C语言程序
Proteus
仿真原理图:
Keil C源程序:
#include
#define uchar unsigned char
#define uint unsigned int
sbit RED_DONGXI = P1^0;//南北方向红灯亮
sbit YELLOW_DONGXI = P1^1;//南北方向黄灯亮
sbit RED_NANBEI = P1^3;//东西方向红灯亮
sbit GREEN_DONGXI = P1^2;//南北方向绿灯亮
sbit YELLOW_NANBEI = P1^4;//东西方向黄灯亮
sbit GREEN_NANBEI = P1^5;//东西方向绿灯亮
sbit DXweixuan1 = P1^6;//南北方向数码管位选1
sbit DXweixuan2 = P1^7;//南北方向数码管位选2
sbit NBweixuan1 = P3^0;//东西方向数码管位选1
sbit NBweixuan2 = P3^1;//东西方向数码管位选2
sbit L1=P3^5;
sbit L2=P3^6;
sbit L3=P3^7;
uint aa, bai,shi,ge,bb;
uint shi1,ge1,shi2,ge2;
uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
void delay(uint z);
void init(uint a);
void display(uint shi1,uint ge1,uint shi2,uint ge2);
void xtimer0();
void init1();
void init2();
void init3();
void init4();
void init5();
void xint1();
void xint0();
void LED_ON();
void LED_OFF();
void main()
{
P0=0xFF;
P1=0xFF;
P2=0x00;
P3=0xFF;
EA=1;
EX0=1;
IT0=0;
init1();
while(1)
{
init2();//第2个状态
init3(); //第3个状态
init4(); //第4个状态
init5();//第5个状态
}
}
void init1()//第一个状态:东西、南北方向均亮红灯5S
{
uint temp;
temp=5;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
} } RED_DONGXI=0; //第一个状态东西、南北均亮红灯5S RED_NANBEI=0; GREEN_DONGXI=1; GREEN_NANBEI=1; YELLOW_DONGXI=1; YELLOW_NANBEI=1; if(aa==20)//定时20*50MS=1S { aa=0; temp--; } shi1=shi2=temp/10; ge1=ge2=temp%10; if(temp==0) { temp=5; break; } display(ge1,shi1,ge2,shi2);
void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S; {
uint temp;
temp=26;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_DONGXI=1;
RED_NANBEI=0;
GREEN_DONGXI=0;
GREEN_NANBEI=1;
YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯 YELLOW_NANBEI=1;
if(aa==20)//定时20*50MS=1S
{
aa=0;
temp--;
shi1=(temp+5)/10;
ge1=(temp+5)%10;
shi2=temp/10;
ge2=temp%10;
if(temp==0)
{
temp=26;
break;
}
}
display(ge1,shi1,ge2,shi2);
}
}
void init3() //第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S {
uint temp;
temp=6;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_NANBEI=0;
GREEN_DONGXI=1;
} } if(aa==20)//定时20*50MS=1S { aa=0; temp--; YELLOW_DONGXI=~YELLOW_DONGXI; shi1=temp/10; shi2=shi1; ge1=temp%10; ge2=ge1; } if(temp==0) { temp=6; break; } display(ge1,shi1,ge2,shi2);
void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S; {
uint temp;
temp=26;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_DONGXI=0;
RED_NANBEI=1;
}
} YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5S GREEN_NANBEI=0; if(aa==20) { aa=0; temp--; shi1=temp/10; shi2=(temp+5)/10; ge1=temp%10; ge2=(temp+5)%10; if(temp==0) { temp=26; break; } } display(ge1,shi1,ge2,shi2);
void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S {
uint temp;
temp=6;
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
RED_NANBEI=1;
RED_DONGXI=0;
GREEN_DONGXI=1;
GREEN_NANBEI=1;
if(aa==20)
{
aa=0;
temp--;
YELLOW_NANBEI=~YELLOW_NANBEI;
shi1=temp/10;
shi2=shi2;
ge1=temp%10;
ge2=ge1;
if(temp==0)
{
temp=6;
break;
}
}
display(ge1,shi1,ge2,shi2);
}
}
void display(uint shi1,uint ge1,uint shi2,uint ge2) {
DXweixuan1=0;
DXweixuan2=1;
NBweixuan1=1;
NBweixuan2=1;
P0=table[ge1];
delay(5);
DXweixuan1=1;
DXweixuan2=0;
NBweixuan1=1;
NBweixuan2=1;
P0=table[shi1];
delay(5);
DXweixuan1=1;
DXweixuan2=1;
NBweixuan1=0;
NBweixuan2=1;
P0=table[ge2]; delay(5);
DXweixuan1=1; DXweixuan2=1; NBweixuan1=1; NBweixuan2=0; P0=table[shi2]; delay(5);
}
void xint0() interrupt 0 {
RED_NANBEI=0; RED_DONGXI=0; GREEN_NANBEI=1; GREEN_DONGXI=1; YELLOW_NANBEI=1; YELLOW_DONGXI=1; P0=0x00;
NBweixuan1=0; NBweixuan2=0; DXweixuan1=0; DXweixuan2=0; delay(2);
return ;
}
void xint1() interrupt 2 {
RED_NANBEI=1; RED_DONGXI=1; GREEN_NANBEI=0; GREEN_DONGXI=0; YELLOW_NANBEI=1; YELLOW_DONGXI=1; P0=0x00;
NBweixuan1=0; NBweixuan2=0; DXweixuan1=0; DXweixuan2=0; delay(2);
return ;
}
void xtimer0() interrupt 1 {
TH0=(65535-50000)/256;
TL0=(65535-50000)%256; aa++;
}
void delay(uint z) {uint x,y;
for(x=0;x
for(y=0;y
单片机交通灯灯c语言程序,51单片机控制交通灯原理图及C语言程序相关推荐
- 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...
51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...
- 声控灯程序C语言,基于51单片机的声控灯设计设计-包含完整设计与指导文件.doc...
基于51单片机的声控灯设计设计-包含完整设计与指导文件 工 学 院 毕 业 设 计(论文) 题 目:基于单片机的智能光控路灯的设计 专 业: 机电技术教育 班 级: *** 姓 名: *** 学 号: ...
- c语言编写51单片机中断程序,执行过程是怎样的?
Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h> void main(void) { EA=1; //开放总中断 ...
- 用c语言完成流水灯控制的程序设计,单片机C语言程序设计之TIMER0控制流水灯
描述 基于单片机的LED流水灯的应用十分广泛,由单片机作为的核心控制器,通过按键实现控制功能和数据输入是非常普遍的.通常在所需按键数量不多时,系统常采用独立式按键.这种按键的电路配置灵活,软件结构简单 ...
- c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)
51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...
- c51c语言编程的音乐程序,51单片机唱歌C51音乐程序.doc
51单片机唱歌C51音乐程序 51单片机唱歌 C51音乐程序 unsigned char n 0; //n为节拍常数变量 unsigned char code music_tab[] 0x18, 0x ...
- 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc
基于51单片机的电动机测速表的设计 基于51单片机的电动机测速表设计 摘 要 本文介绍了采用光电传感器实施电机转速测量的方法.基本原理,完成了一种基于AT89C51单片机平台的电动机测速表的软硬件设计 ...
- 51单片机 | 数字电路与C语言基础 | 51单片机最小系统
文章目录 一.数字电路基础 1.电平特性 2.二进制与十六进制 2.1 二进制 2.2 十六进制 3.二进制的逻辑运算 二.C语言基础语法 三.51单片机最小系统 1. 51 单片机最小系统构成 1. ...
- 【C 语言实现51单片机计时器】
C语言实现51单片机计时器 代码如下 接线如下 代码如下 #include <reg51.h>sbit Hc38A=P2^2; sbit Hc38B=P2^3; sbit Hc38C=P2 ...
- 三菱PLC CCD控制ST程序 本PLC程序中CCD控制用的ST结构化语言,程序都有注释
三菱PLC CCD控制ST程序 本PLC程序中CCD控制用的ST结构化语言,程序都有注释.注释全面,用的三菱fx3u系列plc,可借鉴,本程序已经设备实际批量应用.稳定生产.成熟可靠,借鉴价值高,是三 ...
最新文章
- 宏定义来实现一个结构体成员相对于该结构体首地址的偏移量
- android游戏开发者大会,第二届中国Android应用开发大会将开
- python链表添加多个值_Python基础10之数据结构(下)
- 深入理解Java虚拟机(类文件结构)
- java 类加载器加载顺序 经典例子
- Mysql 常用函数总结
- jvm gc策略_IBM JVM调整– gencon GC策略
- 关于异常:HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection的解决办法
- comsol分析时总位移代表什么_基于COMSOL的气动软体执行器仿真
- 在STM8单片机中自己实现 printf()函数功能
- centos的一次性任务at和周期性任务crontab
- 汤晓鸥为CNN搓了一颗大力丸
- ningx访问日志切割
- 基于Servlet+jsp的web计算器
- 数电笔记之逻辑函数卡诺图化简
- MODIS数据下载——CSV模式直接下载hdf文件
- FileInputStreamFileOutputStream 和 BufferedInputStreamBufferedOutputStrem的性能测试小案例
- 适合初中文凭学的计算机技术,初中毕业学啥技术好 最吃香的手艺
- 函数信号发生器的设计与实现_北邮大二上电子电路基础实验报告
- 关闭CentOS蜂鸣器警报声音
热门文章
- 基于python的贴吧舆情监控助手实战
- 需求分析——基于Django框架的天天生鲜电商网站项目系列博客(一)
- VUE3+TS 生成一些五线谱
- 最详细的JavaScript高级教程(一)简介
- 一位财务自由人士的投资修行
- Iocomp for .net/wpf the Crack
- 使用 Fiddler Hook 报错:502 Fiddler - Connection Failed
- 微信开发者工具下载及APPID获取
- 太原理工java实验报告_太原理工大学-JAVA实验报告.doc
- 【bat批处理脚本命令】bat命令接收用户输入的内容(保姆级图文+实现代码)