P100脱机下载器
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

239 lines
7.8 KiB

4 years ago
  1. #ifndef __LCD_H
  2. #define __LCD_H
  3. #include "sys.h"
  4. #include "stdlib.h"
  5. //////////////////////////////////////////////////////////////////////////////////
  6. //������ֻ��ѧϰʹ�ã�δ���������ɣ��������������κ���;
  7. //ALIENTEK MiniSTM32F103������
  8. //2.4��/2.8��/3.5��/4.3��/7�� TFTҺ������
  9. //֧������IC�ͺŰ���:ILI9341/ILI9325/RM68042/RM68021/ILI9320/ILI9328/LGDP4531/LGDP4535/
  10. // SPFD5408/1505/B505/C505/NT35310/NT35510/SSD1963��
  11. //����ԭ��@ALIENTEK
  12. //������̳:www.openedv.com
  13. //��������:2010/7/4
  14. //�汾��V3.0
  15. //��Ȩ���У������ؾ���
  16. //Copyright(C) �������������ӿƼ����޹�˾ 2014-2024
  17. //All rights reserved
  18. //********************************************************************************
  19. //V1.2�޸�˵��
  20. //֧����SPFD5408������,������Һ��IDֱ�Ӵ�ӡ��HEX��ʽ.�����鿴LCD����IC.
  21. //V1.3
  22. //�����˿���IO��֧��
  23. //�޸��˱������Ƶļ��ԣ�������V1.8���Ժ��Ŀ������汾��
  24. //����1.8�汾֮ǰ(������1.8)��Һ��ģ��,���޸�LCD_Init������LCD_LED=1;ΪLCD_LED=1;
  25. //V1.4
  26. //�޸���LCD_ShowChar������ʹ�û��㹦�ܻ��ַ���
  27. //�����˺�������ʾ��֧��
  28. //V1.5 20110730
  29. //1,�޸���B505Һ������ɫ������bug.
  30. //2,�޸��˿���IO�������������÷�ʽ.
  31. //V1.6 20111116
  32. //1,������LGDP4535Һ��������֧��
  33. //V1.7 20120713
  34. //1,����LCD_RD_DATA����
  35. //2,���Ӷ�ILI9341��֧��
  36. //3,����ILI9325������������
  37. //4,����LCD_Scan_Dir����(����ʹ��)
  38. //6,�����޸��˲���ԭ���ĺ���,����Ӧ9341�IJ���
  39. //V1.8 20120905
  40. //1,����LCD��Ҫ�������ýṹ��lcddev
  41. //2,����LCD_Display_Dir����,֧�����ߺ������л�
  42. //V1.9 20120911
  43. //1,����RM68042������ID:6804��������6804��֧�ֺ�����ʾ����ԭ�򣺸ı�ɨ�跽ʽ��
  44. //����6804��������ʧЧ���Թ��ܶ෽�������У���ʱ�޽⡣
  45. //V2.0 20120924
  46. //�ڲ�Ӳ����λ��������,ILI9341��ID��ȡ�ᱻ������9300,�޸�LCD_Init,���޷�ʶ��
  47. //������������IDΪ9300/�Ƿ�ID��,ǿ��ָ������ICΪILI9341��ִ��9341�ij�ʼ����
  48. //V2.1 20120930
  49. //����ILI9325����ɫ��bug��
  50. //V2.2 20121007
  51. //����LCD_Scan_Dir��bug��
  52. //V2.3 20130120
  53. //����6804֧�ֺ�����ʾ
  54. //V2.4 20131120
  55. //1,����NT35310��ID:5310����������֧��
  56. //2,����LCD_Set_Window����,�������ô���,�Կ�������,�Ƚ�����,���Ǹú����ں���ʱ,��֧��6804.
  57. //V2.5 20140211
  58. //1,����NT35510��ID:5510����������֧��
  59. //V2.6 20140504
  60. //1,����ASCII 24*24������֧��(���������û�������������)
  61. //2,�޸IJ��ֺ�������,��֧��MDK -O2�Ż�
  62. //3,����9341/35310/35510,дʱ������Ϊ����,�����ܵ������ٶ�
  63. //4,ȥ����SSD1289��֧��,��Ϊ1289ʵ����̫����,������Ҫ1us...��ֱ����.���ʺ�F4ʹ��
  64. //5,����68042��C505��IC�Ķ���ɫ������bug.
  65. //V2.7 20140710
  66. //1,����LCD_Color_Fill������һ��bug.
  67. //2,����LCD_Scan_Dir������һ��bug.
  68. //V2.8 20140721
  69. //1,����MDKʹ��-O2�Ż�ʱLCD_ReadPoint��������ʧЧ������.
  70. //2,����LCD_Scan_Dir����ʱ���õ�ɨ�跽ʽ��ʾ��ȫ��bug.
  71. //V2.9 20141130
  72. //1,������SSD1963 LCD��֧��.
  73. //2,����LCD_SSD_BackLightSet����
  74. //3,ȡ��ILI93XX��Rxx�Ĵ�������
  75. //V3.0 20150423
  76. //�޸�SSD1963 LCD������������.
  77. //////////////////////////////////////////////////////////////////////////////////
  78. //LCD��Ҫ������
  79. typedef struct
  80. {
  81. u16 width; //LCD ����
  82. u16 height; //LCD �߶�
  83. u16 id; //LCD ID
  84. u8 dir; //���������������ƣ�0��������1��������
  85. u16 wramcmd; //��ʼдgramָ��
  86. u16 setxcmd; //����x����ָ��
  87. u16 setycmd; //����y����ָ��
  88. }_lcd_dev;
  89. //LCD����
  90. extern _lcd_dev lcddev; //����LCD��Ҫ����
  91. //LCD�Ļ�����ɫ�ͱ���ɫ
  92. extern u16 POINT_COLOR;//Ĭ�Ϻ�ɫ
  93. extern u16 BACK_COLOR; //������ɫ.Ĭ��Ϊ��ɫ
  94. ////////////////////////////////////////////////////////////////////
  95. //-----------------LCD�˿ڶ���----------------
  96. #define LCD_LED PCout(10) //LCD���� PC10
  97. #define LCD_CS_SET GPIOC->BSRR=1<<9 //Ƭѡ�˿� PC9
  98. #define LCD_RS_SET GPIOC->BSRR=1<<8 //����/���� PC8
  99. #define LCD_WR_SET GPIOC->BSRR=1<<7 //��� PC7
  100. #define LCD_RD_SET GPIOC->BSRR=1<<6 //������ PC6
  101. #define LCD_CS_CLR GPIOC->BRR=1<<9 //Ƭѡ�˿� PC9
  102. #define LCD_RS_CLR GPIOC->BRR=1<<8 //����/���� PC8
  103. #define LCD_WR_CLR GPIOC->BRR=1<<7 //��� PC7
  104. #define LCD_RD_CLR GPIOC->BRR=1<<6 //������ PC6
  105. //PB0~15,��������
  106. #define DATAOUT(x) GPIOB->ODR=x; //��������
  107. #define DATAIN GPIOB->IDR; //��������
  108. //////////////////////////////////////////////////////////////////////
  109. //ɨ�跽������
  110. #define L2R_U2D 0 //��������,���ϵ���
  111. #define L2R_D2U 1 //��������,���µ���
  112. #define R2L_U2D 2 //���ҵ���,���ϵ���
  113. #define R2L_D2U 3 //���ҵ���,���µ���
  114. #define U2D_L2R 4 //���ϵ���,��������
  115. #define U2D_R2L 5 //���ϵ���,���ҵ���
  116. #define D2U_L2R 6 //���µ���,��������
  117. #define D2U_R2L 7 //���µ���,���ҵ���
  118. #define DFT_SCAN_DIR L2R_U2D //Ĭ�ϵ�ɨ�跽��
  119. //ɨ�跽������
  120. #define L2R_U2D 0 //��������,���ϵ���
  121. #define L2R_D2U 1 //��������,���µ���
  122. #define R2L_U2D 2 //���ҵ���,���ϵ���
  123. #define R2L_D2U 3 //���ҵ���,���µ���
  124. #define U2D_L2R 4 //���ϵ���,��������
  125. #define U2D_R2L 5 //���ϵ���,���ҵ���
  126. #define D2U_L2R 6 //���µ���,��������
  127. #define D2U_R2L 7 //���µ���,���ҵ���
  128. #define DFT_SCAN_DIR L2R_U2D //Ĭ�ϵ�ɨ�跽��
  129. //������ɫ
  130. #define WHITE 0xFFFF
  131. #define BLACK 0x0000
  132. #define BLUE 0x001F
  133. #define BRED 0XF81F
  134. #define GRED 0XFFE0
  135. #define GBLUE 0X07FF
  136. #define RED 0xF800
  137. #define MAGENTA 0xF81F
  138. #define GREEN 0x07E0
  139. #define CYAN 0x7FFF
  140. #define YELLOW 0xFFE0
  141. #define BROWN 0XBC40 //��ɫ
  142. #define BRRED 0XFC07 //�غ�ɫ
  143. #define GRAY 0X8430 //��ɫ
  144. //GUI��ɫ
  145. #define DARKBLUE 0X01CF //����ɫ
  146. #define LIGHTBLUE 0X7D7C //dz��ɫ
  147. #define GRAYBLUE 0X5458 //����ɫ
  148. //������ɫΪPANEL����ɫ
  149. #define LIGHTGREEN 0X841F //dz��ɫ
  150. #define LGRAY 0XC618 //dz��ɫ(PANNEL),���屳��ɫ
  151. #define LGRAYBLUE 0XA651 //dz����ɫ(�м�����ɫ)
  152. #define LBBLUE 0X2B12 //dz����ɫ(ѡ����Ŀ�ķ�ɫ)
  153. void LCD_Init(void); //��ʼ��
  154. void LCD_DisplayOn(void); //����ʾ
  155. void LCD_DisplayOff(void); //����ʾ
  156. void LCD_Clear(u16 Color); //����
  157. void LCD_SetCursor(u16 Xpos, u16 Ypos); //���ù���
  158. void LCD_DrawPoint(u16 x,u16 y); //����
  159. void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color); //���ٻ���
  160. u16 LCD_ReadPoint(u16 x,u16 y); //����
  161. void LCD_Draw_Circle(u16 x0,u16 y0,u8 r); //��Բ
  162. void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); //����
  163. void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); //������
  164. void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color); //���䵥ɫ
  165. void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color); //����ָ����ɫ
  166. void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode); //��ʾһ���ַ�
  167. void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size); //��ʾһ������
  168. void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode); //��ʾ ����
  169. void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p); //��ʾһ���ַ���,12/16����
  170. void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue);
  171. u16 LCD_ReadReg(u16 LCD_Reg);
  172. void LCD_WriteRAM_Prepare(void);
  173. void LCD_WriteRAM(u16 RGB_Code);
  174. void LCD_Scan_Dir(u8 dir); //������ɨ�跽��
  175. void LCD_Display_Dir(u8 dir); //������Ļ��ʾ����
  176. void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height); //����
  177. //д���ݺ���
  178. #define LCD_WR_DATA(data){\
  179. LCD_RS_SET;\
  180. LCD_CS_CLR;\
  181. DATAOUT(data);\
  182. LCD_WR_CLR;\
  183. LCD_WR_SET;\
  184. LCD_CS_SET;\
  185. }
  186. //LCD�ֱ�������
  187. #define SSD_HOR_RESOLUTION 800 //LCDˮƽ�ֱ���
  188. #define SSD_VER_RESOLUTION 480 //LCD��ֱ�ֱ���
  189. //LCD������������
  190. #define SSD_HOR_PULSE_WIDTH 1 //ˮƽ����
  191. #define SSD_HOR_BACK_PORCH 46 //ˮƽǰ��
  192. #define SSD_HOR_FRONT_PORCH 210 //ˮƽ����
  193. #define SSD_VER_PULSE_WIDTH 1 //��ֱ����
  194. #define SSD_VER_BACK_PORCH 23 //��ֱǰ��
  195. #define SSD_VER_FRONT_PORCH 22 //��ֱǰ��
  196. //���¼����������Զ�����
  197. #define SSD_HT (SSD_HOR_RESOLUTION+SSD_HOR_BACK_PORCH+SSD_HOR_FRONT_PORCH)
  198. #define SSD_HPS (SSD_HOR_BACK_PORCH)
  199. #define SSD_VT (SSD_VER_RESOLUTION+SSD_VER_BACK_PORCH+SSD_VER_FRONT_PORCH)
  200. #define SSD_VPS (SSD_VER_BACK_PORCH)
  201. #endif