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

📄 dataled.c

📁 周立功开发板
💻 C
字号:
/****************************************Copyright (c)**************************************************/
/**                                
;**                                 西南科技大学计算机科学学院
;**                                   
;**                                http://www.cs.suswt.edu.cn
;**            
;**             日期:   2007.09.21
;**             描述:   dataled.c 西南科技大学计算机学院CS-II型实验板数码管工作程序,控制
;**                      数码管底层显示功能,负责将数据传输到目标
;**             作者:   miracle
;**
;**--------------dataled.c文件
;**------------------------------------------------------------------------------------------------------*/

/**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define _DATALED_C_
#ifdef  _DATALED_C_

/************************************************
 *          Header File                         * 
 ***********************************************/
#include "dataled.h"
#include "config.h"

/************************************************
 *          Globale variable					*
 ***********************************************/
 
const  uint8 gc_display_code[LEDCODENUMBER]={
									            0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
               							        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
               							    };
uint8 gc_dataled_buffer[8];
//uint8 Ret_Ledkey = 0xff;
uint8 gc_ptr_bit = 0x00;
uint8 gc_dis_bit = 0x7f;



/******************************************************************************
 * Function Name:   LEDDelayNS                                                          *
 * Description  :	延时函数														  *
 *****************************************************************************/
void  LEDDelayNS(uint32  dly)
{ 
   for(; dly > 0; dly--) 
   {
	  uint32  i;   
      for(i = 0; i < 5000; i++)
      {
      	;
      }
   }
} 

/******************************************************************************
 * Function Name:  LEDInit                                                           
 * Description  :  初始化数码管模块														  
 *****************************************************************************/
void LEDInit(void)
{
	PINSEL1 &= DATALED_SMAT;
	IO0DIR  |= DATALED_SCK;
    IO0DIR  |= DATALED_RCK;
    IO0DIR  |= DATALED_SI;
    //IO0DIR  &= (DataLed_KEY^0XFFFFFFFF); 
}
/******************************************************************************
 * Function Name: LEDPrint                                                           
 * Description  : 显示函数,将显示代码放入缓冲区。 														 
 *****************************************************************************/
void LEDPrint(uint32 display_msg)
{
	uint8 temp = 0x00;
	while(temp <= (7 * 0x04))	
	{
		gc_dataled_buffer[temp / 4] = gc_display_code[(display_msg >> temp) & 0x0f];
		temp += 4;
	}
}
/******************************************************************************
 * Function Name:  LEDSendDisplay                                                         
 * Description  :  	通过595分别把片选码送给片选端,把缓冲区的显示码送给显示端													  *
 *****************************************************************************/
void LEDSendDisplay(uint8 display_data,uint8 display_number)
{
	uint8 send_count;
	IO0CLR = DATALED_RCK;
	for(send_count = 0x00;send_count < 0x08;send_count++)
	{
		IO0CLR = DATALED_SCK;
		
		if((display_number&(0x01<<send_count)) == 0x00)//注意运算符号的优先级
		{
			 IO0CLR = DATALED_SI;
		}
		else
		{
			IO0SET = DATALED_SI;
		}
		
		//DataLed_SI=DisplayNumber&(0x01<<send_count);
		IO0SET = DATALED_SCK;
	}
	for(send_count = 0x00;send_count < 0x08;send_count++)
	{
		IO0CLR = DATALED_SCK;
		
		if((display_data & (0x80 >> send_count)) == 0x00)
		{
			 IO0CLR = DATALED_SI;
		}
		else
		{
			IO0SET = DATALED_SI;
		}
		
		IO0SET = DATALED_SCK;
	}
	
	IO0SET = DATALED_RCK;
}
 /******************************************************************************
 * Function Name:  LEDScan
 * Description  :  扫描数码管。以达到看上去8个数码管同时亮														  *
 *****************************************************************************/
 void LEDScan(void)
{
	LEDSendDisplay(gc_dataled_buffer[7-gc_ptr_bit],gc_dis_bit);
	/*if((IO0PIN&DataLed_KEY)==DataLed_KEY)
	{
		//speak();
		ret_ledkey=ptr_bit;
	}*/
	//ret_ledkey=led_keyscan();
	gc_dis_bit = ((gc_dis_bit >> 1) | 0x80);
	//Ret_Ledkey = Led_Keyscan();
	gc_ptr_bit++;
	if(gc_ptr_bit == 0x08)
	{
		gc_ptr_bit = 0x00;
		gc_dis_bit = 0x7f;
	}
}
 
#endif
/*****************************************************************************
 *                         End of Entire File                                *
 ****************************************************************************/


⌨️ 快捷键说明

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