700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言屏幕字体滚动显示 想实现显示屏上文字向上滚动的操作 哪位大大能帮忙啊...

C语言屏幕字体滚动显示 想实现显示屏上文字向上滚动的操作 哪位大大能帮忙啊...

时间:2022-01-11 21:58:36

相关推荐

C语言屏幕字体滚动显示 想实现显示屏上文字向上滚动的操作 哪位大大能帮忙啊...

我在编写stm32实现can总线通信的程序,在循环模式下,传输的数据比较多,屏幕无法全部显示,于是就想在每次显示数据之前加入一个可以将之前的数据向上推移的程序。哪位大大能给出程序么?或者给点其他的建议。

部分程序如下,比较简单,我是初学者,红字部分是我想加入的地方。请问有其他好的建议么。

#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h"

#include "beep.h"

#include "key.h"

#include "exti.h"

#include "wdg.h"

#include "timer.h"

#include "tpad.h"

#include "oled.h"

#include "lcd.h"

#include "usmart.h"

#include "rtc.h"

#include "wkup.h"

#include "adc.h"

#include "dac.h"

#include "dma.h"

#include "24cxx.h"

#include "flash.h"

#include "rs485.h"

#include "can.h"

int main(void)

{

u8 key;

u8 i=0,t=0,j=0,k=0;

u8 date[2][16]={{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}};

u8 cnt;

u8 canbuf[8];

u8 res;

u8 mode=1;//CAN工作模式;0,普通模式;1,环回模式

Stm32_Clock_Init(9);//系统时钟设置

uart_init(72,9600); //串口初始化为9600

delay_init(72); //延时初始化

LED_Init(); //初始化与LED连接的硬件接口

LCD_Init(); //初始化LCD

usmart_dev.init(72);//初始化USMART

KEY_Init();//按键初始化

CAN_Mode_Init(1,8,7,5,mode);//CAN初始化,波特率450Kbps

&nbsp

OINT_COLOR=RED;//设置字体为红色

LCD_ShowString(60,50,200,16,16,"WarShip STM32");

LCD_ShowString(60,70,200,16,16,"CAN TEST");

LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");

LCD_ShowString(60,110,200,16,16,"/9/11");

LCD_ShowString(60,130,200,16,16,"LoopBack Mode");

LCD_ShowString(60,150,200,16,16,"KEY0:Send WK_UP:Mode");//显示提示信息

&nbsp

OINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(60,170,200,16,16,"Count:");//显示当前计数值

LCD_ShowString(60,190,200,16,16,"Receive Data:");//提示收到的数据

while(1)

{

key=KEY_Scan(0);

if(key==KEY_RIGHT)//KEY0按下,发送一次数据

{

for(k=0;k<2;k++)

{

for(j=0;j<2;j++)

{

for(i=0;i<8;i++)

{

canbuf=date[k][i+8*j];//填充发送缓冲区

}

res=Can_Send_Msg(canbuf,8);//发送8个字节

if(res)LCD_ShowString(60+80,190,200,16,16,"Failed");//提示发送失败

else LCD_ShowString(60+110,190,200,16,16,"OK"); //提示发送成功

key=Can_Receive_Msg(canbuf);

if(key)//接收到有数据

{

LCD_Fill(60,270,130,310,WHITE);//清除之前的显示

for(i=0;i

LCD_ShowxNum(i*32,210+20*j,canbuf,2,16,0X80);//显示数据

}//屏幕向上滚动 40

}

}

}else if(key==KEY_UP)//WK_UP按下,改变CAN的工作模式

{

mode=!mode;

CAN_Mode_Init(1,8,7,5,mode);//CAN普通模式初始化,普通模式,波特率450Kbps

&nbsp

OINT_COLOR=RED;//设置字体为红色

if(mode==0)//普通模式,需要2个开发板

{

LCD_ShowString(60,130,200,16,16,"Nnormal Mode ");

}else //回环模式,一个开发板就可以测试了.

{

LCD_ShowString(60,130,200,16,16,"LoopBack Mode");

}

&nbsp

OINT_COLOR=BLUE;//设置字体为蓝色

}

t++;

delay_ms(10);

if(t==20)

{

LED0=!LED0;//提示系统正在运行

t=0;

cnt++;

LCD_ShowxNum(60+48,170,cnt,3,16,0X80);//显示数据

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。