在大赛期间,为了实现桌面式智能家居控制系统的设计,特意购置一块2.8寸的触摸屏,但由于时间紧张当时并没有排上用场。赛事虽然过去了,闲下来还是将它的驱动问题解决了。解决的方法并没有按厂家提供的例程来解决,而是在所用的2.2寸屏的基础上,直接通过修改初始化函数来解决。 2.8寸显示屏的初始化函数为: - void LCD_Init(void)
- {
- LCD_REST_Low();
- delay_ms(50);
- LCD_REST_High();
- delay_ms(50);
- LCD_WR_REG(0xCF);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0xD9);
- LCD_WR_DATA8(0X30);
- LCD_WR_REG(0xED);
- LCD_WR_DATA8(0x64);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0X12);
- LCD_WR_DATA8(0X81);
- LCD_WR_REG(0xE8);
- LCD_WR_DATA8(0x85);
- LCD_WR_DATA8(0x10);
- LCD_WR_DATA8(0x78);
- LCD_WR_REG(0xCB);
- LCD_WR_DATA8(0x39);
- LCD_WR_DATA8(0x2C);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x34);
- LCD_WR_DATA8(0x02);
- LCD_WR_REG(0xF7);
- LCD_WR_DATA8(0x20);
- LCD_WR_REG(0xEA);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0xC0);
- LCD_WR_DATA8(0x21);
- LCD_WR_REG(0xC1);
- LCD_WR_DATA8(0x12);
- LCD_WR_REG(0xC5);
- LCD_WR_DATA8(0x32);
- LCD_WR_DATA8(0x3C);
- LCD_WR_REG(0xC7);
- LCD_WR_DATA8(0xC1);
- LCD_WR_REG(0x36);
- LCD_WR_DATA8(0x08);
- LCD_WR_REG(0x3A);
- LCD_WR_DATA8(0x55);
- LCD_WR_REG(0xB1);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x18);
- LCD_WR_REG(0xB6);
- LCD_WR_DATA8(0x0A);
- LCD_WR_DATA8(0xA2);
- LCD_WR_REG(0xF2);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0x26);
- LCD_WR_DATA8(0x01);
- LCD_WR_REG(0xE0);
- LCD_WR_DATA8(0x0F);
- LCD_WR_DATA8(0x20);
- LCD_WR_DATA8(0x1E);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x12);
- LCD_WR_DATA8(0x0B);
- LCD_WR_DATA8(0x50);
- LCD_WR_DATA8(0xBA);
- LCD_WR_DATA8(0x44);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x14);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x23);
- LCD_WR_DATA8(0x21);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0xE1);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x19);
- LCD_WR_DATA8(0x19);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x12);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x2D);
- LCD_WR_DATA8(0x28);
- LCD_WR_DATA8(0x3F);
- LCD_WR_DATA8(0x02);
- LCD_WR_DATA8(0x0A);
- LCD_WR_DATA8(0x08);
- LCD_WR_DATA8(0x25);
- LCD_WR_DATA8(0x2D);
- LCD_WR_DATA8(0x0F);
- LCD_WR_REG(0x11);
- delay_ms(120);
- LCD_WR_REG(0x29);
- LCD_Clear(WHITE);
- }
复制代码
以I/O口模拟SPI通讯的函数为: - void LCD_Writ_Bus(unsigned char com)
- {
- unsigned char uci;
- for(uci=0;uci<8;uci++)
- {
- if(com & 0x80)
- {
- LCD_SDI_High();
- }
- else
- {
- LCD_SDI_Low();
- }
- com = com << 1;
- LCD_SCK_Low();
- LCD_SCK_High();
- }
- }
复制代码
2.8寸显示屏与STM32H750的连接关系如图1所示。 图1 显示屏的引脚连接
经程序的编译下载,其运行效果如图2所示。 图2 显示效果
由于触摸功能是原2.2寸屏所没有的,后面再争取将触摸的功能解决了,使桌面式智能家居控制系统更加易于使用。
|