stm32点阵移动程序.docVIP

  • 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)

1亿VIP精品文档

相关文档