📄 matrix.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 + -