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语言程序相关推荐

  1. 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...

    51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...

  2. 声控灯程序C语言,基于51单片机的声控灯设计设计-包含完整设计与指导文件.doc...

    基于51单片机的声控灯设计设计-包含完整设计与指导文件 工 学 院 毕 业 设 计(论文) 题 目:基于单片机的智能光控路灯的设计 专 业: 机电技术教育 班 级: *** 姓 名: *** 学 号: ...

  3. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h>   void main(void)   {    EA=1;      //开放总中断 ...

  4. 用c语言完成流水灯控制的程序设计,单片机C语言程序设计之TIMER0控制流水灯

    描述 基于单片机的LED流水灯的应用十分广泛,由单片机作为的核心控制器,通过按键实现控制功能和数据输入是非常普遍的.通常在所需按键数量不多时,系统常采用独立式按键.这种按键的电路配置灵活,软件结构简单 ...

  5. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  6. c51c语言编程的音乐程序,51单片机唱歌C51音乐程序.doc

    51单片机唱歌C51音乐程序 51单片机唱歌 C51音乐程序 unsigned char n 0; //n为节拍常数变量 unsigned char code music_tab[] 0x18, 0x ...

  7. 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc

    基于51单片机的电动机测速表的设计 基于51单片机的电动机测速表设计 摘 要 本文介绍了采用光电传感器实施电机转速测量的方法.基本原理,完成了一种基于AT89C51单片机平台的电动机测速表的软硬件设计 ...

  8. 51单片机 | 数字电路与C语言基础 | 51单片机最小系统

    文章目录 一.数字电路基础 1.电平特性 2.二进制与十六进制 2.1 二进制 2.2 十六进制 3.二进制的逻辑运算 二.C语言基础语法 三.51单片机最小系统 1. 51 单片机最小系统构成 1. ...

  9. 【C 语言实现51单片机计时器】

    C语言实现51单片机计时器 代码如下 接线如下 代码如下 #include <reg51.h>sbit Hc38A=P2^2; sbit Hc38B=P2^3; sbit Hc38C=P2 ...

  10. 三菱PLC CCD控制ST程序 本PLC程序中CCD控制用的ST结构化语言,程序都有注释

    三菱PLC CCD控制ST程序 本PLC程序中CCD控制用的ST结构化语言,程序都有注释.注释全面,用的三菱fx3u系列plc,可借鉴,本程序已经设备实际批量应用.稳定生产.成熟可靠,借鉴价值高,是三 ...

最新文章

  1. 宏定义来实现一个结构体成员相对于该结构体首地址的偏移量
  2. android游戏开发者大会,第二届中国Android应用开发大会将开
  3. python链表添加多个值_Python基础10之数据结构(下)
  4. 深入理解Java虚拟机(类文件结构)
  5. java 类加载器加载顺序 经典例子
  6. Mysql 常用函数总结
  7. jvm gc策略_IBM JVM调整– gencon GC策略
  8. 关于异常:HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection的解决办法
  9. comsol分析时总位移代表什么_基于COMSOL的气动软体执行器仿真
  10. 在STM8单片机中自己实现 printf()函数功能
  11. centos的一次性任务at和周期性任务crontab
  12. 汤晓鸥为CNN搓了一颗大力丸
  13. ningx访问日志切割
  14. 基于Servlet+jsp的web计算器
  15. 数电笔记之逻辑函数卡诺图化简
  16. MODIS数据下载——CSV模式直接下载hdf文件
  17. FileInputStreamFileOutputStream 和 BufferedInputStreamBufferedOutputStrem的性能测试小案例
  18. 适合初中文凭学的计算机技术,初中毕业学啥技术好 最吃香的手艺
  19. 函数信号发生器的设计与实现_北邮大二上电子电路基础实验报告
  20. 关闭CentOS蜂鸣器警报声音

热门文章

  1. 基于python的贴吧舆情监控助手实战
  2. 需求分析——基于Django框架的天天生鲜电商网站项目系列博客(一)
  3. VUE3+TS 生成一些五线谱
  4. 最详细的JavaScript高级教程(一)简介
  5. 一位财务自由人士的投资修行
  6. Iocomp for .net/wpf the Crack
  7. 使用 Fiddler Hook 报错:502 Fiddler - Connection Failed
  8. 微信开发者工具下载及APPID获取
  9. 太原理工java实验报告_太原理工大学-JAVA实验报告.doc
  10. 【bat批处理脚本命令】bat命令接收用户输入的内容(保姆级图文+实现代码)