|
这就是一个交通灯的仿真,你可以在网上搜交通灯程序。不过最好还是自己写 |
Wuwds 发表于 2017-11-27 16:18 老铁,这个代码是我的那个图的吗 |
|
#include<reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit renrh=P3^0; //人行道右红 sbit renrl=P3^1;// 人行道右绿 sbit rensh=P2^0; //人上下红灯 sbit rensl=P2^1; //人上下绿灯 sbit cherh=P2^5; //车左右红灯 sbit chery=P2^6; //车左右黄灯 sbit cherl=P2^7; //车左右绿灯 sbit chesh=P2^2; //车上下红灯 sbit chesy=P2^3;//车上下黄灯 sbit chesl=P2^4;//车上下绿灯 uint8 smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; uint8 smgwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uint8 sec,sum; uint8 smgshu[8]; void delay(uint16 i) { while(i--); } void init0() //定时器0初始化 { TMOD=0x01; TH1=0x3c; TL1=0xb0; //定时50ms TR0=1; ET0=1; EA=1; } void smgsaomiao() //扫描显示 { uint8 i; for(i=0;i<8;i++) { P0=smgshu[i]; P1=smgwei[i]; delay(300); } } void main() { init0(); sec=1; while(1) { if(sec==70) { sec=1; } if(sec<31) { P2=0xff; P3=0xff; renrh=0; chesl=0; cherh=0; rensl=0; smgshu[0]=0x00; smgshu[1]=0x00; smgshu[2]=smgduan[(30-sec)/10]; smgshu[3]=smgduan[(30-sec)%10]; smgshu[4]=0x00; smgshu[5]=0x00; smgshu[6]=smgduan[(30-sec)/10]; smgshu[7]=smgduan[(30-sec)%10]; smgsaomiao(); } if(sec>30&&sec<36) { P3=0xff; P2=0xff; renrh=0; chesy=0; chery=0; rensh=0; smgshu[0]=0x00; smgshu[1]=0x00; smgshu[2]=smgduan[(36-sec)/10]; smgshu[3]=smgduan[(36-sec)%10]; smgshu[4]=0x00; smgshu[5]=0x00; smgshu[6]=smgduan[(36-sec)/10]; smgshu[7]=smgduan[(36-sec)%10]; smgsaomiao(); } if(sec>35&&sec<66) { P3=0xff; P2=0xff; renrl=0; chesh=0; cherl=0; rensh=0; smgshu[0]=0x00; smgshu[1]=0x00; smgshu[2]=smgduan[(65-sec)/10]; smgshu[3]=smgduan[(65-sec)%10]; smgshu[4]=0x00; smgshu[5]=0x00; smgshu[6]=smgduan[(65-sec)/10]; smgshu[7]=smgduan[(65-sec)%10]; smgsaomiao(); } if(sec>65&&sec<71) { P3=0xff; P2=0xff; renrh=0; chesy=0; chery=0; rensh=0; smgshu[0]=0x00; smgshu[1]=0x00; smgshu[2]=smgduan[(70-sec)/10]; smgshu[3]=smgduan[(70-sec)%10]; smgshu[4]=0x00; smgshu[5]=0x00; smgshu[6]=smgduan[(70-sec)/10]; smgshu[7]=smgduan[(70-sec)%10]; smgsaomiao(); } } } void time0() interrupt 1 { TH1=0x3c; TL1=0xb0; sum++; if(sum==20) { sum=0; sec++; } } |
|
你这个就是交通灯的电路嘛。 这有一个示例程序。不一定能配你的硬件,但可以参考的。它对应电路如图所示。
|