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

📄 led.c

📁 arm7 实验箱 关于步进直流电机驱动程序和步进电机的一些应用
💻 C
字号:
/****************************************Copyright (c)**************************************************/
/**                                
;**                                 西南科技大学计算机科学学院
;**                                   
;**                                http://www.cs.suswt.edu.cn
;**            
;**             日期:  2007/08/09 
;**             描述:  西南科技大学计算机学院CS-II型实验板LED灯驱动工作程序 
;**             作者:
;**
;**--------------led.c文件
;**------------------------------------------------------------------------------------------------------*/

/**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
 #define _LED_C
 #ifdef  _LED_C
/******************************
 *      Head File             *
 *****************************/
 #include"led.h"
/******************************
 *     Global Variable        *
 *****************************/

/******************************
 *	   Const Segment          *
 *****************************/
                                      //0    1    2    3    4    5    6    7    8    9 
 const uint8 led_dis_content[0x10] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6,
                                       //a    b    c    d   e     f
                                      0xee,0x3e,0x9c,0x7a,0x9e,0x8e};	
 uint8 led_dis_mem[LED_NUMBER] ;                                          //显示缓存
 uint8 led_dis_bit = 0x00;                                                //扫描函数中用于显示哪一个数据,做led_dis_content[]的参数
 uint8 led_dis_pos = 0xfe;                                                //片选位
/******************************
 *      Function  Implement   *
 *****************************/
 
/*******************************************************************************
Function Name:	void LEDInit(void)          								   *
Description  :	LED初始化设置,主要设置引脚连接模块和输入输出方向			   *	
*******************************************************************************/
void LEDInit(void)
 {
 	PINSEL1 &= LED_MAT;                                                   //引脚连接模块设置,选择P0.17 P0.18 P0.20做GPIO
 	IO0DIR |= LED_SRCLK;                                                  //方向输出
 	IO0DIR |= LED_RCLK;
 	IO0DIR |= LED_SER;
 	IO0DIR &= LED_KEY^0xffffffff;                                         //方向为输入 
 	 	
 }
 
/*******************************************************************************
Function Name:	void LEDSendData(uint8 disdata,uint8 dispos)				   *
Description  :	LED数据传输,包括8位片选位和8位显示数据位。采用串行传输,其中  *
                硬件连接中涉及到了74HC595芯片,编程中涉及到RCK,SRCK,SI。	   *	
*******************************************************************************/
 void LEDSendData(uint8 disdata,uint8 dispos)
 {
 	uint16 datatmp = 0x0000;
 	uint8 tmp = 0x00; 	
 	datatmp = ((datatmp|disdata)<<8)|dispos;
 	
 	IO0CLR = LED_RCLK ;
 	for(tmp = 0x00;tmp<0x10;tmp++)
 	{
 		IO0CLR = LED_SRCLK;
 		if(datatmp&0x01==0x01)
 		{	
 			IO0SET = LED_SER;                                              // 通过SI口接收每位数据
 		}
 		else
 		{
 			IO0CLR = LED_SER; 		
 		}
 		datatmp = datatmp>>1;
 		IO0SET = LED_SRCLK; 	                                           //SCK的高电平发出移位信号,每位数据都移动到下一个移位寄存器中	
 	}
 	IO0SET = LED_RCLK; 	                                                   //遇到同步发送脉冲RCK时,将多位数据一次发送到寄存器中,形成一多位的并行数据。
 }
 
/*******************************************************************************
Function Name:	void LEDScan(void)          								   *
Description  :	LED扫描函数,常规的数码管扫描方法。             			   *	
*******************************************************************************/  
void LEDScan(void)
 {
 	LEDSendData(led_dis_mem[led_dis_bit],led_dis_pos);                     //某一行显示某种数据
 	led_dis_bit++;                                                         //下一行需要的数据
 	led_dis_pos = (led_dis_pos<<1)|0x01;                                   //选中下一行
 	if(led_dis_bit == LED_NUMBER)
 	{
 		led_dis_bit = 0x00;
 		led_dis_pos = 0xfe;
 	}
 }
 
/*******************************************************************************
Function Name:	void LEDPrint(uint32 disdata)     							   *
Description  :	LED显示函数。形参为32位的disdata。在使用实参时用0x的方式进行输 *
                入,如0x2007f1fa可得到2007f1fa的直接显示。根据前面设置的显示范 *
                围为0-9,a-f,这里可以直接输出存在缓存中的这些数字。	
*******************************************************************************/  
 void LEDPrint(uint32 disdata)
 {
 	uint8 tmp;
 	for(tmp=0x00;tmp<0x08;tmp++)
 	{ 		
 		led_dis_mem[tmp] = led_dis_content[disdata&0x0000000f];
 		disdata = disdata>>4;
 	}
 	 	
 }
 #endif
/*******************************************************************************
 *                        The end of the entire file			               *
 ******************************************************************************/

⌨️ 快捷键说明

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