交通灯(二)

简介:

要求同交通灯(一),http://blog.csdn.net/cometwo/article/details/8866784

警告:不同单片机的动态扫描显示不一样,即下面黄底红字是让数码管显示函数,如果单片机不一样,只需改显示      函数即可,其他的不要动。

2: 程序设计(仅供参考的 C语言源程序)

#include<reg52.h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include<math.h>  

#define uchar unsigned char

#define uint  unsigned int

#define ulang unsigned lang

static unsigned char count;

code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 

         //共阴数码管 0-9

uchar smg[8];                 //定义缓冲区

uint  we,ns,h,j;   //ns代表南北,we代表东西

 

   

int aaa();   //东西红灯亮,南北绿灯,黄灯亮

int bbb();   //南北红灯亮,东西绿灯,黄灯亮

int eee();   //第一次完成显示,继续第二次初始化

void delay(unsigned int cnt)

{

 while(--cnt);

}

 

void display( )

{

                                 //取每一位的数字

            smg[0]=tab[we/10];     

       smg[1]=tab[we%10];

  smg[2]=0x00;             

            smg[3]=0x00;   

              smg[4]=0x00;

       smg[5]=0x00;            

                 smg[6]=tab[ns/10];  

  smg[7]=tab[ns%10];

}

void main()

{

     uchar i;

     TMOD |=0x01;  //定时器0 10ms in 12M crystal 用于计时

TH0=0xd8;     //初值

TL0=0xf0;

ET0=1;

TR0=1;

     EA =1;     

  display();

  while(1)

  {

    

for(i=0;i<8;i++)    //显示函数,因单片机而异

   {

      P0=smg[i];

 P2=i;

 delay(100);

   }

           ccc();     //进入交通灯控制程序

display( );    //扫描数码管

       }  

 

}

void timer() interrupt 1             //中断函数

{

   

   TH0=0xd8;                  //重新赋值

   TL0=0xf0;

   count++;

}

int aaa()       

{

          if(j<25)                 //东西红灯计数30秒,南北25秒绿灯亮

      {

      if(j==1) { we=30,ns=25; }

 ns--;

      we--;

      P1=0xde;

 return 0; } 

 

    if(25<=j<30)          //南北黄灯5

  {       

      if(j==26)  {  ns=5; } 

     P1=0xee;     

ns--; 

we--;   

return 0;    }

}

int bbb()

{

            if(h<25)   

      {                    //南北红灯30秒,东西绿灯25

      if(h==1) { we=25,ns=30; }

 ns--;

      we--;

       P1=0xf3;

 return 0; } 

 

    if(25<=h<30)           //东西黄灯5

  {       

      if(h==26)  {  we=5; } 

     P1=0xf5;     

ns--; 

we--;   

return 0;    }

 

     

 }

 int eee()      //一次周期交通灯显示完后,重新赋值,等待第二次

 {

  j=0;

 h=0;

 return 0;

 }

 int ccc()          //交通灯控制函数

 {

     

  if (count==100)       //定时一秒

    {

            count=0;

    j++;            //算法函数

 if ( (j>30)&&(j!=61))  { h++;      bbb();  return 0;   }

    if(j==61)   { eee(); return 0;}

               aaa();        return 0;   

   } 

 }

 

目录
相关文章
|
存储 前端开发 JavaScript
十二款·富文本编辑器:数字创作的瑞士军刀
在数字化时代,内容创作已经成为我们日常生活中不可或缺的一部分。无论是撰写一封电子邮件、准备一份报告、还是在社交媒体上分享心情,文字都是我们表达和沟通的基石。而在这个过程中,富文本编辑器就如同一把瑞士军刀,为我们提供了多种功能以增强和美化我们的文字内容。
975 1
|
移动开发 JavaScript 小程序
小程序开发.uniapp.生命周期
小程序开发.uniapp.生命周期
705 0
|
7月前
|
人工智能 缓存 UED
deepseek-vue3ai流式输出AI对话助手
原创新作vue3.5+deepseek+vite6+vant4仿DeepSeek-R1流式输出ai聊天对话。支持AI流式打字输出效果、浅色/暗黑主题模式、代码高亮、针对移动端+PC端适配处理。
639 65
|
6月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统源码+运行
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
106 2
|
人工智能 物联网 数据挖掘
奇思妙想之旅:探索AI在智能家居中的应用
随着人工智能技术的不断发展,智能家居已经成为了我们生活中不可或缺的一部分。在这个奇思妙想之旅中,我们将一起探索AI在智能家居领域的应用,以及如何通过AI技术提升家居生活的品质。
777 2
|
JSON 前端开发 JavaScript
实用!Excel在线网页版表格Luckysheet源码
实用!Excel在线网页版表格Luckysheet源码
532 0
|
域名解析 网络协议 安全
成千上万个域名如何一次性完成解析设置?
成千上万个域名如何一次性完成解析设置?
1323 0
成千上万个域名如何一次性完成解析设置?
|
机器学习/深度学习 算法 决策智能
遗传算法(GA)优化后RBF神经网络优化分析(Matlab代码实现)
遗传算法(GA)优化后RBF神经网络优化分析(Matlab代码实现)
591 0
|
监控 Java 数据安全/隐私保护
系统分析师笔记案例综合题
系统分析师笔记案例综合题
|
存储 设计模式 Java
从 Linux 内核线程反观 Java Go 的线程模型
> 原文参考我的个人公众号文章(欢迎关注!):[点此链接进入](https://mp.weixin.qq.com/s?__biz=MzkxNDMyNjk0Mw==&mid=2247484374&idx=1&sn=5e5c8ef7adc0841019cb3302ed5003db&chksm=c1715726f606de301494abf87fbdc40303bdb9ac8393333b0778e23
235 0
从 Linux 内核线程反观 Java Go 的线程模型