问答

汇集网友智慧,解决技术难题

张小木木

TA的家园币:76  

  • MCU驱动TFT彩屏 刷屏数据40ms左右传完 但刷屏用了300ms

    MCU使用SPI驱动TFT彩屏系统时钟33.1776MHzSPI频率FOSC/2刷屏数据40ms左右传完了但屏幕实际刷新时间用了300ms以上40ms是在刷屏程序里拉低引脚再拉高引脚然后用逻辑分析仪测出来的,刷屏时间的300ms是录屏后数帧数数出来的请问下这个是哪里的问题,是TFT的初始化有问题吗以下代码#include#include"TFT.h"#include"weather.h"sbitBLK=P5^3;//背光控制sbitRS=P0^5;//数据命令切换线sbitRST=P0^6;//复位线sbitCS=P0^7;//片选sbitSCLK=P1^5;//SPI时钟线sbitMOSI=P1^3;//SPI数据线sbitLED=P5^0;unsignedinttime_i=0;voidTimer0Init(void);voidUartInit(void);bitLcd_Clean=0;bitLcd_color=1;voidmain(){Timer0Init();UartInit();LED=1;ET0=1;EA=1;Lcd_Init();while(1){if(Lcd_Clean){Lcd_Clean=0;if(Lcd_color){Lcd_clear(0x8080);Lcd_color=0;}else{Lcd_clear(0xFFFF);Lcd_color=1;}}}}voidTM0_Isr()interrupt1{time_i++;if(time_i==1000){time_i=0;Lcd_Clean=1;}}voidTimer0Init(void)//1毫秒@33.1776MHz{AUXR|=0x80;//定时器时钟1T模式TMOD&=0xF0;//设置定时器模式TL0=0x66;//设置定时初始值TH0=0x7E;//设置定时初始值TF0=0;//清除TF0标志TR0=1;//定时器0开始计时}voidUartInit(void)//115200bps@33.1776MHz{SCON=0x50;//8位数据,可变波特率AUXR|=0x40;//定时器时钟1T模式AUXR&=0xFE;//串口1选择定时器1为波特率发生器TMOD&=0x0F;//设置定时器模式TL1=0xB8;//设置定时初始值TH1=0xFF;//设置定时初始值ET1=0;//禁止定时器%d中断TR1=1;//定时器1开始计时}voidDelay500ms()//@12.000MHz{unsignedchari,j,k;_nop_();_nop_();i=23;j=205;k=120;do{do{while(--k);}while(--j);}while(--i);}voidSPI_Init()//初始化SPISPI频率为FOSC/2{SPDAT=0;SPSTAT=0xC0;SPCTL=0xDF;}voidLcd_Write_cmd(unsignedcharcmd)//向TFT写入一个命令{CS=0;RS=0;SPDAT=cmd;while(!(SPSTAT&0x80));SPSTAT=0xC0;CS=1;}voidLcd_Write_data(unsignedchardat)//