#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led_red=P1^0;
sbit led_green=P1^1;
sbit led_yellow=P1^2;
uchar t,g,x,q,num;
int flag_yellow=0,flag_green=0,flag_red=1; //交通灯切换标志
uchar max_num=26; //初始计时最大值
uint n,i;
uchar code duan[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90}; //0-9共阳
/////////函数申明
void delay(uint k); //延时函数
void ji();
void display(); //数码管显示
void inti(); //定初值的函数
void led_display(); //交通灯
//////主函数
void main()
{
inti();
while(1)
{
display(); //在主函数中达到显示数值的目的
led_display();
}
}
void led_display()
{
if(flag_red==1)
{
led_yellow=1;
led_red=0;
}
else if(flag_green==1)
{
led_red=1;
led_green=0;
}
else if(flag_yellow==1)
{
led_green=1;
}
}
void delay(uint k) //延时函数
{ for(k;k>0;k--)
for(n=110;n>0;n--);
}
void ji()
{
if(flag_yellow==1&&t==5) //黄灯闪烁必须放这里
{
led_yellow =~ led_yellow;
}
if(t==20) //一秒时间到
{
t=0;
q++;
num=max_num- q%max_num; //实现倒计时
if(num==max_num &&flag_red==1)
{
TR0=0;
q=1;
num=20;
flag_green=1;
flag_red=0;
max_num=21; //绿灯20秒
TR0=1;
}
if(num==21 &&flag_green==1)
{
TR0=0;
q=1;
num=5;
flag_yellow=1;
flag_green=0;
max_num=6; //黄灯5秒
TR0=1;
}
if(num==6 &&flag_yellow==1)
{
TR0=0;
q=0;
num=25;
flag_red=1;
flag_yellow=0;
max_num=25; //
TR0=1;
}
}
x=num/10;
g=num%10;
//个和十用秒计时
}
void display() //数码管显示
{
// if(key==0)
// TR0=0;
// else if(key==1)
// TR0=1;
//SW();
ji();
//个位
P2=0x01; //端口位置16进制
P0=duan[g];
delay(1);
P0=0Xff; //使P0端口电位置0
//十位
P2=0x02;
P0=duan[x];
delay(1);
P0=0Xff;
}
void inti() //初始化函数
{
g=0,x=0; //显示计时初始化
TMOD=0X01; //定时器0工作方式1
TH0=(65536-50000)/256; //(65536-50000)/256; //撞入晶振为12的初值,定50ms为50000
TL0=(65536-50000)%256; //(65536-50000)%256; //记满后向THO进一位
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //定时器0运行
}
void time0() interrupt 1 //中断服务函数
{
TH0=(65535-50000)/256; //再赋初值
TL0=(65535-50000)%256;
t++;
}
.岚.风.
- 粉丝: 24
- 资源: 9
最新资源
- 基于位置跟踪观测器的脉振高频电压信号注入的无速度传感器控制系统
- 永磁同步发电机仿真,带四个牵引电机仿真 内燃机车仿真
- Induction-Motor-VF-Control:基于MATLAB Simulink的利用V F控制的感应电机调速仿真模型 仿真条件:MATLAB Simulink R2015b
- 欧姆龙cp1h与台达变频器modbus rtu通讯程序 程序有注释 控制正反转、状态显示、写入频率和读取频率、电压,plc型号为cp1h-xa40dt-d,触摸屏为威纶通mt8071ie,变频器为
- SVPWM-Inverter-Inductor-Motor:基于MATLAB Simulink的空间矢量脉宽调制SVPWM逆变器,交流测连接三相感应电机 仿真条件:MATLAB Simulink R
- Labview Modbus-Tcp和西门子全糸列pLC通讯所有数据类型均能读写,速度快,使用在多个项目上,运行稳定,可以扩展到其它品牌PLc,上位机程序一样,只是PLC程序稍微变动一下,上下位机源
- NPC-5level-Inverter:基于MATLAB Simulink的中性点钳位五电平逆变器仿真模型 仿真条件:MATLAB Simulink R2015b
- NPC-3level-Inverter:基于MATLAB Simulink的中性点钳位三电平逆变器仿真模型 仿真条件:MATLAB Simulink R2015b
- DC-Machine-Field-Control:基于MATLAB Simulink的直流电机弱磁控制仿真模型 仿真条件:MATLAB Simulink R2015b
- Twelve-Pulse-Diode-Rectifier:基于MATLAB Simulink的12脉冲二极管整流器仿真模型 仿真条件:MATLAB Simulink R2015b
- AC-DC-Machine:基于MATLAB Simulink的三相AC DC整流后的直流电机转速开环控制仿真模型 仿真条件:MATLAB Simulink R2015b
- 经典西门子200smart四轴定位控制:两台CPU ST60做通讯,台达伺服,步科触摸屏, 包含200smar-PLC程序+项目电气接线图+程序流程说明+触摸屏程序全套资料; 程序经典,结构清晰,梯形
- pscad仿真模型, upqc upfc d-v-r,拓扑为三电平四线制,变压器串联接入电网,电压跌落补偿,控制部分非模块搭建,全部用c语言编写,代码可以直接用在实际dsp中控制逆变器,当初就是为实
- 三菱,FX3U,plc程序模板和触摸屏程序模板,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制,适用于一些中大型设备,可以防止某个气缸超时时,处于自动模式,能够轻松处理,处理完成后,恢复原来的
- EKF-SoC:基于MATLAB Similink的扩展卡尔曼滤波器EKF的锂电池SoC计算仿真模型 仿真条件:MATLAB Simulink R2015b
- 动态电压恢复器(DVR)模型 Matlab simulink 可用于治理电压暂降、暂升和不平衡短路带来的电能质量问题:仿真总时长0.7s,DVR始终接入, 0.1-0.2s治理电压暂降,0.3-0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈