基于单片机的交通灯控制系统程序c语言.doc
文本预览下载声明
/****************************************************************************************
******************************单片机交通灯实时控制系统***********************************
模块名称: jtd.c
说 明: 数码管段地址74HC373(U2)FE00、位地址74HC373(U3)为FD00
G1选通FE00、G2选通FD00、G3选通FB00、G4选通EF00、G5选通F700
共阴极数码管显示0 1 2 3 4 5 6 7 8 9
0X7E 0XOC 0XB6 0X9E 0XCC 0XDA 0XFA 0X0E 0XFE 0XDE
四个方向的标识: 南(S)北(N) 东(E) 西(W)
两位数码管的标识:北向N1N2,南向S1S2、西向W1W2、东向E1E2
指示灯标识:G(绿)Y(黄)R(红)L(左转弯) F(直行)M(人行)
例如:北向左转弯灯行 用NLG; 左转弯等待 用NLY ;左转弯停 用NLR
程序设计:GYX
设计时间 修改时间*****************************************************************************************/
#includereg52.h //内含单片机寄存器地址
#includeabsacc.h //访问绝对地址 XBYTE
unsigned char Set_time[8];
bit Set_flag,flag,fsec;
unsigned char NSLGtime,NSLYtime,NSFGtime,NSFYtime,NStime;
unsigned char WELGtime,WELYtime,WEFGtime,WEFYtime,WEtime;
unsigned char T,count,Tab,Set_num,key,p;
//函数声明
void cpuInit(void); //cpu初始化
void Display(void); //显示运行时间
void Set_bitDisplay();//显示设定时间
void key_analyse(void); //键处理程序
void Kv_Set(void); //设置键
void Kv_Enter(void); //确定键
void Kv_Up(void); //加键
void Kv_Down(void); //减键
void smec(unsigned char x); //延时子程序
//0 1 2 3 4 5 6 7 8 9
unsigned char TAB1[10]={0x7E,0x0C,0xB6,0x9E,0xCC,0xDA,0xFA,0x0E,0xFE,0xDE};
/**********************************************************************
函 数 名:main()
功 能,主程序不断查询有键按下
说 明:主函数
入口参数:无
返 回 值:无
设 计:GYX 日期 修 改: 日期:
***********************************************************************/
main()
{
cpuInit();
while(1)
{
key_analyse(); //查询是否有键按下
if(Set_flag)
{
Set_bitDisplay();
}
else
{
Display(); //显示
switch(T)
{
case 1 :XBYTE[0XFB00]=0XAD;//NS左转行,直行停 人行左停
显示全部