![]() |
這就是一個交通燈的仿真,你可以在網(wǎng)上搜交通燈程序。不過最好還是自己寫 |
Wuwds 發(fā)表于 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++; } } |
你這個就是交通燈的電路嘛。 這有一個示例程序。不一定能配你的硬件,但可以參考的。它對應(yīng)電路如圖所示。 ![]() ![]()
|
Powered by 單片機教程網(wǎng)