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

📄 matrix.c

📁 arm7平台上的点阵屏操作
💻 C
字号:
/****************************************Copyright (c)**************************************************/
/**                                
;**                                 西南科技大学计算机科学学院
;**                                   
;**                                http://www.cs.suswt.edu.cn
;**            
;**             日期:  2007/09/20
;**             描述:  西南科技大学计算机学院CS-II型实验板点阵屏驱动工作程序,这里默认字库为“我型我秀”四个字,
;**                     根据实际可添加其他尽字库。
;**                     使用方法:首先初始化,然后将MATRIXScan()函数放入定时器或while中,再调用MATRIXPrintFont()
;**                     调用需要的字库数据。
;**             作者:  夏涛
;**
;**--------------matrix.c文件
;**------------------------------------------------------------------------------------------------------*/

/**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define _MATRIX_C_
#ifdef  _MATRIX_C_

/************************************************
 *          Header File                         * 
 ***********************************************/
 #include"matrix.h"
 #include"config.h"
/************************************************
 *          Globale variable					*
 ***********************************************/
 uint8  matrix_dis_bit = 0x00;
 uint16 matrix_dis_pos = 0x0001;
 uint16 matrix_mem[MATRIX_NUMBER]; 

 const uint16 matrix_font_data[][16] = {     
 /*--  文字:  我  --*/                       
 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
 0xF9BF,0xC7AF,0xF7B7,0xF7B7,0xF7BF,0x0001,0xF7BF,0xF7B7,0xF1D7,0xC7CF,0x37DF,0xF7AF,0xF66D,0xF7F5,0xD7F9,0xEFFD,
 /*--  文字:  型  --*/
 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
 0xFFFB,0x807B,0xEDDB,0xEDDB,0x001B,0xEDDB,0xEDDB,0xDDDB,0xDDFB,0xBEEB,0xFEF7,0xC003,0xFEFF,0xFEFF,0x0001,0xFFFF,
 /*--  文字:  我  --*/
 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
 0xF9BF,0xC7AF,0xF7B7,0xF7B7,0xF7BF,0x0001,0xF7BF,0xF7B7,0xF1D7,0xC7CF,0x37DF,0xF7AF,0xF66D,0xF7F5,0xD7F9,0xEFFD,
 /*--  文字:  秀  --*/
 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
 0xFF07,0xC0FF,0xFEFF,0x8001,0xFC3F,0xF2CF,0xCEF1,0x3EFB,0xE00F,0xFDDF,0xFDBF,0xFB03,0xFBFB,0xF7FB,0xEFD7,0xDFEF
 };                                          //利用字库软件生成字库
/******************************
 *      Function  Implement   *
 *****************************/
 
/******************************************************************************
 * Function Name:    void MATRIXSendData(uint16 disdata,uint16 dispos)        *
 * Description  :	 串行发送16为数据位和16为片选位         				  *
 *****************************************************************************/
void MATRIXSendData(uint16 disdata,uint16 dispos)
{
 	uint8 tmp;
 	IO0CLR = MATRIX_RCLK ;                  //同步发送脉冲RCK
 	for(tmp=0x00;tmp<0x10;tmp++)             
 	{
 		IO0CLR = MATRIX_SRCLK;              
 		if((disdata&0x8000)==0x00)           //    高---------------------------->低 (0亮)
 		{	                                 //    * * * * * * * * * * * * * * * *
 			IO0CLR = MATRIX_SI_Y;           //  高*   
 		}                                    //  | *
 		else                                 //  | *
 		{                                    //  | *
 			IO0SET = MATRIX_SI_Y; 		     //  | *
 		}                                    //  | *
 		if((dispos&0x8000)==0x00)            //  | *  
 		{                                    //  | *
 			IO0CLR = MATRIX_SI_X;           //  | * 
 		}                                    //  | *
 		else                                 //  | *
 		{                                    //  | *
 			IO0SET = MATRIX_SI_X;           //  | *
 		}                                    // 低 *
 		disdata = disdata<<1;                //    *
 		dispos = dispos<<1; 		         // (1亮)
 		IO0SET = MATRIX_SRCLK; 		
 	}  	
 	IO0SET = MATRIX_RCLK ; 	
}

/******************************************************************************
 * Function Name:  void MATRIXInit(void)                                      *
 * Description  :  点阵初始化设置,包括引脚连接模块和输入输出设置	          *
 *****************************************************************************/
void MATRIXInit(void)
{
 	PINSEL1 &= MATRIX_MAT;                  //引脚连接模块设置,这里选择P0.17~P0.20作GPIO
 	IO0DIR |= MATRIX_SRCLK;                 //方向输出
 	IO0DIR |= MATRIX_RCLK;
 	IO0DIR |= MATRIX_SI_X;
 	IO0DIR |= MATRIX_SI_Y;        
 	MATRIXSendData(0xffff,0x0000);           //初始化矩阵内数据,初始无显示
}								   

/******************************************************************************
 * Function Name:   void MATRIXScan(void)                                     *
 * Description  :	点阵扫描函数,依次扫描显示一行数据      				  *
 *****************************************************************************/										
void MATRIXScan(void)
{
	MATRIXSendData(matrix_mem[matrix_dis_bit],matrix_dis_pos);
	matrix_dis_bit++;
	matrix_dis_pos = (matrix_dis_pos<<1)&0xfffe;
	if(matrix_dis_bit == 0x10)
	{
		matrix_dis_bit = 0x00; 
		matrix_dis_pos = 0x0001;
	}
}

/******************************************************************************
 * Function Name:   void MATRIXPrintFont(uint16 FontNumber)                   *
 * Description  :	点阵显示函数,显示当前缓冲区的数据      				  *
 *****************************************************************************/
void MATRIXPrintFont(uint16 FontNumber)
{
	uint8 tmp;
	for(tmp=0x00;tmp<0x10;tmp++)
	{
		matrix_mem[tmp] = matrix_font_data[FontNumber][tmp]; //调用字库
	}
}

#endif
/*****************************************************************************
 *                         End of Entire File                                *
 ****************************************************************************/


⌨️ 快捷键说明

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