利用51单片机完成红绿灯系统

该程序是基于使用STC89C52芯片下的51开发板
首先确认两种工作状态:
①南北方向红灯60s;东西方向绿灯57s,然后黄灯三秒。
②南北方向绿灯57秒,然后黄灯3秒;东西方向红灯60s。
这两种工作状态交替进行。


该程序是主要使用定时器中断来完成的,学好定时器中断就能轻松写出这个程序


给程序标了一些简单注释,有看不懂的地方可以评论区留言。



#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit du=P2^6;
sbit we=P2^7;
sbit NS_r=P1^0;
sbit NS_y=P1^1;
sbit NS_g=P1^2;
sbit EW_r=P1^4;
sbit EW_y=P1^5;
sbit EW_g=P1^6;
uint i=60,j=57;
uchar k;
uchar code SMGdu[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
uchar code SMGwe[]={0xfe,0xfd,0xef,0xdf};


void time0() //定时计数器0初始化
{
EA=1;
ET0=1; //配置定时器0中断
TR0=1;
TMOD=0x01;
TH0=0xed; //定时5ms
TL0=0xff;
}


void display() //扫描数码管
{
uint n1,n2,e1,e2;//NS,EW方向数码管
n1=i/10;
n2=i%10;
e1=j/10;
e2=j%10;
we = 1;//打开位选锁存器
P0 = SMGwe[k%4];
we = 0;//锁存位选数据
switch(k%4)
{
case 0:du=1;P0=SMGdu[e1];du=0;break;
case 1:du=1;P0=SMGdu[e2];du=0;break;
case 2:du=1;P0=SMGdu[n1];du=0;break;
case 3:du=1;P0=SMGdu[n2];du=0;break;
}


}
void main()
{
time0();
NS_r=0; //初始化南北方向红灯,东西方向绿灯
EW_g=0;

while(1)//两个阶段  1.南北方向红60s;东西方向绿57s,黄3s
{                 //2.东西方向红60s;南北方向绿57s,黄3s         if(j==0&&i==3){EW_g=1;EW_y=0;j=3;}if(i==0&&EW_y==0)  {NS_r=1;NS_g=0;EW_y=1;EW_r=0;i=57;j=60;}if(i==0&&j==3){NS_g=1;NS_y=0;i=3;}if(i==0&&NS_y==0){NS_y=1;NS_r=0;EW_r=1;EW_g=0;i=60;j=57;}
}

}


void timer0() interrupt 1 //定时器0中断处理函数
{
TH0=0xed; //定时5ms
TL0=0xff;
k++;
if(k==200)
{
i–;
j–;
k=0;
}
display();
}

51单片机——红绿灯系统相关推荐

  1. 单片机复位电路电容一定用电解电容_什么叫51单片机最小系统

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机.晶振电路.复位电路.下面给出一个51单片机的最小系统电路图. 复位 ...

  2. 理解51单片机最小系统的工作原理

    51单片机最小应用系统 概述 要想使用单片机,第一个要搭建的电路就是单片机的最小系统,有了这个最小系统单片机就可以去正常的工作,即使没有其他的外围电路(显示器啥的),也可以对单片机进行程序的编写,程序 ...

  3. 51单片机最小系统板制作过程

    博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...

  4. 【单片机】51单片机最小系统

    51单片机最小系统由三部分组成:主控电路.复位电路.晶振电路. 添加LED电路和独立按键.原理图如下所示:

  5. 51单片机最小系统的制作和程序烧录

    这篇博客就来分享一下51单片机最小系统的制作以及怎么下载程序 首先准备的材料有:一块板子,一块89c51/52的芯片,一个51芯片插座,12MHZ的晶振,一个10的电阻,一个10uf的电解电容 两个2 ...

  6. 手把手讲解51单片机最小系统焊接、流水灯(跑马灯)编写以及烧录

    (1)首先当然是要购买"51单片机最小系统的散件",淘宝上面卖的比较多,散件的话一般二.三十元左右,其次还需要购买一个电烙铁,一般30瓦的就足够了,这里我就讲一讲51单片机散件的焊 ...

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

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

  8. 51单片机最小系统的相关知识

    51单片机最小系统的相关知识 单片机最小系统,或者称为 最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机.晶振电路.复位电路.下面给出一个5 ...

  9. 51单片机最小系统电路设计

    博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...

  10. 51单片机最小系统制作笔记

    原文地址:51单片机最小系统制作笔记作者:忘忧角落 上面所示是51系列单片机最小系统全家福照片,组装完成后的照片如下: 本电路各输入.输出脚全部用插针引出,可以连接外围电路进行单片机电路的实验,芯片可 ...

最新文章

  1. iOSSharing #9 | 2019-05-19
  2. 相爱相杀:程序员的数学
  3. call of overloaded 'round(float)' is ambiguous
  4. Oracle database datafile header中记录的datafile的大小
  5. 手把手玩转协同编辑(1):AST (Address Space Transformation)地址空间转换算法 基本介绍...
  6. jQuery $.ajax传递数组的traditional参数传递必须true 对象的序列化
  7. 理论基础 —— 树 —— 树的存储结构
  8. simhash与Google的网页去重
  9. 48 - 算法 - leetcode 118 杨辉三角
  10. 通过VirtualBox与Vagrant在windows上搭建LNMP开发环境
  11. java对列表数据排序_如何在Java中对列表进行排序
  12. bzoj 1093 [ ZJOI 2007 ] 最大半连通子图 —— 拓扑+DP
  13. 单服务器部署rancher_基于CentOS 7部署Rancher 2.0
  14. 【JS】1126- 如何更好的取消一个promise?
  15. MTK 智能机平台系统文件夹文件详解
  16. 学生网课网页设计成品 在线视频学习类网页制作 三层结构网页模板 静态HTML注册登录网页模板 学生毕业设计网页制作作品 网校类网页代制做
  17. 【POJ 3107】 Godfather
  18. hisi3559平台PCIE转USB调试
  19. 小论文查重率一般小于多少?
  20. JS相等(==)和全等(===)区别

热门文章

  1. 全自动与半自动手表的区别_机械表全自动好还是半自动好 有什么区别
  2. 点击改变文本框选择内容,Jquery datatables 重新加载数据
  3. 触动精灵mysql用法教程_触动精灵如何使用 触动精灵脚本编写教程攻略大全
  4. 学计算机买电脑显卡1605ti够吗,GTX1650和GTX1050Ti哪个好?GTX1050ti和GTX1650性能差距对比评测...
  5. 决策树模型,XGBoost,LightGBM和CatBoost模型可视化
  6. 语义分割论文:Fully Convolutional Networks for Semantic Segmentation (CVPR2015)
  7. MySQL数据库高级SQL语句【进阶查询、null值、数据库正则、数据库运算符、连接查询(内连接、左外连接、右外连接)】
  8. 【HTML基础】acronym和abbr的区别
  9. 扫描QR码即可完成移动支付的LevelUp推出集合NFC、QR码等技术的移动支付终端,供商家免费使用 | 36氪
  10. [Spark进阶]--深入Spark Locality Level