ILI9341tft屏幕的单片机驱动给广大网友做参考,由于时间写的参促,难免有错希望大家指出.
单片机彩屏版万年历仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下(主程序):
- #include <REGX55.H>
- #include "TFT.H"
- #include "TFT_GDI.H"
- #include "DS3231.h" //如果不测试时间请注销它
- void Travel_time();
- void Display_stc(void);
- void Display_dyn_time(void);//显示需更新的界面
- void Display_dyn_rili(void);//显示需更新的界面
- //=========================================================================
- //本程序用来学习彩屏应用,以及时钟写法,学习钟能深入了解51编程,让你展握编辑思想.
- //时间调整程序,留给各位网友,发挥自己想象
- //如果有能力,可以采用GPS调时.
- //=========================================================================
- void main()
- {
- //写时间为了测试用,
- IIC_single_byte_write(0x00,0x54);
- IIC_single_byte_write(0x01,0x59);
- IIC_single_byte_write(0x02,0x23);
-
- IIC_single_byte_write(0x04,0x15);
- IIC_single_byte_write(0x05,0x02);
- IIC_single_byte_write(0x06,0x18);
- //不用测试时间请注销
- LCD_Init();
- Display_stc();
- Display_dyn_time();
- Display_dyn_rili();
-
- while(1)
- {
- Travel_time();
- }
- }
复制代码 TFT_GDI.C
- #include "TFT.H"
- #include "TFT_GDI.H"
- void LcdPutStr(RECT rect,unsigned int color,unsigned int bkcolor,unsigned char* GB_font,unsigned int font_num)
- {//四个参数分别起启地址X与Y,字体颜色,字体背景色,要显示数字
- unsigned char i,j;
- LCD_SetArea(rect);
- LCD_WR_REG(0x2C);//写储存器命令
- for(i=0;i<font_num;i++)
- {
- for(j=8;j>0;j--)
- {
- if(1==(GB_font[i]>>j-1&0x01))//判断字符位置是否有像素//--有
- {
- LcdWirteColorData(color);//写入字体颜色
- }
- else //没有
- {
- LcdWirteColorData(bkcolor);//没有则写入背景色
- }
- }
-
- }
- }
- void show816(unsigned int num_X, unsigned int num_Y,unsigned char* GB_font)
- {
- RECT rect;//屏显示范围
- num_Y=239-num_Y-15;//屏坐标转换
- rect.top=num_X;
- rect.left=num_Y;
- rect.right=num_Y+15;
- rect.bottom=num_X+15;
- LcdPutStr(rect,0XF800,0XFfff,GB_font,16);
- }
- void show3216(unsigned int num_X, unsigned int num_Y,unsigned char* GB_font)
- {//调用该涵数,num_X最大不要超过224,num_Y不超304
- RECT rect;//屏显示范围
- num_Y=239-num_Y-15;//屏坐标转换
- rect.top=num_X;
- rect.left=num_Y;
- rect.right=num_Y+15;
- rect.bottom=num_X+31;
- LcdPutStr(rect,0XF800,0XFfff,GB_font,32);
- }
- void show3264(unsigned int num_X, unsigned int num_Y,unsigned char* GB_font)
- {
- RECT rect;//屏显示范围
- num_Y=239-num_Y-63;//屏坐标转换
- rect.top=num_X;
- rect.left=num_Y;
- rect.right=num_Y+63;
- rect.bottom=num_X+31;
- LcdPutStr(rect,0XF800,0XFfff,GB_font,255);
- }
复制代码
DS3231.c单片机源程序如下:
所有资料51hei提供下载:
51万年历彩屏版.7z
(109.57 KB, 下载次数: 456)
|