欢迎来到天天文库
浏览记录
ID:49770433
大小:91.50 KB
页数:14页
时间:2020-03-04
《stm32 点阵移动程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、此程序是用的flash里面装的字库的方法来做的,可以显示各种字和字符,可以各种移动,左移,右移,上下移动都可以。以下是该程序的主要代码(所谓的主要代码就是跟移动有关的代码)/****************************************************************************************************程序名称:LedDisplay(void)**输入参数:无**输出参数:无**返回值:无**描述:LED显示板一行显示程序。此程序读取显示缓存中的数据,并在LED上显示出来。**注:此程序显示的字模为纵向取模。****
2、**********************************************************************************************/voidLedDisplay(void){uint16_toffset_addr;uint16_tlenght;uint8_t*data;//#ifdefOS_TICKS_PER_SEC//如果时钟节拍数定义了,说明要使用ucosII了.//OS_CPU_SRcpu_sr=0u;//OS_ENTER_CRITICAL();//#endifoffset_addr=(ScanRow/8)*LED_SET
3、.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
4、();//锁存数据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++;//行+1if(ScanRow==LED_SET.ScanMode)//16{ScanRow=0;}if(ScanRow==LED_SET.FirstRow)//如果完成一帧扫描,置标志,扫描完16行{
5、ScanFlag=1;//只有当ScanFlag=1时,才能切换显示内容}else{ScanFlag=0;}//#ifdefOS_TICKS_PER_SEC//如果时钟节拍数定义了,说明要使用ucosII了.//OS_EXIT_CRITICAL();//#endifLedDelay(LED_SET.BlankTime);//消隐时间if(LED_SET.OnOff==ON)//如果显示屏配置为显示,则开显示{if(!LED_SET.ENMode){LedEn_L();//开显示}else{LedEn_H();}}}voidGet_HzMat(unsignedchar*code,unsi
6、gnedchar*mat,uint8_tsize){unsignedcharqh,ql;unsignedchari;unsignedlongfoffset;#ifOS_CRITICAL_METHOD==3//中断函数被设定为模式3OS_CPU_SRcpu_sr=0u;#endifqh=*code;ql=*(++code);if(qh<0x81
7、
8、ql<0x40
9、
10、ql==0xff
11、
12、qh==0xff)//非常用汉字,没有包含在字库内{for(i=0;i<(size*2);i++){*mat++=0x00;//填充满格}return;//结束访问}if(ql<0x7f){ql-=0x40
13、;//注意!}else{ql-=0x41;}qh-=0x81;foffset=((unsignedlong)190*qh+ql)*(size*2);//得到字库中的字节偏移量#ifdefOS_TICKS_PER_SEC//如果时钟节拍数定义了,说明要使用ucosII了.OS_ENTER_CRITICAL();#endifFlashBusy^=1;SPI_FLASH_BufferRead(mat,GBK16_ADDR+foffset,32);//
此文档下载收益归作者所有