网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月28日漏签0天
单片机吧 关注:212,739贴子:1,049,625
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 17回复贴,共1页
<<返回单片机吧
>0< 加载中...

单片机红绿灯设计开源

  • 只看楼主
  • 收藏

  • 回复
  • 单片机2015
  • 中士
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 单片机2015
  • 中士
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#define _MAIN_C
#include "use.h"
#include "main.h"
#include "time.h"
#include "key.h"
bit flag1s;
uchar count1s,NS_time,WE_time;
uchar GreenTime=30,RedTime=35;
uchar index=0;
enum eStaSysterm StaSysterm=NormalRun;
void main()
{
EA=1; //开总中断
InintTimer0(); //初始化定时器0
while(1)
{
LEDScan(); //数码管即LED扫描
KeyDriver(); //键盘驱动扫描
if(flag1s)
{
flag1s=0;
NS_time--; //红绿灯倒计时时间减
WE_time--;
}
}
}
void InintTimer0()
{
TMOD=0X01;
TH0=0X4C;
TL0=0X00;
ET0=1;
TR0=1;
}
void Timer0() interrupt 1
{
TH0=0XBB;
TL0=0X00;
KeyScan();
if(++count1s<50)return;
count1s=0;
if(StaSysterm==NormalRun) flag1s=1; //非正常运行时,不红绿灯数值不减一
}
void LEDScan()
{
if(StaSysterm==NormalRun) //正常运行
{
if(NS_time==0 || WE_time==0)
{
switch(index) //改变红绿灯的状态,状态机
{
case 0:
{
index=1;
NS_time=GreenTime;
WE_time=RedTime;
P2=0X09;
}break;
case 1:
{
index=2;
NS_time=RedTime-GreenTime;
P2=0X0A;
}break;
case 2:
{
index=3;
NS_time=RedTime;
WE_time=GreenTime;
P2=0X24;
}break;
case 3:
{
index=0;
WE_time=RedTime-GreenTime;
P2=0X14;
}break;
default:break;
}
}
Seg_Display(NS_time/10,0);
Seg_Display(NS_time%10,1);
Seg_Display(WE_time/10,2);
Seg_Display(WE_time%10,3);
}
else if(StaSysterm==UrgentRun)
{ //紧急情况运行
P2=0x12;
Delayms(200);
P2=0x00;
Delayms(200);
}
else //设置调整红绿灯时间
{
index=0;
NS_time=0;
WE_time=0; //重新初始化红绿灯并运行
UrgentScan();
}
}


2025-11-28 12:43:24
广告
不感兴趣
开通SVIP免广告
  • 单片机2015
  • 中士
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include "use.h"
#include "time.h"
sbit KEY1=P3^4;
sbit KEY2=P3^5;
sbit KEY3=P3^6;
sbit KEY4=P3^7;
uchar keystr[]={1,1,1,1},backup[]={1,1,1,1};
void KeyScan() //键盘扫描
{
static uchar keybuf[4]={0XFF,0XFF,0XFF,0XFF};
uchar i;
keybuf[0]=(keybuf[0]<<1)|KEY1;
keybuf[1]=(keybuf[1]<<1)|KEY2;
keybuf[2]=(keybuf[2]<<1)|KEY3;
keybuf[3]=(keybuf[3]<<1)|KEY4;
for(i=0;i<4;i++)
{
if(keybuf[i]==0X00)keystr[i]=0;
else if(keybuf[i]==0XFF) keystr[i]=1;
}
}
void KeyAction(uchar key) //键盘执行
{
switch(key)
{
case 0:SetModel();break;
case 1:ADDTime();break;
case 2:SUBTime();break;
case 3: UrgentModel();break;
default:break;
}
}
void KeyDriver() //键盘驱动
{
uchar i;
for(i=0;i<4;i++)
{
if(keystr[i]!=backup[i])
{
if(keystr[i]==0)
KeyAction(i);//这里适当修改程序可以实现组合按键的效果
}
backup[i]=keystr[i];
}
}


  • ZzengXxiangDdi
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
请问这三个是什么元件?元件号是啥。我找半天找不到。。就感觉是定时器。。。不知道元件号。。很难在仿真板找出来。。。


  • Ich_liebe_Ran
  • 列兵
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看着简单 但是可以学好多


  • hyp6226302
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为何不用38译码器,不是模块变小了


  • Tintin
  • 上士
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这软件叫什么


  • 梦一场白
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
怎么联系你。


2025-11-28 12:37:24
广告
不感兴趣
开通SVIP免广告
  • 秃头大英子
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主,求解救


  • 蠡竜興
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
请问we=1,we=0什么意思


  • timewx134
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
学习单片机需要什么基础知识,需要学什么书,会什么软件


  • 贴吧用户_6S5DJWEZ3
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主,可以沟通一下这个吗


  • 你好吗503
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在学单片机,互相讨论


  • 贴吧用户_5NRa1aN
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个程序是错的,不能用


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 17回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示