- 6
- 0
- 约1.34万字
- 约 14页
- 2020-02-18 发布于安徽
- 举报
.
Word 文档
此程序是用的flash里面装的字库的方法来做的,可以显示各种字和字符,可以各种移动,左移,右移,上下移动都可以。
以下是该程序的主要代码(所谓的主要代码就是跟移动有关的代码)
/**************************************************************************************************
**程序名称:LedDisplay(void)
**输入参数:无
**输出参数:无
**返 回 值:无
**描 述:LED显示板一行显示程序。此程序读取显示缓存中的数据,并在LED上显示出来。
** 注:此程序显示的字模为纵向取模。
**************************************************************************************************/
void LedDisplay(void)
{
uint16_t offset_addr;
uint16_t lenght;
uint8_t *data;
// #ifdef OS_TICKS_PER_SEC //如果时钟节拍数定义了,说明要使用ucosII了.
// OS_CPU_SR cpu_sr = 0u;
// OS_ENTER_CRITICAL();
// #endif
offset_addr = (ScanRow / 8) * LED_SET.Width ;
LedScanTime = 0;
/*关显示(消隐)*/
if(!LED_SET.ENMode)
{
LedEn_H(); //关显示
}
else
{
LedEn_L();
}
lenght = LED_SET.Width;
/* 输出列数据*/
if(!BackFlag)
{
data = Buf0 + offset_addr;
while(lenght--)
{
LedOutBit(*data,ScanRow);
data ++;
}
}
else
{
data = Buf1 + offset_addr;
while(lenght--)
{
LedOutBit(*data,ScanRow);
data ++;
}
}
LedClk_L();
LedLat_L(); //锁存数据
LedDelay(10);
LedLat_H();
LedDelay(10);
LedLat_L();
offset_addr = LedScanTime;
/*关显示(消隐)*/
if(!LED_SET.ENMode)
{
LedEn_H(); //关显示
}
else
{
LedEn_L();
}
/* 输出行扫描信号*/
ScanRow = 0x0F;
LedRow(ScanRow);
ScanRow ++; //行+1
if(ScanRow == LED_SET.ScanMode) //16
{
ScanRow = 0;
}
if(ScanRow == LED_SET.FirstRow) //如果完成一帧扫描,置标志,扫描完16行
{
ScanFlag = 1; //只有当ScanFlag = 1时,才能切换显示内容
}
else
{
ScanFlag = 0;
}
// #ifdef OS_TICKS_PER_SEC //如果时钟节拍数定义了,说明要使用ucosII了.
// OS_EXIT_CRITICAL();
// #endif
LedDelay(LED_SET.BlankTime); //消隐时间
if(LED_SET.OnOff == ON) //如果显示屏配置为显示,则开显示
{
if(!LED_SET.ENMode)
{
LedEn_L(); //开显示
}
else
{
LedEn_H();
}
}
}
void Get_HzMat(unsigned char *code,unsigned char *mat,uint8_t size)
{
unsigned char qh,ql;
unsigned char i;
unsign
原创力文档

文档评论(0)