⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 完整的原创单片机控制彩色液晶源代码(keil工程) 320x240液晶模块底层驱动 控制芯片5408 CPU LPC2131(or Higher) 开发环境 keil C for ARM (MDK
💻 C
字号:
#include <LPC213x.h>
#include <stdio.h>

#include "mygpio.h"
#include "myclock.h"

#include "Delay.h"

#include "SPI.h"
#include "LCD.h"
#include "LCDApp.h"
#include "LCDGUI.h"
#include "LCDprint.h"
#include "Touch.h"
#include "Flash.h" 

//#include "PicDeclare.h"

extern unsigned int GX,GY,BACKCOL,FRONTCOL,SIZE;

void PWM_Init()
{
	PINSEL1 = (PINSEL1 & (~(3 << 10))) | (1 << 10);	//P0.21连接PWM5
	PWMPR  = Fpclk / 40000-1;			// 对pclk进行分频
	PWMMCR = 0x02;			// PWMMR0与PWMTC匹配时复位PWMTC
	PWMPCR =  (1 << 13);

	PWMMR0 = 20;			// PWM速率控制/计数初值
	PWMMR5 = 10;			// PWM6的位置
	 
	PWMLER = 0x7F;			// 锁存所有PWM匹配值
	PWMTCR = 0x02;			// 复位PWMTC
	PWMTCR = 0x09;			// 使能PWM
}

void Bar(void)
{
	unsigned int i,j;
	unsigned char R_data=0;
	unsigned char G_data=0;
	unsigned char B_data=0;

	SetRamAddr(0,320-48);
	SendCom(0x22);
    for(j=0;j<8;j++)//红色渐强条
	{
 		R_data=0;G_data=0;B_data=0;  	
        for(i=0;i<120;i++)
        {
			R_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
        for(i=0;i<120;i++)
        {
			G_data=i*8/15;
			B_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
	}
//----------------------------------
    for(j=0;j<8;j++)//绿色渐强条
	{
		R_data=0;G_data=0;B_data=0;
        for(i=0;i<120;i++)
        {
			G_data=i*8/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
        for(i=0;i<120;i++)
        {
			R_data=i*4/15;
			B_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
	}
//----------------------------------
    for(j=0;j<8;j++)//蓝色渐强条
	{
		R_data=0;G_data=0;B_data=0;
        for(i=0;i<120;i++)
        {
			B_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
        for(i=0;i<120;i++)
        {
			G_data=i*8/15;
			R_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
	}
//----------------------------------
	for(j=0;j<8;j++)
	{
		R_data=0;G_data=0;B_data=0;
        for(i=0;i<120;i++)
        {
			B_data=i*4/15;
			G_data=i*8/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
        for(i=0;i<120;i++)
        {
			R_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
	}
//----------------------------------
	for(j=0;j<8;j++)
	{
		R_data=0;G_data=0;B_data=0;
        for(i=0;i<120;i++)
        {
			B_data=i*4/15;
			R_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
        for(i=0;i<120;i++)
        {
			G_data=i*8/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
	}
//----------------------------------
	for(j=0;j<8;j++)
	{
		R_data=0;G_data=0;B_data=0;
        for(i=0;i<120;i++)
        {
			R_data=i*4/15;
			G_data=i*8/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
        for(i=0;i<120;i++)
        {
			B_data=i*4/15;
			SendDat(R_data<<11|G_data<<5|B_data);
		}
	}
}

void GreenGradient(void)
{
	unsigned int i,j;

	unsigned char R_data=0;
	unsigned char G_data=0;
	unsigned char B_data=0;

	SetRamAddr(0,0);
	SendCom(0x22);
    for(j=0;j<320;j++)
        for(i=0;i<240;i++)
            {
				G_data=(i*4+j*3)/30;
				SendDat(R_data<<11|G_data<<5|B_data);
			}	
}

int main (void)
{
	unsigned int j;
	unsigned char i=10,flag=0;
				
	PWM_Init();
    MSPIInit();                     //初始化SSP接口
	TPIOInit();
	FlashIOInit(); 
	LcdIOInit();
	LcdReset();
    LcdInit();

//  DISCLEAR;
//	GreenGradient();
	DispOneColor(YELLOW);
	Bar();
//	FillBox(150,30,210,160,BLUE);
//	DispBitPic(170,30,56,36,bitPic,RED,WHITE);
//    DispSmallPic(120, 80, 109, 40, pic2);

	SendCom(0x00);	//before read! do not delete!
	printf("The IC code is:该液晶屏控制芯片:\n%4x --Read From IC(HEX)\n",ReadCom());
	SetPrintf(15,260,BLACK,WHITE,NORMAL,12);
	printf("SPI-Interface LCD已重新规划程序代码");

	SetPrintf(0,200,BLACK,BLUE,TRANSP,12);
	printf("支持大小字体英文汉字:");
	SetPrintf(REMAIN,REMAIN,REMAIN,REMAIN,REMAIN,16);
	printf("Big大字");
	SetPrintf(REMAIN,REMAIN,REMAIN,REMAIN,REMAIN,12);
	printf("Small小字");

	SetPrintf(0,80,WHITE,BLACK,NORMAL,16);
	printf("触摸测试:\n");

	LED1_OUT;
	LED1_0;

    while(1)  
    {
	    int x=0;
	    int y=0;

		if (KEY2_ON)
			i--;
		if (KEY3_ON)
			i++;
		if ((KEY2_ON) && (KEY3_ON))
			i=10;
		if ((KEY2_ON) || (KEY3_ON))
			flag=1;
		if (i==0)
			i=1;
		if (i==21)
			i=20;
		SetPrintf(0,128,BLACK,WHITE,NORMAL,16);
		printf("PWM:%3d%%Duty",i*5);
		if (flag)
		{
			flag=0;
			PWMMR5 = i;
			PWMLER = 1 << 5 ;
		}
		SetPrintf(0,96,BLACK,YELLOW,NORMAL,16);
		if (TP_INT_READ == 0)
        {
			LED1_INV;
	        TPAdXY(&x, &y);
			printf("X%4d\nY%4d",(y & 0xfff)/15,(x & 0xfff)/10);
		}
		Delay_Macro(50000*15,j);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -