交通灯程序设计C语言,基于MCS-51的交通灯程序设计(c语言控制直行左转,包含程序)...

#include

#include

#define uint        unsigned int

#define uchar        unsigned char

#define        OFF 0        //定义灯泡开关

#define        ON        1

sbit        ew_zx_red = P1^0;          //东西直行红黄绿

sbit        ew_zx_yellow = P1^1;

sbit        ew_zx_green = P1^2;

sbit        ew_zz_red = P1^3;          //东西左转红黄绿

sbit        ew_zz_yellow = P1^4;

sbit        ew_zz_green = P1^5;

sbit        sn_zx_red = P2^0;          //南北直行红黄绿

sbit        sn_zx_yellow = P2^1;

sbit        sn_zx_green = P2^2;

sbit        sn_zz_red = P2^3;          //南北左转红黄绿

sbit        sn_zz_yellow = P2^4;

sbit        sn_zz_green = P2^5;

sbit        seg_1 = P1^6;         //东西数码管位选开关

sbit seg_2 = P1^7;

sbit        seg_3 = P2^6;         //南北数码管位选开关

sbit seg_4 = P2^7;

int time = 0;        //计时器

int count = 0;

unsigned char SEG_CA[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

unsigned char SEG_CC[10] = {0x3f, 0x06, 0x5b, 0x1f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

void delay()

{

int i;

for(i = 0; i < 10; i++);

}

void display_ew(unsigned int num)         //东西数字显示

{

P0 = SEG_CA[num/10];          //点亮数字高位

seg_1 = ON;

delay();

seg_1 = OFF;

P0 = SEG_CA[num%10];          //点亮数字低位

seg_2 = ON;

delay();

seg_2 = OFF;

}

void display_sn(unsigned int num)         //南北数字显示

{

P0 = SEG_CA[num/10];         //点亮数字高位

seg_3 = ON;

delay();

seg_3 = OFF;

P0 = SEG_CA[num%10];         //点亮数字低位

seg_4 = ON;

delay();

seg_4 = OFF;

}

void display_ew_shan(unsigned int num)         //东西3s 倒计时闪烁显示

{

if(count < 2000)

display_ew(num);

else

{

seg_1 = OFF;

seg_2 = OFF;

}

}

void display_sn_shan(unsigned int num)         //南北3s倒计时闪烁显示

{

if(count < 2000)

display_sn(num);

else

{

seg_3 = OFF;

seg_4 = OFF;

}

}

void init()

{

P0 = 0x00;

P1 = 0x00;

P2 = 0x00;

EA = 0;        //关总中断

ET0 = 1;        //开定时器0中断

TMOD = 0x02;        //定时器0工作方式2

TL0 = 6;        //定时250us

TH0 = 6;

EA = 1;          //开总中断

TR0 = 1;         //开始定时

}

void main()

{

init();

while(1)

{

/*************************************************************

开始东西直行绿灯亮,东西左转红灯亮27s,显示绿灯倒计时30s

南北直行、左转红灯亮50s,显示红灯倒计时50s

*************************************************************/

while(time%100 < 27)

{

ew_zx_green = ON;         //东西直行绿灯亮,显示27s

ew_zx_yellow = OFF;

ew_zx_red = OFF;

display_ew(30 - time);

ew_zz_red = ON;         //东西左转红灯亮

ew_zz_green = OFF;

ew_zz_yellow = OFF;

sn_zx_red = ON;         //南北直行红灯亮,显示时间50s

sn_zx_yellow = OFF;

sn_zx_green = OFF;

display_sn(50 - time);

sn_zz_red = ON;         //南北左转红灯亮,显示时间50s

sn_zz_yellow = OFF;

sn_zx_green = OFF;

}

/*************************************************************

东西直行黄灯亮3s, 倒计时开始闪烁

东西左转,南北方向不变

*************************************************************/

while(time%100 >= 27 && time%100 < 30)

{

ew_zx_yellow = ON;         //东西直行黄灯亮 ,显示时间3s

ew_zx_red = OFF;

ew_zx_green = OFF;

display_ew_shan(30 - time);

display_sn(50 - time);

}

/*************************************************************

东西左转绿灯亮17s,直行红灯亮 ,显示绿灯倒计时20s

南北方向不变

*************************************************************/

while(time%100 >= 30 && time%100 < 47)

{

ew_zz_green = ON;        //东西左转绿灯亮,显示时间17s

ew_zz_red = OFF;

ew_zz_yellow = OFF;

display_ew(50-time);

ew_zx_red = ON;         //东西直行红灯亮

ew_zx_yellow =OFF;

ew_zx_green = OFF;

display_sn(50-time);         //南北继续显示倒计时

}

/*************************************************************

东西左转黄灯亮3s, 倒计时开始闪烁 3s

东西直行,南北方向不变

*************************************************************/

while(time%100 >= 47 && time%100 < 50)

{

ew_zz_yellow = ON;        //东西左转黄灯亮,显示时间3s

ew_zz_red = OFF;

ew_zz_green = OFF;

display_ew_shan(50-time);

display_sn(50-time);         //南北继续显示倒计时

}

/*************************************************************

东西左转红灯亮50s,直行不变,显示倒计时50s

南北直行绿灯亮27,左转不变,显示绿灯倒计时30s

*************************************************************/

while(time%100 >=50 && time%100 < 77)

{

sn_zx_green = ON;        //南北直行绿灯亮,显示时间27s

sn_zx_yellow = OFF;

sn_zx_red = OFF;

display_sn(80 - time);

ew_zz_red = ON;          //东西左转红灯亮,显示时间50s

ew_zz_yellow = OFF;

ew_zz_green = OFF;

display_ew(100 - time);

}

/*************************************************************

南北直行黄灯亮3s,左转不变,显示黄灯闪烁倒计时3s

东西不变

*************************************************************/

while(time%100 >= 77 && time%100 < 80)

{

sn_zx_yellow = ON;        //南北直行黄灯亮,显示时间3s

sn_zx_red = OFF;

sn_zx_green = OFF;

display_sn_shan(80 - time);

display_ew(100 - time);

}

/*************************************************************

南北左转绿灯亮17s,直行不变,显示绿灯倒计时20s

东西不变

*************************************************************/

while(time%100 >=80 && time%100 <97)

{

sn_zz_green = ON;         //南北左转绿灯亮, 显示17s

sn_zz_red = OFF;

sn_zz_yellow = OFF;

display_sn(100-time);

sn_zx_red = ON;        //南北直行红灯亮

sn_zx_yellow = OFF;

sn_zx_green = OFF;

display_ew(100 - time);        //东西继续倒计时

}

/*************************************************************

南北左转黄灯亮17s,直行不变,显示黄灯闪烁倒计时3s

东西不变

*************************************************************/

while(time%100 >= 97 && time<=100)

{

sn_zz_yellow = ON;        //南北左转黄灯亮, 显示时间3s

sn_zz_red = OFF;

sn_zz_green = OFF;

display_sn_shan(100 - time);

display_ew(100 - time);        //东西继续倒计时

}

}

}

void timer0() interrupt 1

{

count++;

if(count == 4000)

{

time++;

count = 0;

}

if(time > 100)

time = 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5+CSS+JavaScript实现捉虫小游戏设计和实现【有密集恐惧症的别玩哟】

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

c语言文件分割与合并程序详解,c语言的文件合并文件和分割文件

问题描述&#xff1a;可以把文件分割成为若干部分存储&#xff0c;并且每个文件的大小都是平均的&#xff0c;也可以对把若干个文件整合到一个文件中&#xff0c;实现对文件的合并。该程序主要分为菜单选择模块、文件分割模块、文件合并模块、计算文件大小模块。1.文件的分割示…

HTML+CSS+JS实现月球上行走的宇航员网页设计

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

基于Springboot+mybatis+lyaui实现学科竞赛管理系统【详细设计--附完整源码】

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; …

c语言黑白棋程序设计报告,C语言课程设计黑白棋

C语言课程设计——黑白棋第一章 绪论1.1 C语言概述C语言是国际上广泛流行且很有发展前途的计算机高级语言&#xff0c;不仅用来编写应用软件&#xff0c;也用来编写系统软件。C语言功能丰富&#xff0c;使用灵活&#xff0c;可移植性好&#xff0c;深受广大用户欢迎。C语言的数…

c语言中参数的传递方式是,C语言函数的参数及传递方式

1.形式参数和实际参数1.1形式参数形参出现在被调函数当中&#xff0c;在整个函数体内都可以使用。形参在定义时编译系统并不分配存储空间&#xff0c;只有在调用该函数时才分配内存单元。调用结束内存单元被释放&#xff0c;故形参只有在函数调用时有效&#xff0c;调用结束时不…

Web前端期末大作业--响应式性感美女模特博客网页设计(HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;HTML网页作业无从下手&#xff1f;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

web前端大作业--响应式风景旅游网页设计(国庆旅游主题-HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;HTML网页作业无从下手&#xff1f;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

c语言抓取抖音视频,【FiddlerScript】利用Fiddler中的FiddlerScript自动抓取抖音无水印视频并且自动保存...

本帖最后由 小白大侠 于 2021-3-14 13:55 编辑Fiddler自动抓取抖音无水印视频并且自动保存前言:这段代码实用性不大&#xff0c;大量数据处理容易造成Fiddler卡死&#xff0c;只是希望给未来写FiddlerScript脚本的人一点启发&#xff0c;毕竟有些代码的写法百度不到准备工具:Xp…

Web前端期末大作业--响应式风景旅游网页设计(国庆旅游主题-HTML+CSS+JavaScript)实现(二)

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;HTML网页作业无从下手&#xff1f;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

c++语言 tcp例子,C++中TCP通信实现文件传输

作为Computer networks课程的一个project&#xff0c;我们需要实现用TCP在mininet中client和server的相互通信&#xff0c;需要能够传输文本文件&#xff0c;binary file 和image file。整个project的目的还是比较明确的。我主要列出了一下几个问题&#xff0c;需要在代码中实现…

H5+echarts模拟全国程序员可视化大数据【附完整源码】

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末免费获取源码&#x1f345; 临近学期结束&#xff…

android创建构建方法,Android 应用程序构建实战+原理精讲

转载来自51cto:https://blog.51cto.com/15091291/2629464new Vue({el: #app,data () {return {info: null}},mounted () {axios.get(https://www.runoob.com/try/ajax/json_demo.json).then(response > (this.info response)).catch(function (error) { // 请求失败处理con…

Java期末大作业基础项目--在线学生选课系统

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…

Web前端期末大作业--响应式网络科技公司网页设计(IT网络主题-HTML+CSS+JavaScript)实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &…

android mp4语音识别,怎样用语音识别将一段视频转化为文字, 比如:百度的语音识别api...

import java.util.ArrayList;import com.iflytek.speech.RecognizerListener;import com.iflytek.speech.RecognizerResult;import com.iflytek.speech.SpeechError;import com.iflytek.speech.SpeechRecognizer;public classTestXF {/**** 这里需要改成你自己的实际appid*/pri…

Web前端期末大作业--响应式电竞博客网页设计(HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;HTML网页作业无从下手&#xff1f;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

android 对话框 重复,如何在Android上重复使用AlertDialog for Yes / No?

我正在尝试找到重用显示自定义标题的Dialog的方法,然后将Yes / No click发送到已启动Dialog的功能.我有两个按钮,保存和解除,并且都调用是/否对话,一个显示“你想保存”,另一个显示“关闭更改&#xff1f;”.我认为我的程序非常“脏”但我想它可以工作,但我的问题是“查看视图”…

web前端期末大作业--响应式汽车租赁网页设计--(HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;网页要求的总数量太多&#xff1f;HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

android启动页面显示空白,android – 启动时的空白页面

在获取启动画面之前,当我启动应用程序时,我会得到一个空白页面(< 1s).我甚至试过几乎空的泼水活动,但我仍然得到它&#xff01; 怎么了&#xff1f; 清单文件package"com.mypackage"android:versionCode"1"android:versionName"1.0" >andr…