文档介绍:word
word
1 / 26
word
单片机C语言程序设计
专题实****专周报告
班 级:
学 号:
姓 名:
word
word
2 / 26
word
***定义 红黄绿灯**************/
sbit M=P0^3;
sbit B_R=P1^2; //北面 红灯
sbit B_Y=P1^1; //北面 黄灯
sbit B_G=P1^0; //北面 绿灯
sbit N_R=P2^0; //南面 红灯
sbit N_Y=P2^1; //南面 黄灯
sbit N_G=P2^2; //南面 绿灯
sbit X_R=P2^5;//西面 红灯
sbit X_Y=P2^6; //西面 黄灯
sbit X_G=P2^7; //西面 绿灯
word
word
8 / 26
word
sbit D_R=P3^7; //东面 红灯
sbit D_Y=P3^6; //东面 黄灯
sbit D_G=P3^5; //东面 绿灯
sbit s1=P3^4;//时间减
sbit s2=P3^3;//时间加
sbit s3=P3^1;//紧急模式控制切换口
sbit s4=P3^2;//进入时间可以设置状态的切换口
/***************定义 数码管*****************/
#define SMG_XS P0 //数码管数据显示
#define SMG_KZ P2 //数码管控制显示
sbit smg1=P2^4;//定义数码管1控制口
sbit smg2=P2^3;//定义数码管2控制口
void delay(uint time);// 定义延时程序
void disp_init();//显示初始化
void disp(bei,nan,xi,dong);
void Time0_init() //定时器0初始化函数
{
word
word
9 / 26
word
TMOD=0x01; //定时器0为方式1
TL0=(65536-50000)%256;
TH0=(65536-50000)/256; //12M晶振 定时时间50ms
ET0=1; //开定时器0中断
EA=1; //开总中断
TR0=1; //启动定时器0
}
void night_mode() //紧急模式
{
B_R=1;
B_R=~B_R; //北 红灯取反
B_G=1;
N_R=1;
N_R=~N_R; //南 红灯取反
N_G=1;
X_R=1;
X_R=~X_R; //西 红灯取反
word
word
10 / 26
word
X_G=1;
D_R=1;
D_R=~D_R; //东 红灯取反
D_G=1;
}
void B_N_G() //北(绿灯) 西东(红灯)
{
B_G=0; //北 绿灯亮
N_G=0; //南 绿灯亮
B_R=1;
B_Y=1;
N_R=1;
N_Y=1;
X_R=0; //西 红灯亮
D_R=0; //东 红灯亮
X_Y=1;
X_G=1;
word
word
11 / 26
word
D_Y=1;
D_G=1;
}
void X_D_G() //西东通(绿灯) 北南(红灯)
{
B_G=1;
N_G=1;
B_R=0; //北 红灯亮
B_Y=1;
N_R=0; //南 红灯亮
N_Y=1;
X_R=1;
D_R=1;
X_Y=1;
X_G=0; //西 绿灯亮
D_Y=1;
D_G=0; //东 绿灯亮
word
word
12 / 26
word
}
void B_N_tong() //北南 通行
{
if(B_N_D_flag==1) //当北灯行标志位为1
{
B_N_G(); //北(绿灯) 西东(红灯)
B_N_D_flag=0; //北灯行标志位置0
}
while(num==20)