本设计功能说明:
- 显示日期和时钟功能(日期显示解决了闰年二月29天和每月天数不同的问题)
- 自动读取温湿度并显示
- 手动显示天气
- S11用于修改显示的时间日期
- S12用于修改房价
- S13晴 S14雨 S15多云 S16雪
硬件模块
STM32最小系统
LCD(ILI9341)
4*4矩阵键盘
温湿度传感器(DHT11)
详细介绍
STM32最小系统:单片机最小系统懂得都懂,这里加点东西。我自己在做毕设遇到的一个问题,图片内存太大,我用的是C8T6,128kflash都不是很够,单片机自带FLASH不够用了,可以换更大FLASH的芯片,考虑到成本的问题这里外接一个吻外部FLASH,这里以24c02系列的EEPROM为例,如果你们觉得24C02太小了也可以用HR8P506,只是设计的协议不同,都是通过IIC(SPI)存入读取数据。详情请仔细阅读关于FLASH的.c文件。
LCD:刚说完SPI,这个模块也是用的我直接把CS接地节省了一个IO口,本设计只需要主设备(单片机)传给从设(LCD)显示就行不需要SIMO我直接悬空了它。那么什么情况需要用到呢从设发数据给主设,做触摸屏的时候。(正点原子里面做触摸屏用的是FSMC)关于LCD还有一个重要的东西,比如ILI9341是什么意思
void Lcd_Init(void)
{
#if USE_HARDWARE_SPI //使用硬件SPI
SPI2_Init();
#else
LCD_GPIO_Init();//使用模拟SPI
#endif
Lcd_Reset(); //Reset before LCD Init.
//2.2inch TM2.2-G2.2 Init 20171020
Lcd_WriteIndex(0x11);
Lcd_WriteData(0x00);
Lcd_WriteIndex(0xCF);
Lcd_WriteData(0X00);
Lcd_WriteData(0XC1);
Lcd_WriteData(0X30);
Lcd_WriteIndex(0xED);
Lcd_WriteData(0X64);
Lcd_WriteData(0X03);
Lcd_WriteData(0X12);
Lcd_WriteData(0X81);
Lcd_WriteIndex(0xE8);
Lcd_WriteData(0X85);
Lcd_WriteData(0X11);
Lcd_WriteData(0X78);
Lcd_WriteIndex(0xF6);
Lcd_WriteData(0X01);
Lcd_WriteData(0X30);
Lcd_WriteData(0X00);
Lcd_WriteIndex(0xCB);
Lcd_WriteData(0X39);
Lcd_WriteData(0X2C);
Lcd_WriteData(0X00);
Lcd_WriteData(0X34);
Lcd_WriteData(0X05);
Lcd_WriteIndex(0xF7);
Lcd_WriteData(0X20);
Lcd_WriteIndex(0xEA);
Lcd_WriteData(0X00);
Lcd_WriteData(0X00);
Lcd_WriteIndex(0xC0);
Lcd_WriteData(0X20);
Lcd_WriteIndex(0xC1);
Lcd_WriteData(0X11);
Lcd_WriteIndex(0xC5);
Lcd_WriteData(0X31);
Lcd_WriteData(0X3C);
Lcd_WriteIndex(0xC7);
Lcd_WriteData(0XA9);
Lcd_WriteIndex(0x3A);
Lcd_WriteData(0X55);
Lcd_WriteIndex(0x36);
#if USE_HORIZONTAL
Lcd_WriteData(0xE8);//横屏参数
#else
Lcd_WriteData(0x48);//竖屏参数
#endif
Lcd_WriteIndex(0xB1);
Lcd_WriteData(0X00);
Lcd_WriteData(0X18);
Lcd_WriteIndex(0xB4);
Lcd_WriteData(0X00);
Lcd_WriteData(0X00);
Lcd_WriteIndex(0xF2);
Lcd_WriteData(0X00);
Lcd_WriteIndex(0x26);
Lcd_WriteData(0X01);
Lcd_WriteIndex(0xE0);
Lcd_WriteData(0X0F);
Lcd_WriteData(0X17);
Lcd_WriteData(0X14);
Lcd_WriteData(0X09);
Lcd_WriteData(0X0C);
Lcd_WriteData(0X06);
Lcd_WriteData(0X43);
Lcd_WriteData(0X75);
Lcd_WriteData(0X36);
Lcd_WriteData(0X08);
Lcd_WriteData(0X13);
Lcd_WriteData(0X05);
Lcd_WriteData(0X10);
Lcd_WriteData(0X0B);
Lcd_WriteData(0X08);
Lcd_WriteIndex(0xE1);
Lcd_WriteData(0X00);
Lcd_WriteData(0X1F);
Lcd_WriteData(0X23);
Lcd_WriteData(0X03);
Lcd_WriteData(0X0E);
Lcd_WriteData(0X04);
Lcd_WriteData(0X39);
Lcd_WriteData(0X25);
Lcd_WriteData(0X4D);
Lcd_WriteData(0X06);
Lcd_WriteData(0X0D);