12
返回列表 发新帖
楼主: hjq9999

[未解决] 求助大神,想把下面的代码移植到ST7565或者ST7796S上。

[复制链接]

该用户从未签到

 楼主| 发表于 2021-4-15 21:38 | 显示全部楼层
topdog 发表于 2021-4-15 21:36
我没有ST7796S呀。

没有硬件还是库啊

该用户从未签到

 楼主| 发表于 2021-4-16 22:11 | 显示全部楼层
topdog 发表于 2021-4-14 23:54
我的屏管脚分布如图。

版主你好 能用这2个库做个坐标实时显示吗? < LCDWIKI_GUI.h >  
   < LCDWIKI_SPI.h >

签到天数: 119 天

[LV.6]常住居民II

发表于 2021-4-17 00:30 | 显示全部楼层
本帖最后由 topdog 于 2021-4-17 01:12 编辑
hjq9999 发表于 2021-4-16 22:11
版主你好 能用这2个库做个坐标实时显示吗? < LCDWIKI_GUI.h >  
   < LCDWIKI_SPI.h >  ...

用示例改了一下,把你需要的提取出来。

#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library

//定义句柄
LCDWIKI_KBV my_lcd(ILI9341,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset

//显示眉头眉脚的提示
unsigned long show_text(void)
{
    unsigned long time_start = micros();
    my_lcd.Set_Draw_color(32, 0,255);
    my_lcd.Fill_Rectangle(0, 0, my_lcd.Get_Display_Width()-1, 14);
    my_lcd.Set_Text_colour(0, 255, 0);   
    my_lcd.Set_Text_Size(1);
    my_lcd.Set_Text_Mode(1);
    my_lcd.Print_String("* Universal Color TFT Display Library *", CENTER, 3);

    my_lcd.Set_Draw_color(128, 128, 128);
    my_lcd.Fill_Rectangle(0, my_lcd.Get_Display_Height()-15, my_lcd.Get_Display_Width()-1, my_lcd.Get_Display_Height()-1);
    my_lcd.Set_Text_colour(255, 255, 255);   
    my_lcd.Set_Text_Size(1);
    my_lcd.Set_Text_Mode(1);
    my_lcd.Print_String("<https://www.arduino.cn>", CENTER, my_lcd.Get_Display_Height()-11);

    my_lcd.Set_Draw_color(255, 0, 0); 
    my_lcd.Draw_Rectangle(0, 15, my_lcd.Get_Display_Width()-1, my_lcd.Get_Display_Height()-16);   
    return micros() - time_start;
}


//画一个移动的正弦波
unsigned long show_sinewave(void)
{
   uint16_t buf[my_lcd.Get_Display_Width()-2],x = 1,i,y;
   unsigned long time_start = micros();
   int16_t wid = my_lcd.Get_Display_Width();
   int16_t t;
   float k;
   if(wid == 320)
   {
      t = 20;
      k = 1.1; 
   }
   else
   {
     t = 15;
     k = 0.7;  
   }
   my_lcd.Set_Draw_color(0, 0, 255); 
   my_lcd.Draw_Fast_VLine(my_lcd.Get_Display_Width()/2-1, 16, my_lcd.Get_Display_Height()- 32);
   my_lcd.Draw_Fast_HLine(1, my_lcd.Get_Display_Height()/2-1, my_lcd.Get_Display_Width()-2);
   for (i=1; i<((my_lcd.Get_Display_Width()-2)*t); i++) 
   {
      x++;
      if (x==my_lcd.Get_Display_Width()-1)
      {
          x=1;
      }
      if (i>my_lcd.Get_Display_Width()-1)
      {
          if ((x==my_lcd.Get_Display_Width()/2-1)||(buf[x-1]==my_lcd.Get_Display_Height()/2-1))
          {
              my_lcd.Set_Draw_color(0, 0, 255); 
          }
          else
          {
             my_lcd.Set_Draw_color(0, 0, 0); 
          }
          my_lcd.Draw_Pixel(x,buf[x-1]);
    }
    my_lcd.Set_Draw_color(255, 64, 255);
    y=my_lcd.Get_Display_Height()/2-1+(sin(((i*k)*3.14)/180)*(90-(i/100)));
    my_lcd.Draw_Pixel(x,y);
    buf[x-1]=y;
  }
  return micros()- time_start;   
}


//清屏
void clear_screen(void)
{
   delay(2000);  
   my_lcd.Set_Draw_color(0, 0, 0);
   my_lcd.Fill_Rectangle(1, 16, my_lcd.Get_Display_Width()-2, my_lcd.Get_Display_Height()-17);
}

unsigned long (*show_function[])(void) =  {
                                          show_text,                                          
                                          show_sinewave,                                          
                                          };
uint8_t *show_str[]= {
                       "show text                    :",                      
                       "show sinewave                :",                      
                     };

//显示程序的运行时间 
void show_total_time(void)
{
     uint16_t i;
     unsigned long buf[15];
     unsigned long time_start = micros();
     for(i = 0;i< 15;i++)
     {
        buf[i] = show_function[i](); 
        clear_screen();  
     }
     for(i = 0;i<15; i++)
     {
         my_lcd.Set_Text_colour(255, 165, 0);   
         my_lcd.Set_Text_Size(1);
         my_lcd.Set_Text_Mode(1);
         my_lcd.Print_String(show_str[i], (my_lcd.Get_Display_Width()-260)/2-1, (my_lcd.Get_Display_Height()-150)/2+i*10-1);
         my_lcd.Set_Text_colour(0, 255, 0); 
         my_lcd.Print_Number_Int(buf[i], (my_lcd.Get_Display_Width()-260)/2-1+200, (my_lcd.Get_Display_Height()-150)/2+i*10-1, 0, ' ', 10);
     }
     delay(1000);     
}


void setup() 
{
  my_lcd.Init_LCD();
  my_lcd.Fill_Screen(0x0);  
  my_lcd.Set_Rotation(1);  
}

void loop() 
{    
    my_lcd.Fill_Screen(0x0); 
    show_total_time();    
}


该用户从未签到

 楼主| 发表于 2021-4-17 11:10 | 显示全部楼层
本帖最后由 hjq9999 于 2021-4-17 11:17 编辑
topdog 发表于 2021-4-17 00:30
用示例改了一下,把你需要的提取出来。

#include  //Core graphics library

感谢感谢,马上来试试。LCDWIKI_KBV my_lcd(ILI9341,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset这个里面的ILI341可以改成ST7796S吗

该用户从未签到

 楼主| 发表于 2021-4-17 11:41 | 显示全部楼层
感谢版主,这个好像也不支持ST7796S的SPI方式,打算买一片ILI9341的屏。

该用户从未签到

 楼主| 发表于 2021-4-17 14:41 | 显示全部楼层
感谢版主 ST7796S可以显示了,还有个没明白的地方,不知道在哪改循[url=]视频[/url]环,现在循环显示这个页面。视频发不了。
QQ图片20210417144103.png

该用户从未签到

 楼主| 发表于 2021-4-21 08:23 | 显示全部楼层
topdog 发表于 2021-4-13 00:44
我只有一块TFT 尺寸是 240x320  驱动芯片 ILI9341 。根据你的需求做了一个坐标实时显示。

#include     // ...

版主 我买了个ILI9341屏,但是忘了看是并口的,能帮忙做个定义吗?谢谢了。

签到天数: 119 天

[LV.6]常住居民II

发表于 2021-4-21 12:45 | 显示全部楼层
hjq9999 发表于 2021-4-21 08:23
版主 我买了个ILI9341屏,但是忘了看是并口的,能帮忙做个定义吗?谢谢了。 ...

http://www.lcdwiki.com/zh/%E9%A6%96%E9%A1%B5#SPI_LCD
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

.h .cpp源代码转.ino草图
.h .cpp源代码转.ino草图
在Github上下载了源码,是.h 和.cpp文件,请问一下,如何才可以转成可以在arduinoIDE
【Arduino】168种传感器模块系列实验(159)---MAX9814咪头传感器
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
blinker 控制42步进电机
blinker 控制42步进电机
刚开始学习esp8266,偶尔发现了blinker,感觉就一神器,满足了我能“看”的要求。想控
【Arduino】168种传感器系列实验(183)---VL53L0X激光测距模块
【Arduino】168种传感器系
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
ps2遥控小车——uno实现
ps2遥控小车——uno实现
前几天在阁楼发现了好久以前3d打印,激光切割的底盘,于是决定做这个东西 正好手上又
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表