TA的每日心情 | 开心 5 天前 |
---|
签到天数: 1077 天 连续签到: 1 天 [LV.10]以坛为家III
|
测试SPI驱动LCD显示屏。
一、硬件部分
1.1、硬件SPI接口部分
使用FC1接口的SPI,对应的电路图部分
1.2、测试的LCD显示模块
接口定义
二、程序部分
2.1、LCD接口硬件配置
2.1.1、SPI引脚配置
2.1.2、控制引脚配置
2.2、SPI初始化部分
spi.c
- #include "main.h"
- void init_spi(void)
- {
- uint32_t srcClock_Hz;
- lpspi_master_config_t masterConfig;
- edma_config_t userConfig = {0};
- /* attach FRO 12M to FLEXCOMM1 */
- CLOCK_SetClkDiv(kCLOCK_DivFlexcom1Clk, 1u);
- CLOCK_AttachClk(kFRO12M_to_FLEXCOMM1);
-
- init_spi1_pins();
-
- /*Master config*/
- LPSPI_MasterGetDefaultConfig(&masterConfig);
- masterConfig.baudRate = TRANSFER_BAUDRATE;
- masterConfig.whichPcs = EXAMPLE_LPSPI_MASTER_PCS_FOR_INIT;
- masterConfig.pcsToSckDelayInNanoSec = 1000000000U / (masterConfig.baudRate * 2U);
- masterConfig.lastSckToPcsDelayInNanoSec = 1000000000U / (masterConfig.baudRate * 2U);
- masterConfig.betweenTransferDelayInNanoSec = 1000000000U / (masterConfig.baudRate * 2U);
- srcClock_Hz = LPSPI_MASTER_CLK_FREQ;
- LPSPI_MasterInit(EXAMPLE_LPSPI_MASTER_BASEADDR, &masterConfig, srcClock_Hz);
- }
- uint8_t spi1_writedat(uint8_t dat)
- {
- uint8_t srcBuff[2];
- uint8_t destBuff[2];
- srcBuff[0]=dat;
- lpspi_transfer_t masterXfer;
- // /*Start master transfer*/
- masterXfer.txData = srcBuff;//masterTxData;
- masterXfer.rxData = destBuff;
- masterXfer.dataSize = 1;
- masterXfer.configFlags =
- EXAMPLE_LPSPI_MASTER_PCS_FOR_TRANSFER | kLPSPI_MasterPcsContinuous | kLPSPI_MasterByteSwap;
- LPSPI_MasterTransferBlocking(EXAMPLE_LPSPI_MASTER_BASEADDR, &masterXfer);
- return destBuff[0];
- }
复制代码
spi.h
- #ifndef __SPI_H
- #define __SPI_H
- #define LPSPI_MASTER_CLK_FREQ CLOCK_GetLPFlexCommClkFreq(1u)
- #define EXAMPLE_LPSPI_MASTER_BASEADDR (LPSPI1)
- #define EXAMPLE_LPSPI_MASTER_PCS_FOR_INIT (kLPSPI_Pcs0)
- #define EXAMPLE_LPSPI_MASTER_PCS_FOR_TRANSFER (kLPSPI_MasterPcs0)
- #define EXAMPLE_LPSPI_MASTER_DMA_BASE DMA0
- #define EXAMPLE_LPSPI_MASTER_DMA_RX_CHANNEL 0U
- #define EXAMPLE_LPSPI_MASTER_DMA_TX_CHANNEL 1U
- #define DEMO_LPSPI_TRANSMIT_EDMA_CHANNEL kDmaRequestMuxLpFlexcomm1Tx
- #define DEMO_LPSPI_RECEIVE_EDMA_CHANNEL kDmaRequestMuxLpFlexcomm1Rx
- #define TRANSFER_SIZE 64U
- #define TRANSFER_BAUDRATE 50000000U
- void init_spi(void);
- uint8_t spi1_writedat(uint8_t dat);
- #endif
复制代码
2.2、lcd驱动程序
lcd_init.c
- #include "main.h"
- void LCD_GPIO_Init(void)
- {
- gpio_pin_config_t spilcd_config = {
- kGPIO_DigitalOutput,
- 0,
- };
-
- CLOCK_EnableClock(kCLOCK_Gpio1);
- init_spi_lcd_pins();
- GPIO_PinInit(LCD_RES_GPIO, LCD_RES_GPIO_PIN, &spilcd_config);
- GPIO_PinInit(LCD_DC_GPIO, LCD_DC_GPIO_PIN, &spilcd_config);
- GPIO_PinInit(LCD_CS_GPIO, LCD_CS_GPIO_PIN, &spilcd_config);
- }
- void LCD_Writ_Bus(uint8_t dat)
- {
- uint8_t i;
- LCD_CS_Clr();
- spi1_writedat(dat);
- LCD_CS_Set();
- }
- void LCD_WR_DATA8(uint8_t dat)
- {
- LCD_Writ_Bus(dat);
- }
- void LCD_WR_DATA(uint16_t dat)
- {
- LCD_Writ_Bus(dat>>8);
- LCD_Writ_Bus(dat);
- }
- void LCD_WR_REG(uint8_t dat)
- {
- LCD_DC_Clr();//写命令
- LCD_Writ_Bus(dat);
- LCD_DC_Set();//写数据
- }
- void LCD_Address_Set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
- {
- if(USE_HORIZONTAL==0)
- {
- LCD_WR_REG(0x2a);//列地址设置
- LCD_WR_DATA(x1+2);
- LCD_WR_DATA(x2+2);
- LCD_WR_REG(0x2b);//行地址设置
- LCD_WR_DATA(y1+1);
- LCD_WR_DATA(y2+1);
- LCD_WR_REG(0x2c);//储存器写
- }
- else if(USE_HORIZONTAL==1)
- {
- LCD_WR_REG(0x2a);//列地址设置
- LCD_WR_DATA(x1+2);
- LCD_WR_DATA(x2+2);
- LCD_WR_REG(0x2b);//行地址设置
- LCD_WR_DATA(y1+1);
- LCD_WR_DATA(y2+1);
- LCD_WR_REG(0x2c);//储存器写
- }
- else if(USE_HORIZONTAL==2)
- {
- LCD_WR_REG(0x2a);//列地址设置
- LCD_WR_DATA(x1+1);
- LCD_WR_DATA(x2+1);
- LCD_WR_REG(0x2b);//行地址设置
- LCD_WR_DATA(y1+2);
- LCD_WR_DATA(y2+2);
- LCD_WR_REG(0x2c);//储存器写
- }
- else
- {
- LCD_WR_REG(0x2a);//列地址设置
- LCD_WR_DATA(x1+1);
- LCD_WR_DATA(x2+1);
- LCD_WR_REG(0x2b);//行地址设置
- LCD_WR_DATA(y1+2);
- LCD_WR_DATA(y2+2);
- LCD_WR_REG(0x2c);//储存器写
- }
- }
- void LCD_Init(void)
- {
-
-
- LCD_GPIO_Init();//初始化GPIO
-
- LCD_RES_Clr();//复位
- SysTick_Delay_ms(100);
- LCD_RES_Set();
- SysTick_Delay_ms(100);
-
- //LCD_BLK_Set();//打开背光
- SysTick_Delay_ms(100);
-
- //************* Start Initial Sequence **********//
- LCD_WR_REG(0x11); //Sleep out
- SysTick_Delay_ms(120); //Delay 120ms
- //------------------------------------ST7735S Frame Rate-----------------------------------------//
- LCD_WR_REG(0xB1);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x3C);
- LCD_WR_DATA8(0x3C);
- LCD_WR_REG(0xB2);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x3C);
- LCD_WR_DATA8(0x3C);
- LCD_WR_REG(0xB3);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x3C);
- LCD_WR_DATA8(0x3C);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x3C);
- LCD_WR_DATA8(0x3C);
- //------------------------------------End ST7735S Frame Rate---------------------------------//
- LCD_WR_REG(0xB4); //Dot inversion
- LCD_WR_DATA8(0x03);
- //------------------------------------ST7735S Power Sequence---------------------------------//
- LCD_WR_REG(0xC0);
- LCD_WR_DATA8(0x28);
- LCD_WR_DATA8(0x08);
- LCD_WR_DATA8(0x04);
- LCD_WR_REG(0xC1);
- LCD_WR_DATA8(0XC0);
- LCD_WR_REG(0xC2);
- LCD_WR_DATA8(0x0D);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0xC3);
- LCD_WR_DATA8(0x8D);
- LCD_WR_DATA8(0x2A);
- LCD_WR_REG(0xC4);
- LCD_WR_DATA8(0x8D);
- LCD_WR_DATA8(0xEE);
- //---------------------------------End ST7735S Power Sequence-------------------------------------//
- LCD_WR_REG(0xC5); //VCOM
- LCD_WR_DATA8(0x1A);
- LCD_WR_REG(0x36); //MX, MY, RGB mode
- if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00);
- else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0);
- else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70);
- else LCD_WR_DATA8(0xA0);
- //------------------------------------ST7735S Gamma Sequence---------------------------------//
- LCD_WR_REG(0xE0);
- LCD_WR_DATA8(0x04);
- LCD_WR_DATA8(0x22);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x0A);
- LCD_WR_DATA8(0x2E);
- LCD_WR_DATA8(0x30);
- LCD_WR_DATA8(0x25);
- LCD_WR_DATA8(0x2A);
- LCD_WR_DATA8(0x28);
- LCD_WR_DATA8(0x26);
- LCD_WR_DATA8(0x2E);
- LCD_WR_DATA8(0x3A);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x01);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0x13);
- LCD_WR_REG(0xE1);
- LCD_WR_DATA8(0x04);
- LCD_WR_DATA8(0x16);
- LCD_WR_DATA8(0x06);
- LCD_WR_DATA8(0x0D);
- LCD_WR_DATA8(0x2D);
- LCD_WR_DATA8(0x26);
- LCD_WR_DATA8(0x23);
- LCD_WR_DATA8(0x27);
- LCD_WR_DATA8(0x27);
- LCD_WR_DATA8(0x25);
- LCD_WR_DATA8(0x2D);
- LCD_WR_DATA8(0x3B);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x01);
- LCD_WR_DATA8(0x04);
- LCD_WR_DATA8(0x13);
- //------------------------------------End ST7735S Gamma Sequence-----------------------------//
- LCD_WR_REG(0x3A); //65k mode
- LCD_WR_DATA8(0x05);
- LCD_WR_REG(0x29); //Display on
- }
复制代码
lcd.c
- #include "main.h"
- #include "spilcd/lcdfont.h"
- void LCD_Fill(uint16_t xsta,uint16_t ysta,uint16_t xend,uint16_t yend,uint16_t color)
- {
- uint16_t i,j;
- LCD_Address_Set(xsta,ysta,xend-1,yend-1);
- for(i=ysta;i<yend;i++)
- {
- for(j=xsta;j<xend;j++)
- {
- LCD_WR_DATA(color);
- }
- }
- }
- void LCD_DrawPoint(uint16_t x,uint16_t y,uint16_t color)
- {
- LCD_Address_Set(x,y,x,y);
- LCD_WR_DATA(color);
- }
- void LCD_DrawLine(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,uint16_t color)
- {
- uint16_t t;
- int xerr=0,yerr=0,delta_x,delta_y,distance;
- int incx,incy,uRow,uCol;
- delta_x=x2-x1;
- delta_y=y2-y1;
- uRow=x1;
- uCol=y1;
- if(delta_x>0)incx=1;
- else if (delta_x==0)incx=0;
- else {incx=-1;delta_x=-delta_x;}
- if(delta_y>0)incy=1;
- else if (delta_y==0)incy=0;
- else {incy=-1;delta_y=-delta_y;}
- if(delta_x>delta_y)distance=delta_x;
- else distance=delta_y;
- for(t=0;t<distance+1;t++)
- {
- LCD_DrawPoint(uRow,uCol,color);
- xerr+=delta_x;
- yerr+=delta_y;
- if(xerr>distance)
- {
- xerr-=distance;
- uRow+=incx;
- }
- if(yerr>distance)
- {
- yerr-=distance;
- uCol+=incy;
- }
- }
- }
- void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2,uint16_t color)
- {
- LCD_DrawLine(x1,y1,x2,y1,color);
- LCD_DrawLine(x1,y1,x1,y2,color);
- LCD_DrawLine(x1,y2,x2,y2,color);
- LCD_DrawLine(x2,y1,x2,y2,color);
- }
- void Draw_Circle(uint16_t x0,uint16_t y0,uint8_t r,uint16_t color)
- {
- int a,b;
- a=0;b=r;
- while(a<=b)
- {
- LCD_DrawPoint(x0-b,y0-a,color); //3
- LCD_DrawPoint(x0+b,y0-a,color); //0
- LCD_DrawPoint(x0-a,y0+b,color); //1
- LCD_DrawPoint(x0-a,y0-b,color); //2
- LCD_DrawPoint(x0+b,y0+a,color); //4
- LCD_DrawPoint(x0+a,y0-b,color); //5
- LCD_DrawPoint(x0+a,y0+b,color); //6
- LCD_DrawPoint(x0-b,y0+a,color); //7
- a++;
- if((a*a+b*b)>(r*r))//判断要画的点是否过远
- {
- b--;
- }
- }
- }
- void LCD_ShowChinese(uint16_t x,uint16_t y,uint8_t *s,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- while(*s!=0)
- {
- if(sizey==12) LCD_ShowChinese12x12(x,y,s,fc,bc,sizey,mode);
- else if(sizey==16) LCD_ShowChinese16x16(x,y,s,fc,bc,sizey,mode);
- else if(sizey==24) LCD_ShowChinese24x24(x,y,s,fc,bc,sizey,mode);
- else if(sizey==32) LCD_ShowChinese32x32(x,y,s,fc,bc,sizey,mode);
- else return;
- s+=2;
- x+=sizey;
- }
- }
- void LCD_ShowChinese12x12(uint16_t x,uint16_t y,uint8_t *s,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- uint8_t i,j,m=0;
- uint16_t k;
- uint16_t HZnum;//汉字数目
- uint16_t TypefaceNum;//一个字符所占字节大小
- uint16_t x0=x;
- TypefaceNum=(sizey/8+((sizey%8)?1:0))*sizey;
-
- HZnum=sizeof(tfont12)/sizeof(typFNT_GB12); //统计汉字数目
- for(k=0;k<HZnum;k++)
- {
- if((tfont12[k].Index[0]==*(s))&&(tfont12[k].Index[1]==*(s+1)))
- {
- LCD_Address_Set(x,y,x+sizey-1,y+sizey-1);
- for(i=0;i<TypefaceNum;i++)
- {
- for(j=0;j<8;j++)
- {
- if(!mode)//非叠加方式
- {
- if(tfont12[k].Msk[i]&(0x01<<j))LCD_WR_DATA(fc);
- else LCD_WR_DATA(bc);
- m++;
- if(m%sizey==0)
- {
- m=0;
- break;
- }
- }
- else//叠加方式
- {
- if(tfont12[k].Msk[i]&(0x01<<j)) LCD_DrawPoint(x,y,fc);//画一个点
- x++;
- if((x-x0)==sizey)
- {
- x=x0;
- y++;
- break;
- }
- }
- }
- }
- }
- continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
- }
- }
- void LCD_ShowChinese16x16(uint16_t x,uint16_t y,uint8_t *s,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- uint8_t i,j,m=0;
- uint16_t k;
- uint16_t HZnum;//汉字数目
- uint16_t TypefaceNum;//一个字符所占字节大小
- uint16_t x0=x;
- TypefaceNum=(sizey/8+((sizey%8)?1:0))*sizey;
- HZnum=sizeof(tfont16)/sizeof(typFNT_GB16); //统计汉字数目
- for(k=0;k<HZnum;k++)
- {
- if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1)))
- {
- LCD_Address_Set(x,y,x+sizey-1,y+sizey-1);
- for(i=0;i<TypefaceNum;i++)
- {
- for(j=0;j<8;j++)
- {
- if(!mode)//非叠加方式
- {
- if(tfont16[k].Msk[i]&(0x01<<j))LCD_WR_DATA(fc);
- else LCD_WR_DATA(bc);
- m++;
- if(m%sizey==0)
- {
- m=0;
- break;
- }
- }
- else//叠加方式
- {
- if(tfont16[k].Msk[i]&(0x01<<j)) LCD_DrawPoint(x,y,fc);//画一个点
- x++;
- if((x-x0)==sizey)
- {
- x=x0;
- y++;
- break;
- }
- }
- }
- }
- }
- continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
- }
- }
- void LCD_ShowChinese24x24(uint16_t x,uint16_t y,uint8_t *s,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- uint8_t i,j,m=0;
- uint16_t k;
- uint16_t HZnum;//汉字数目
- uint16_t TypefaceNum;//一个字符所占字节大小
- uint16_t x0=x;
- TypefaceNum=(sizey/8+((sizey%8)?1:0))*sizey;
- HZnum=sizeof(tfont24)/sizeof(typFNT_GB24); //统计汉字数目
- for(k=0;k<HZnum;k++)
- {
- if ((tfont24[k].Index[0]==*(s))&&(tfont24[k].Index[1]==*(s+1)))
- {
- LCD_Address_Set(x,y,x+sizey-1,y+sizey-1);
- for(i=0;i<TypefaceNum;i++)
- {
- for(j=0;j<8;j++)
- {
- if(!mode)//非叠加方式
- {
- if(tfont24[k].Msk[i]&(0x01<<j))LCD_WR_DATA(fc);
- else LCD_WR_DATA(bc);
- m++;
- if(m%sizey==0)
- {
- m=0;
- break;
- }
- }
- else//叠加方式
- {
- if(tfont24[k].Msk[i]&(0x01<<j)) LCD_DrawPoint(x,y,fc);//画一个点
- x++;
- if((x-x0)==sizey)
- {
- x=x0;
- y++;
- break;
- }
- }
- }
- }
- }
- continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
- }
- }
- void LCD_ShowChinese32x32(uint16_t x,uint16_t y,uint8_t *s,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- uint8_t i,j,m=0;
- uint16_t k;
- uint16_t HZnum;//汉字数目
- uint16_t TypefaceNum;//一个字符所占字节大小
- uint16_t x0=x;
- TypefaceNum=(sizey/8+((sizey%8)?1:0))*sizey;
- HZnum=sizeof(tfont32)/sizeof(typFNT_GB32); //统计汉字数目
- for(k=0;k<HZnum;k++)
- {
- if ((tfont32[k].Index[0]==*(s))&&(tfont32[k].Index[1]==*(s+1)))
- {
- LCD_Address_Set(x,y,x+sizey-1,y+sizey-1);
- for(i=0;i<TypefaceNum;i++)
- {
- for(j=0;j<8;j++)
- {
- if(!mode)//非叠加方式
- {
- if(tfont32[k].Msk[i]&(0x01<<j))LCD_WR_DATA(fc);
- else LCD_WR_DATA(bc);
- m++;
- if(m%sizey==0)
- {
- m=0;
- break;
- }
- }
- else//叠加方式
- {
- if(tfont32[k].Msk[i]&(0x01<<j)) LCD_DrawPoint(x,y,fc);//画一个点
- x++;
- if((x-x0)==sizey)
- {
- x=x0;
- y++;
- break;
- }
- }
- }
- }
- }
- continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
- }
- }
- void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- uint8_t temp,sizex,t,m=0;
- uint16_t i,TypefaceNum;//一个字符所占字节大小
- uint16_t x0=x;
- sizex=sizey/2;
- TypefaceNum=(sizex/8+((sizex%8)?1:0))*sizey;
- num=num-' '; //得到偏移后的值
- LCD_Address_Set(x,y,x+sizex-1,y+sizey-1); //设置光标位置
- for(i=0;i<TypefaceNum;i++)
- {
- if(sizey==12)temp=ascii_1206[num][i]; //调用6x12字体
- else if(sizey==16)temp=ascii_1608[num][i]; //调用8x16字体
- else if(sizey==24)temp=ascii_2412[num][i]; //调用12x24字体
- else if(sizey==32)temp=ascii_3216[num][i]; //调用16x32字体
- else return;
- for(t=0;t<8;t++)
- {
- if(!mode)//非叠加模式
- {
- if(temp&(0x01<<t))LCD_WR_DATA(fc);
- else LCD_WR_DATA(bc);
- m++;
- if(m%sizex==0)
- {
- m=0;
- break;
- }
- }
- else//叠加模式
- {
- if(temp&(0x01<<t))LCD_DrawPoint(x,y,fc);//画一个点
- x++;
- if((x-x0)==sizex)
- {
- x=x0;
- y++;
- break;
- }
- }
- }
- }
- }
- void LCD_ShowString(uint16_t x,uint16_t y,const uint8_t *p,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- while(*p!='\0')
- {
- LCD_ShowChar(x,y,*p,fc,bc,sizey,mode);
- x+=sizey/2;
- p++;
- }
- }
- uint32_t mypow(uint8_t m,uint8_t n)
- {
- uint32_t result=1;
- while(n--)result*=m;
- return result;
- }
- void LCD_ShowIntNum(uint16_t x,uint16_t y,uint16_t num,uint8_t len,uint16_t fc,uint16_t bc,uint8_t sizey)
- {
- uint8_t t,temp;
- uint8_t enshow=0;
- uint8_t sizex=sizey/2;
- for(t=0;t<len;t++)
- {
- temp=(num/mypow(10,len-t-1))%10;
- if(enshow==0&&t<(len-1))
- {
- if(temp==0)
- {
- LCD_ShowChar(x+t*sizex,y,' ',fc,bc,sizey,0);
- continue;
- }else enshow=1;
-
- }
- LCD_ShowChar(x+t*sizex,y,temp+48,fc,bc,sizey,0);
- }
- }
- void LCD_ShowFloatNum1(uint16_t x,uint16_t y,float num,uint8_t len,uint16_t fc,uint16_t bc,uint8_t sizey)
- {
- uint8_t t,temp,sizex;
- uint16_t num1;
- sizex=sizey/2;
- num1=num*100;
- for(t=0;t<len;t++)
- {
- temp=(num1/mypow(10,len-t-1))%10;
- if(t==(len-2))
- {
- LCD_ShowChar(x+(len-2)*sizex,y,'.',fc,bc,sizey,0);
- t++;
- len+=1;
- }
- LCD_ShowChar(x+t*sizex,y,temp+48,fc,bc,sizey,0);
- }
- }
- void LCD_ShowPicture(uint16_t x,uint16_t y,uint16_t length,uint16_t width,const uint8_t pic[])
- {
- uint16_t i,j;
- uint32_t k=0;
- LCD_Address_Set(x,y,x+length-1,y+width-1);
- for(i=0;i<length;i++)
- {
- for(j=0;j<width;j++)
- {
- LCD_WR_DATA8(pic[k*2]);
- LCD_WR_DATA8(pic[k*2+1]);
- k++;
- }
- }
- }
复制代码
2.3、main.c
- #include "main.h"
- int main(void)
- {
- uint8_t i;
- CLOCK_EnableClock(kCLOCK_Gpio0);
- BOARD_InitDEBUG_UARTPins();
- BOARD_PowerMode_OD();
- BOARD_InitBootClocks();
- BOARD_InitDebugConsole();
- SysTick_Init();
- init_led();
- init_spi();
- LCD_Init();//LCD初始化
-
- LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
-
- LCD_ShowChinese(16,1,"与非网论坛",RED,WHITE,16,0);
- LCD_DrawLine(0,18,128,18,BLUE);
- LCD_ShowString(0,19,"IC:MCXN947",RED,WHITE,16,0);
- LCD_ShowString(0,36,"LCD:ST7735",GREEN,WHITE,16,0);
- LCD_ShowString(0,52,"MODE:SPI",BLUE,WHITE,16,0);
- while (1)
- {
- i++;
- SysTick_Delay_ms(100);
- LCD_ShowIntNum(0,78,i,3,BLUE,WHITE,16);
- led_green_tog();
- }
- }
复制代码
三、程序运行
程序运行结果
|
|