zoukankan      html  css  js  c++  java
  • 鸿蒙开发板Hi3861模拟SPI驱动JLX_LCD_基于code-2.0-CANARY

    鸿蒙开发板Hi3861模拟SPI驱动JLX_LCD12864显示屏液晶屏_基于code-2.0-CANARY

    2.0支持windows编译与上传,不需要ubuntu编译
    环境搭建需要有耐心:

    https://www.cnblogs.com/txwtech/p/15041927.html

    首先学会点亮LED的实验

    https://www.cnblogs.com/txwtech/p/15139405.html
    ————————————————
    版权声明:本文为CSDN博主「txwtech」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/txwtech/article/details/120190704

     

     

     

    //
    //,by txwtech2021.9
    #include "_ansi.h"
    #include <stdio.h> 
    #include "ohos_init.h"
    #include "cmsis_os2.h"
    #include "iot_gpio.h"
    #include "hi_io.h"
    #include "iot_pwm.h"
    #include "hi_pwm.h"          
    #include "font.h"
    
    #define Rom_IN HI_IO_NAME_GPIO_13 //1// 字库 IC 接口定义:Rom_IN 就是字库 IC 的 SI 
    #define Rom_OUT HI_IO_NAME_GPIO_14//2//字库 IC 接口定义:Rom_OUT 就是字库 IC 的 SO 
    #define Rom_SCK HI_IO_NAME_GPIO_3 //3//字库 IC 接口定义:Rom_SCK 就是字库 IC 的 SCK 
    #define Rom_CS HI_IO_NAME_GPIO_4 //4//MOSI,,字库 IC 接口定义 Rom_CS 就是字库 IC 的 CS# ,MOSI
    
    #define lcd_sclk HI_IO_NAME_GPIO_8 //8//蓝INT0,SCLK,中断0,接口定义:lcd_sclk 就是 LCD 的 SCLK ,INT0,中断0,txianwu
    #define lcd_sid HI_IO_NAME_GPIO_9 //9//TXD,SDA,接口定义:lcd_sid 就是 LCD 的 SDA, by txwtech 
    #define lcd_rs HI_IO_NAME_GPIO_10 ////10//灰RXD,接口定义:lcd_rs 就是 LCD 的 RS,也叫“CD” txwtech,txianwu
    #define lcd_reset HI_IO_NAME_GPIO_11 //11//    接口定义:lcd_reset 就是 LCD 的 RESET 
    #define lcd_cs1 HI_IO_NAME_GPIO_12 //12//,接口定义:lcd_cs1 就是 LCD 的 CS1 ,低电平片选 
    //36x40_6x8
    void display_28x32(unsigned char *dp)
    {
        uint i, j;
        for (j = 0; j<4; j++)
        {
            lcd_address(j + 1, 1);
            for (i = 0; i<28; i++)
            {
                transfer_data_lcd(*dp);     //写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1    
                dp++;
            }
            
        }
        for(uint k=1;k<=3;k++)
        {
          for (j = 0; j<4; j++)
          {
            lcd_address(j + 1, 28*k);
            for (i = 0; i<28; i++)
             {
                transfer_data_lcd(*dp);     //写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1    
                dp++;
             }
            
          }
        }
    
    
        for (j = 0+4; j<4+4; j++)
        {
            lcd_address(j + 1, 1);
            for (i = 0; i<28; i++)
            {
                transfer_data_lcd(*dp);     //写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1    
                dp++;
            }
            
        }
        for(uint k=1;k<=3;k++)
        {
          for (j = 0+4; j<4+4; j++)
          {
            lcd_address(j + 1, 28*k);
            for (i = 0; i<28; i++)
             {
                transfer_data_lcd(*dp);     //写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1    
                dp++;
             }
            
          }
        }
        
        
    }
    
    
    
    //显示 128x64 点阵图像 
    void display_128x64(unsigned char *dp) //code is not free, you could contact v ID:txianwu to get full code
    {
        uint i, j;
        for (j = 0; j<8; j++)
        {
            lcd_address(j + 1, 1);
            for (i = 0; i<128; i++)
            {
                transfer_data_lcd(*dp);     //写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1    
                dp++;
            }
        }
    }
    
    
    
    static void jlx12864Task(void *arg)
    {
        (void) arg;
        /*
        #define lcd_reset HI_IO_NAME_GPIO_11 //gpio11,       接口定义:lcd_reset 就是 LCD 的 RESET 
    #define lcd_cs1 HI_IO_NAME_GPIO_12 //gpio12,接口定义:lcd_cs1 就是 LCD 的 CS1 ,低电平片选 
    #define lcd_rs HI_IO_NAME_GPIO_14 ////10//灰RXD,gpio14,接口定义:lcd_rs 就是 LCD 的 RS,也叫“CD” txwtech,txianwu
    #define lcd_sclk HI_IO_NAME_GPIO_10 //8//蓝INT0,gpio10,中断0,接口定义:lcd_sclk 就是 LCD 的 SCLK ,INT0,中断0,txianwu
    #define lcd_sid HI_IO_NAME_GPIO_13 //TXD,gpio13,接口定义:lcd_sid 就是 LCD 的 SDA, by txwtech 
    #define Rom_CS HI_IO_NAME_GPIO_9 //MOSI,gpio9,字库 IC 接口定义 Rom_CS 就是字库 IC 的 CS# ,MOSI
    #define Rom_IN HI_IO_NAME_GPIO_2 //gpio2 字库 IC 接口定义:Rom_IN 就是字库 IC 的 SI 
    #define Rom_OUT HI_IO_NAME_GPIO_4//gpio4字库 IC 接口定义:Rom_OUT 就是字库 IC 的 SO 
    #define Rom_SCK HI_IO_NAME_GPIO_3 //gpio3字库 IC 接口定义:Rom_SCK 就是字库 IC 的 SCK 
        */
        IoTGpioInit(lcd_reset);
        IoTGpioInit(lcd_cs1);
        IoTGpioInit(lcd_rs);  
        IoTGpioInit(lcd_sclk); 
        IoTGpioInit(lcd_sid); 
    
        IoTGpioInit(Rom_CS);
        IoTGpioInit(Rom_IN);  
        IoTGpioInit(Rom_OUT); 
        IoTGpioInit(Rom_SCK); 
        
    
        IoTGpioSetDir(lcd_reset,IOT_GPIO_DIR_OUT);
        IoTGpioSetDir(lcd_cs1,IOT_GPIO_DIR_OUT);
        IoTGpioSetDir(lcd_rs,IOT_GPIO_DIR_OUT);  //
        IoTGpioSetDir(lcd_sclk,IOT_GPIO_DIR_OUT);
        IoTGpioSetDir(lcd_sid,IOT_GPIO_DIR_OUT);  //
    
        IoTGpioSetDir(Rom_CS,IOT_GPIO_DIR_OUT);
        IoTGpioSetDir(Rom_IN,IOT_GPIO_DIR_OUT);  //
        IoTGpioSetDir(Rom_OUT,IOT_GPIO_DIR_OUT);
        IoTGpioSetDir(Rom_SCK,IOT_GPIO_DIR_OUT);  //
    
        
        //hi_gpio_init();
        //hi_io_set_func(lcd_reset,);
         
     
         //while (1)
       // {
           
          
           //clear all dots   
           
           while (1)
           {
             initial_lcd();
             clear_screen();
            // DrawFullScreenImage(gImage_11);
            display_28x32(txw_tech);
             osDelay(500);
    
             clear_screen();
            display_128x64(fish1);                
              osDelay(100);
            //  continue;
    
              clear_screen();
            Dis_str(0,1,"-----Hello-----");
        //    Dis_str(1,1,"-----HarmoneyOS-----");
            osDelay(100);
           clear_screen();
           Dis_str(1,1,"*-welcome home-*");
            //Dis_str(2,31,"welcome home");
             osDelay(100);
    
        //    initial_lcd();
             clear_screen();
            
          /*
          根据arduino12864LCD_SPI_资料,改写
          */
            Dis_str(1,1,"---HarmoneyOS---");
            Dis_str(2,31,"txwtech");
            //Dis_str(3,29,"2021.9.25");
             osDelay(300);
            printf("show JLX LCD symbol
    "); 
        
            //clear_screen();
    
             // Display_char_image(1,1,logo0);
            
           }
           
          
          
      //  }
       
        
    
    }
    static void GpioEntry(void)
    {
        osThreadAttr_t attr={0};
        attr.name="jlx12864Task";
        attr.stack_size=4096;
        attr.priority=osPriorityNormal;
        if(osThreadNew(jlx12864Task,NULL,&attr)==NULL)
        {
            printf("[GpioEntry] create jlx12864Task failed!
    ");
        }
    }
    SYS_RUN(jlx12864Task);
    //SYS_RUN(GpioEntry);
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    hash和history的区别帮助向我一样迷的人弄明白,history和hash
    调用谷歌浏览器的打印所遇到的困难,回流重绘
    webpack简单搭建基础感悟
    linux
    介绍一下call,apply,bind方法实现,源于MDN中的bind
    二进制流转base64加快速度
    手写一个instanceof
    青蛙跳台阶问题
    Django中vue的使用
    pip install 出现 timeout 时的两个临时解决办法
  • 原文地址:https://www.cnblogs.com/txwtech/p/15340228.html
Copyright © 2011-2022 走看看