本实验为红绿灯实验二,加入了数码管来显示倒计时,模拟交通灯的运行(压缩包中有仿真+程序)
单片机源程序如下:
- #include "reg51.h"
- #define u8 unsigned char
- sbit nan_lv=P2^0;//南北绿
- sbit nan_huang=P2^1;//南北黄
- sbit nan_hong=P2^2;//南北红
- sbit dong_lv=P2^3;//东西绿
- sbit dong_huang=P2^4;//东西黄
- sbit dong_hong=P2^5;//东西红
- void delay(long i){while(i--);}//定时器,延时
- //低要求:实现红黄绿灯的切换
- //中等要求:黄灯要闪烁
- //高水平:数码管实现倒计时
- void fun(u8 i)
- {
- while(i--)
- {
- P3=((i/10)<<4)+(i%10);
- delay(10000);
- }
- }
- void main(void)
- {
- u8 huang=0;//huang=黄灯倒计时
- while(1)
- {
- P2=0xff;nan_lv=0;dong_hong=0;
- fun(20);
- nan_lv=1;
- huang=9;
- while(huang--)
- {
- nan_huang=~nan_huang;
- P3=(((huang/2)/10)<<4)+((huang/2)%10);
- delay(7000);
- }
- P2=0xff;dong_lv=0;nan_hong=0;
- fun(20);
- dong_lv=1;
- huang=9;
- while(huang--)
- {
- dong_huang=~dong_huang;
- P3=(((huang/2)/10)<<4)+((huang/2)%10);
- delay(7000);
- }
- }
- }
复制代码
所有资料51hei提供下载:
红绿灯实验二.rar
(50.46 KB, 下载次数: 9)
|