找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6566|回复: 0
打印 上一主题 下一主题
收起左侧

简单单片机交通灯控制程序及讲解

[复制链接]
跳转到指定楼层
楼主
ID:295535 发表于 2019-3-1 10:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
位定义是依次定义适用的   便于在后面控制时候使用,思路是基于点亮LED的高低电平控制,所使用的开发板默认都有上拉电阻,所以底电位亮灯。延时程序使用小精灵自动生成,极大地提高效率,通过在main之前定义编辑后直接调用  结构极大地简化,也便于明了的修改

  1. #include "reg52.h"
  2.   typedef unsigned char u8 ;  //定义变量参//
  3.   typedef unsigned int u16  ;
  4.   sbit    D1=P0^0; //A方向行道红灯
  5.   sbit    D2=P0^1;//A方向行道绿灯
  6.   sbit    D3=P0^2;//A方向红灯
  7.   sbit     D4=P0^3;  //A方向黄灯
  8.   sbit     D5=P0^4;  //A方向绿灯
  9.   sbit    D6=P0^5;  //B方向红灯
  10.   sbit    D7=P0^6;  //B方向黄灯
  11.   sbit    D8=P0^7;  //B方向绿灯
  12.   sbit     D9=P2^0;  //B方向行道红灯
  13.   sbit     D0=P2^1;  //B方向行道绿灯
  14. void delay5s()   //误差 0us
  15. {
  16.     unsigned char a,b,c;
  17.     for(c=165;c>0;c--)
  18.         for(b=100;b>0;b--)
  19.             for(a=150;a>0;a--);
  20. }
  21. void delay30s()   //误差 0us
  22. {
  23.     unsigned char a,b,c,n;
  24.     for(c=254;c>0;c--)
  25.         for(b=232;b>0;b--)
  26.             for(a=253;a>0;a--);
  27.     for(n=2440;n>0;n--);
  28. }
  29.   void jiaotongdeng()
  30.   {
  31.    D1=0;D2=1;D3=0;D4=1;D5=1;D6=1;D7=1;D8=0;D9=1;D0=0;
  32. delay30s();
  33. D1=0;D2=1;D3=1;D4=~D4;D5=1;D6=1;D7=~D7;D8=1;D9=1;D0=~D0;
  34. delay5s();
  35. D1=1;D2=0;D3=1;D4=1;D5=0;D6=0;D7=1;D8=1;D9=0;D0=1;
  36. delay30s();
  37. D1=0;D2=1;D3=1;D4=~D4;D5=1;D6=1;D7=~D7;D8=1;D9=1;D0=~D0;
  38. delay5s();
  39.   }
  40. void main()
  41. {
  42.   while(1)
  43.   {
  44.    jiaotongdeng();
  45.   }
  46. }

复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表