Character_lcd(6640).c 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. #include "Character_lcd.h"
  2. void LCD_16T202DA1EA_Init(void){
  3. HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
  4. HAL_Delay(1);
  5. HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
  6. HAL_Delay(1);
  7. HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_RESET);
  8. HAL_Delay(1);
  9. HAL_GPIO_WritePin(GPIOD, GPIO_PIN_10, GPIO_PIN_SET);
  10. }
  11. typedef struct{
  12. uint16_t RW_PIN;
  13. uint16_t RS;
  14. uint16_t E;
  15. uint16_t Reset;
  16. uint16_t DB0;
  17. uint16_t DB1;
  18. uint16_t DB2;
  19. uint16_t DB3;
  20. uint16_t DB4;
  21. uint16_t DB5;
  22. uint16_t DB6;
  23. uint16_t DB7;
  24. GPIO_TypeDef * RW_PIN_Port;
  25. GPIO_TypeDef * RS_Port;
  26. GPIO_TypeDef * E_Port;
  27. GPIO_TypeDef * DB0_Port;
  28. GPIO_TypeDef * DB1_Port;
  29. GPIO_TypeDef * DB2_Port;
  30. GPIO_TypeDef * DB3_Port;
  31. GPIO_TypeDef * DB4_Port;
  32. GPIO_TypeDef * DB5_Port;
  33. GPIO_TypeDef * DB6_Port;
  34. GPIO_TypeDef * DB7_Port;
  35. }lcd_Pin_st;
  36. void LCD_M68_DataWrite_COMMAND_Init(void){
  37. lcd_Pin_st lcdset;
  38. lcdset.RW_PIN = GPIO_PIN_12;//pd
  39. lcdset.RS = GPIO_PIN_11;//pd
  40. lcdset.E = GPIO_PIN_13;//pd
  41. lcdset.DB0 = GPIO_PIN_14; //pd
  42. lcdset.DB1 = GPIO_PIN_15;//pd
  43. lcdset.Reset = GPIO_PIN_10;
  44. lcdset.DB2 = GPIO_PIN_2;//pg
  45. lcdset.DB3 = GPIO_PIN_3;//pg
  46. lcdset.DB5 = GPIO_PIN_4;//pg
  47. lcdset.DB4 = GPIO_PIN_5;//pg
  48. lcdset.DB6 = GPIO_PIN_6;//pg
  49. lcdset.DB7 = GPIO_PIN_7;//pg
  50. HAL_GPIO_WritePin(GPIOD, lcdset.E|lcdset.RS|lcdset.RW_PIN|lcdset.DB0|lcdset.DB1 , GPIO_PIN_RESET);
  51. HAL_GPIO_WritePin(GPIOG, lcdset.DB2|lcdset.DB3|lcdset.DB4|lcdset.DB5|lcdset.DB7, GPIO_PIN_SET);
  52. //PIN Init
  53. HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_SET);
  54. HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_SET);
  55. HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_SET);
  56. HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_SET);
  57. HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_SET);
  58. HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_RESET);
  59. HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_RESET);
  60. HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_RESET);
  61. HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_RESET);
  62. HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_RESET);
  63. HAL_Delay(1);
  64. }
  65. void LCD_M68_DataWrite_COMMAND_TEST(void){
  66. lcd_Pin_st lcdset;
  67. char aa = 'a';
  68. lcdset.RW_PIN = GPIO_PIN_12;//pd
  69. lcdset.RS = GPIO_PIN_11;//pd
  70. lcdset.E = GPIO_PIN_13;//pd
  71. lcdset.DB0= GPIO_PIN_14; //pd
  72. lcdset.DB1= GPIO_PIN_15;//pd
  73. lcdset.DB2= GPIO_PIN_2;//pg
  74. lcdset.DB3= GPIO_PIN_3;//pg
  75. lcdset.DB5= GPIO_PIN_4;//pg
  76. lcdset.DB4= GPIO_PIN_5;//pg
  77. lcdset.DB6= GPIO_PIN_6;//pg
  78. lcdset.DB7= GPIO_PIN_7;//pg
  79. HAL_GPIO_WritePin(GPIOG, lcdset.DB2|lcdset.DB3|lcdset.DB4|lcdset.DB5|lcdset.DB6|lcdset.DB7, GPIO_PIN_RESET);
  80. HAL_GPIO_WritePin(GPIOD, lcdset.DB0|lcdset.DB1 , GPIO_PIN_RESET);
  81. HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_RESET);
  82. HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET);
  83. HAL_GPIO_WritePin(GPIOD, lcdset.RW_PIN, GPIO_PIN_RESET);
  84. HAL_Delay(1);
  85. HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_SET);
  86. HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_SET);
  87. HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_RESET);
  88. HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_RESET);
  89. HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_RESET);
  90. HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_RESET);
  91. HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_SET);
  92. HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_SET);
  93. HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_RESET);
  94. HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_RESET);
  95. HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_RESET);
  96. HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET);
  97. HAL_GPIO_WritePin(GPIOG, lcdset.DB2|lcdset.DB3|lcdset.DB4|lcdset.DB5|lcdset.DB6|lcdset.DB7, GPIO_PIN_RESET);
  98. }
  99. void LCD_M68_DataWrite_COMMAND(uint8_t line,uint8_t cmd,uint8_t data){
  100. lcd_Pin_st lcdset;
  101. uint16_t temp_Pinbuf[8]={0,};
  102. GPIO_TypeDef* temp_Portbuf[8]={0,};
  103. lcdset.RW_PIN = GPIO_PIN_12;//pd
  104. lcdset.RS = GPIO_PIN_11;//pd
  105. lcdset.E = GPIO_PIN_13;//pd
  106. lcdset.DB0 = GPIO_PIN_14;//pd
  107. lcdset.DB1 = GPIO_PIN_15;//pd
  108. lcdset.DB2 = GPIO_PIN_2;//pg
  109. lcdset.DB3 = GPIO_PIN_3;//pg
  110. lcdset.DB5 = GPIO_PIN_4;//pg
  111. lcdset.DB4 = GPIO_PIN_5;//pg
  112. lcdset.DB6 = GPIO_PIN_6;//pg
  113. lcdset.DB7 = GPIO_PIN_7;//pg
  114. HAL_GPIO_WritePin(GPIOD, lcdset.E|lcdset.RS|lcdset.RW_PIN|lcdset.DB0|lcdset.DB1 , GPIO_PIN_RESET);
  115. HAL_GPIO_WritePin(GPIOG, lcdset.DB2|lcdset.DB3|lcdset.DB4|lcdset.DB5|lcdset.DB6|lcdset.DB7, GPIO_PIN_RESET);
  116. //PIN Init
  117. if(cmd == Instruction_CMD){
  118. HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET); // Init Instruction CMD
  119. }else{
  120. HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_SET); //Init Data CMD
  121. }
  122. HAL_Delay(1);
  123. memcpy(&temp_Pinbuf[0] ,&lcdset.DB0 ,8);
  124. memcpy(&temp_Portbuf[0],&lcdset.DB0_Port,8);
  125. HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_SET);
  126. if(data & 0x01)
  127. HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_SET);
  128. else
  129. HAL_GPIO_WritePin(GPIOD, lcdset.DB0, GPIO_PIN_RESET);
  130. if(data & 0x02)
  131. HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_SET);
  132. else
  133. HAL_GPIO_WritePin(GPIOD, lcdset.DB1, GPIO_PIN_RESET);
  134. if(data & 0x04)
  135. HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_SET);
  136. else
  137. HAL_GPIO_WritePin(GPIOG, lcdset.DB2, GPIO_PIN_RESET);
  138. if(data & 0x08)
  139. HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_SET);
  140. else
  141. HAL_GPIO_WritePin(GPIOG, lcdset.DB3, GPIO_PIN_RESET);
  142. if(data & 0x10)
  143. HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_SET);
  144. else
  145. HAL_GPIO_WritePin(GPIOG, lcdset.DB4, GPIO_PIN_RESET);
  146. if(data & 0x20)
  147. HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_SET);
  148. else
  149. HAL_GPIO_WritePin(GPIOG, lcdset.DB5, GPIO_PIN_RESET);
  150. if(data & 0x40)
  151. HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_SET);
  152. else
  153. HAL_GPIO_WritePin(GPIOG, lcdset.DB6, GPIO_PIN_RESET);
  154. if(data & 0x80)
  155. HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_SET);
  156. else
  157. HAL_GPIO_WritePin(GPIOG, lcdset.DB7, GPIO_PIN_RESET);
  158. HAL_GPIO_WritePin(GPIOD, lcdset.E , GPIO_PIN_RESET); //Init E Line
  159. if(cmd == Instruction_CMD){
  160. HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_SET); //Init Data CMD
  161. }else{
  162. HAL_GPIO_WritePin(GPIOD, lcdset.RS , GPIO_PIN_RESET); // Init Instruction CMD
  163. }
  164. }