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

📄 led.c

📁 这是一个在arm上进行led驱动的程序,利用本程序可以将arm中的led驱动起来!
💻 C
字号:
/****************************************************************************/
/*                                                                          */
/* FILE NAME                                      VERSION                   */
/*                                                                          */
/* LED.C                                            1.0                     */
/*                                                                          */
/* DESCRIPTION                                                              */
/*                                                                          */
/*     JX44B0(S3C44B0X)数码管显示实验                                       */
/*                                                                          */
/*                                                                          */
/* DATA STRUCTURES                                                          */
/*                                                                          */
/* FUNCTIONS :                                                              */
/*     在JX44B0教学实验箱数码管上循环显示字符'0'到字符'F'                   */
/*                                                                          */
/* DEPENDENCIES                                                             */
/*     JX44B0-1                                                             */
/*     JX44B0-2                                                             */
/*     JX44B0-3                                                             */
/*                                                                          */
/*                                                                          */
/* NAME:                                                                    */
/* REMARKS:                                                                 */
/*                                                                          */
/*								Copyright (C) 2003 Wuhan CVTECH CO.,LTD     */
/****************************************************************************/

/****************************************************************************/
/* 显示码表                                                                 */
/* 七段数码管结构:                                                         */
/*         A                                                                */
/*     --------                                                             */
/*     |      |                                                             */
/*    F|      |B                                                            */
/*     |   G  |                                                             */
/*     --------                                                             */
/*     |      |                                                             */
/*    E|      | C                                                           */
/*     |      |                                                             */
/*     --------                                                             */
/*         D                                                                */
/*                                                                          */
/* 七段数码管显示原理:                                                     */
/*    JX44B0采用共阳方式连接,为1时点亮、为0时熄灭                          */
/*                                                                          */
/*  七段数码管字符与码段对应表                                              */
/*字符 DP	G	F	E	D	C	B	A	段码(共阴)	段码(共阳)              */
/*  0	0	0	1	1	1	1	1	1	3FH	        C0H                     */ 
/*  1	0	0	0	0	0	1	1	0	06H	        F9H                     */
/*  2	0	1	0	1	1	0	1	1	5BH	        A4H                     */
/*  3	0	1	0	0	1	1	1	1	4FH	        B0H                     */
/*  4	0	1	1	0	0	1	1	0	66H	        99H                     */
/*  5	0	1	1	0	1	1	0	1	6DH	        92H                     */
/*  6	0	1	1	1	1	1	0	1	7DH	        82H                     */
/*  7	0	0	0	0	0	1	1	1	07H	        F8H                     */
/*  8	0	1	1	1	1	1	1	1	7FH	        80H                     */
/*  9	0	1	1	0	1	1	1	1	6FH	        90H                     */
/*  A	0	1	1	1	0	1	1	1	77H	        88H                     */
/*  B	0	1	1	1	1	1	0	0	7CH	        83H                     */
/*  C	0	0	1	1	1	0	0	1	39H	        C5H                     */
/*  D	0	1	0	1	1	1	1	0	5EH	        A1H                     */
/*  E	0	1	1	1	1	0	0	1	79H	        86H                     */
/*  F	0	1	1	1	0	0	0	1	71H	        8EH                     */
/*  -	0	1	0	0	0	0	0	0	40H	        BFH                     */
/*  .	1	0	0	0	0	0	0	0	80H	        7FH                     */
/*熄灭	0	0	0	0	0	0	0	0	00H	        FFH                     */
/****************************************************************************/
unsigned char seg7table[16] = 
{
    /* 0       1       2       3       4       5       6      7*/
    0xc0,   0xf9,   0xa4,   0xb0,   0x99,   0x92,   0x82,   0xf8,

    /* 8       9      A        B       C       D       E      F*/
    0x80,   0x90,   0x88,   0x83,   0xc6,   0xa1,   0x86,   0x8e,
};

#define U8 unsigned char
static int delayLoopCount=1000;

void Delay(int time);
void display_seg7();
void flash_seg7();
void Test_Seg7(void);

/****************************************************************************/
/* 函数说明: EB44B0 7段构共阳数码管测试                                     */
/* 功能描述: 依次在7段数码管上显示0123456789ABCDEF                          */
/* 返回代码: 无                                                             */
/* 参数说明: 无                                                             */
/****************************************************************************/
void Test_Seg7(void)
{    
	int i;
	
	/* 设置数码管段选,某位为0时选择,下面同时选中所有数码管 */
	*((U8*) 0x02000006) = 0x00;		
	 
	for( ; ; )
	{
		/* 数码管从0到F依次将字符显示出来 */
	    for(i=0;i<0x10;i++)
		{
			/* 查表并输出数据 */
	    	*((U8*) 0x02000004) = seg7table[i];    
	    	Delay (1000);   	   
   		}
		
		/* 数码管从F到0依次将字符显示出来 */
		for(i=0xf;i>=0x0;i--)
		{
	   		/* 查表并输出数据 */
	   		*((U8*) 0x02000004) = seg7table[i];    
	   		Delay (1000);		
	 	}
	 }
}


/****************************************************************************/
/* 函数说明: EB44B0 7段构共阳数码管测试                                     */
/* 功能描述: 依次在不同的段数码管上显示0~9                                  */
/* 返回代码: 无                                                             */
/* 参数说明: 无                                                             */
/****************************************************************************/
void flash_seg7(void)
{    
	int i = 0;
	int index = 0;
	
	*((U8*) 0x02000006) = 0x3f;		/* 关闭所有数码管 */
	 
	for( ; ; )
	{
		/* 设置数码管段选 */
		*((U8*) 0x02000006) = 0x3f & ~(0x01 << index);
		
		/* 查表并输出数据 */
    	*((U8*) 0x02000004) = seg7table[i];    
    	Delay (800);   	   
   		
   		i++;
   		i %= 10;
		
		index ++;
		index %= 6;
	 }
}

/****************************************************************************/
/* 函数说明: EB44B0 7段构共阳数码管测试                                     */
/* 功能描述: 在数码管上显示123456                                           */
/* 返回代码: 无                                                             */
/* 参数说明: 无                                                             */
/****************************************************************************/
void display_seg7(void)
{    
	int index = 0;
	int sleep = 0;
	
	for( ; ; )
	{
		/* 设置数码管段选 */
		*((U8*) 0x02000006) = 0x3f & ~(0x01 << 0);
    	*((U8*) 0x02000004) = seg7table[(index+0)%10];
    	
    	Delay (10);

		/* 设置数码管段选 */
		*((U8*) 0x02000006) = 0x3f & ~(0x01 << 1);
    	*((U8*) 0x02000004) = seg7table[(index+1)%10];
    	
    	Delay (10);
    	
		/* 设置数码管段选 */
		*((U8*) 0x02000006) = 0x3f & ~(0x01 << 2);
    	*((U8*) 0x02000004) = seg7table[(index+2)%10];
    	
    	Delay (10);

		/* 设置数码管段选 */
		*((U8*) 0x02000006) = 0x3f & ~(0x01 << 3);
    	*((U8*) 0x02000004) = seg7table[(index+3)%10];
    	
    	Delay (10);

		/* 设置数码管段选 */
		*((U8*) 0x02000006) = 0x3f & ~(0x01 << 4);
    	*((U8*) 0x02000004) = seg7table[(index+4)%10];
    	
    	Delay (10);

		/* 设置数码管段选 */
		*((U8*) 0x02000006) = 0x3f & ~(0x01 << 5);
    	*((U8*) 0x02000004) = seg7table[(index+5)%10];
    	
    	Delay (10);   	   
    	
    	sleep++;
    	
    	if( (sleep % 50) == 0 )
    	{
    		index++;
	    	index %= 10;
    	}
   	}
}

/****************************************************************************/
/* Function name : 循环延时子程序                                           */
/* Description	 : 循环 'time' 次                                           */
/* Return type	 :void                                                     */
/* Argument      : 循环延时计数器                                           */
/****************************************************************************/
void Delay(int time)
{
    int i;
    for(;time>0;time--)
		for(i=0;i<delayLoopCount;i++);
}


void Main()
{
	Test_Seg7();
}

⌨️ 快捷键说明

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