⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trafficlight.c

📁 实现了在S3C44B0开发版上的LED8位数码管的交通灯模拟。
💻 C
字号:
#include"uhal.h"
//#include"keyboard.h"
#include"zlg7289.h"
#include"44b.h"

#pragma import(__use_no_semihosting_swi)  // ensure no functions that use semihosting

extern int Zlg7289SIOBand;
extern int Zlg7289SIOCtrl;
int hide[3]={0x41,0x22,0x14};

//void led1(void);
//void led2(void);
//void led3(void);

/*#define LED0 0x01
#define LED1 0x02
#define LED2 0x04
#define LED3 0x08
#define LED4 0x10
#define LED5 0x20
#define LED6 0x40
#define LED7 0x80*/

void led(int,int,long);
int i;
int main(void)
{
	//U32 key;
	
	ARMTargetInit();	//开发版初始化
	Uart_Printf("\nArm Target Init OK.");
    Zlg7289_Reset();//zlg7289复位
	while(1)
	{
		/*ZLG7289_ENABLE();
		WriteSDIO(ZLG7289_CMD_DATA1|3);
		WriteSDIO(1);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_DATA1|7);
		WriteSDIO(2);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_HIDE);
		WriteSDIO(0x88);
		Delay(5);
		ZLG7289_DISABLE();*/
	
	for(i=1;i<=4;i++)
	{
	    //key=GetKey();//得到按键值
		//Delay(1);
		
		switch(i)
		{
		case 1: led(0,6,70000);break;//led1();break;
		case 2: led(1,5,30000);break;//led2();break;
		case 3: led(2,4,70000);break;//led3();break;
		case 4: led(1,5,30000);break;//led2();break;
		default:  break;
		}
		
		}
		
		
		
		
		
	}
	return 0;
}


void led(int x,int y,long z)//x是路2的灯,y是路1的灯,z是灯亮的时间
{
	ZLG7289_ENABLE();
	Delay(5);
	WriteSDIO(ZLG7289_CMD_DATA1|x);//数码管以方式1译码,第x个数码管亮
	WriteSDIO(0);
	Delay(5);
	WriteSDIO(ZLG7289_CMD_DATA1|y);//数码管以方式1译码,第x个数码管亮
	WriteSDIO(0);
	Delay(5);
	/*WriteSDIO(ZLG7289_CMD_HIDE);
	WriteSDIO(1<<x|1<<y);//显示第x,y位数码管
	Delay(5);*/
	
	
		WriteSDIO(ZLG7289_CMD_DATA1|3);
		WriteSDIO(2);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_DATA1|7);
		WriteSDIO(1);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_HIDE);
		WriteSDIO(0x88|1<<x|1<<y);//显示第7位数码管为1,第4位数码管为2,显示第x,y位数码管为0;
		Delay(5);
		
		
	if(x==1)//判断是否为黄灯;
	{WriteSDIO(ZLG7289_CMD_FLASH);
	WriteSDIO(~(1<<x|1<<y));
	Delay(5);
	ZLG7289_DISABLE();
	Delay(z);}

	
	else
	{
	ZLG7289_DISABLE();
	Delay(z);
	}
	
	}
/*
void led1(void)
{
		ZLG7289_ENABLE();//使zlg7289占有同步串口
		Delay(5);//延时
        WriteSDIO(ZLG7289_CMD_DATA1|0);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(0);//显示个位
		Delay(5);
		WriteSDIO(ZLG7289_CMD_DATA1|6);
		WriteSDIO(0);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_HIDE);
		WriteSDIO(hide[0]);
		Delay(5);
		ZLG7289_DISABLE();
		Delay(100000);
		//i=2;
		}

void led2(void)
{
		ZLG7289_ENABLE();
		WriteSDIO(ZLG7289_CMD_DATA1|1);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(0);//显示个位
		Delay(5);
		WriteSDIO(ZLG7289_CMD_DATA1|5);
		WriteSDIO(0);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_HIDE);
		WriteSDIO(hide[1]);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_FLASH);
		WriteSDIO(~hide[1]);
		//Delay(5);	
		Delay(1);
		//WriteSDIO(ZLG7289_CMD_RST);
		ZLG7289_DISABLE();
		Delay(30000);
		}
		
void led3(void)
{
		ZLG7289_ENABLE();
		WriteSDIO(ZLG7289_CMD_DATA1|2);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(0);//显示个位
		Delay(5);
		WriteSDIO(ZLG7289_CMD_DATA1|4);
		WriteSDIO(0);
		Delay(5);
		WriteSDIO(ZLG7289_CMD_HIDE);
		WriteSDIO(hide[2]);
		
		Delay(50);
		//WriteSDIO(ZLG7289_CMD_RST);
		ZLG7289_DISABLE();
		Delay(100000);}
		
		*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -