UC1601S-I2C.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #pragma once
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4. #include "expander.h"
  5. #define LCD_WriteCommand(x)
  6. #define LCD_WriteData(x)
  7. #define LCD_Clear()
  8. #define LCD_GoTo(x,y)
  9. #define LCD_WriteTextP(x)
  10. #define LCD_WriteText(x)
  11. #define UC1601S_CA30 0x00
  12. #define UC1601S_CA74 0x10
  13. #define UC1601S_TC 0x24
  14. #define UC1601S_PC 0x28
  15. #define UC1601S_ADV 0x30
  16. #define UC1601S_SL 0x40
  17. #define UC1601S_PA 0xb0
  18. #define UC1601S_PM 0x81
  19. #define UC1601S_LC4 0x84
  20. #define UC1601S_AC 0x88
  21. #define UC1601S_LC3 0xa0
  22. #define UC1601S_DC1 0xa4
  23. #define UC1601S_DC0 0xa6
  24. #define UC1601S_DC2 0xae
  25. #define UC1601S_LC21 0xc0
  26. #define UC1601S_SYSTEMRESET 0xe2
  27. #define UC1601S_NOP 0xe3
  28. #define UC1601S_BR 0xe8
  29. #define UC1601S_CEN 0xf1
  30. #define UC1601S_DST 0xf2
  31. #define UC1601S_DEN 0xf3
  32. #define UC1601S_DATA_OUTPUT() expander_set_dir(0, 0x00, 0x00)
  33. #define UC1601S_DATA_INPUT() expander_set_dir(0, 0xFF, 0x00)
  34. #define UC1601S_WR_PORT 1
  35. #define UC1601S_WR (1<<2)
  36. #define UC1601S_CD_PORT 1
  37. #define UC1601S_CD (1<<0)
  38. #define UC1601S_RD_PORT 1
  39. #define UC1601S_RD (1<<3)
  40. #define UC1601S_CS_PORT 1
  41. #define UC1601S_CS (1<<1)
  42. #define UC1601S_RST_PORT 1
  43. #define UC1601S_RST (1<<6)
  44. void uc1601s_write_command(unsigned char cmd);
  45. void uc1601s_write_data(unsigned char data);
  46. unsigned char uc1601s_read_data(void);
  47. void LCD_Initialize(void);
  48. static inline void uc1601s_set_column_address(unsigned char addr) {
  49. uc1601s_write_command(UC1601S_CA30 | (addr&0x0f));
  50. uc1601s_write_command(UC1601S_CA74 | (addr>>4));
  51. uc1601s_read_data();
  52. }
  53. static inline void uc1601s_set_temp_compensation(unsigned char tc) {
  54. tc &= 0x3;
  55. uc1601s_write_command(UC1601S_TC | tc);
  56. }
  57. static inline void uc1601s_set_power_control(unsigned char pc) {
  58. pc &= 0x7;
  59. uc1601s_write_command(UC1601S_PC | pc);
  60. }
  61. static inline void uc1601s_set_scroll_line(unsigned char sl) {
  62. sl &= 0x3f;
  63. uc1601s_write_command(UC1601S_SL | sl);
  64. }
  65. static inline void uc1601s_set_page_address(unsigned char pa) {
  66. pa &= 0x0f;
  67. uc1601s_write_command(UC1601S_PA | pa);
  68. uc1601s_read_data();
  69. }
  70. static inline void uc1601s_set_vbias(unsigned char pm) {
  71. uc1601s_write_command(UC1601S_PM);
  72. uc1601s_write_command(pm);
  73. }
  74. static inline void uc1601s_set_partial_display(unsigned char lc) {
  75. lc &= 0x1;
  76. uc1601s_write_command(UC1601S_LC4 | lc);
  77. }
  78. static inline void uc1601s_set_ram_address(unsigned char ac) {
  79. ac &= 0x3;
  80. uc1601s_write_command(UC1601S_AC | ac);
  81. }
  82. static inline void uc1601_set_frame_rate(unsigned char lc) {
  83. lc &= 0x1;
  84. uc1601s_write_command(UC1601S_LC3 | lc);
  85. }
  86. static inline void uc1601s_set_all_pixel_on(unsigned char dc) {
  87. dc &= 0x1;
  88. uc1601s_write_command(UC1601S_DC1 | dc);
  89. }
  90. static inline void uc1601s_set_inverse_display(unsigned char dc) {
  91. dc &= 0x1;
  92. uc1601s_write_command(UC1601S_DC0 | dc);
  93. }
  94. static inline void uc1601s_set_display_enable(unsigned char dc) {
  95. dc &= 0x1;
  96. uc1601s_write_command(UC1601S_DC2 | dc);
  97. }
  98. static inline void uc1601s_set_lcd_mapping(unsigned char lc) {
  99. lc &= 0x3;
  100. lc <<= 1;
  101. uc1601s_write_command(UC1601S_LC21 | lc);
  102. }
  103. static inline void uc1601s_system_reset(void) {
  104. uc1601s_write_command(UC1601S_SYSTEMRESET);
  105. }
  106. #define UC1601S_BIAS_RATIO_6 0x0
  107. #define UC1601S_BIAS_RATIO_7 0x1
  108. #define UC1601S_BIAS_RATIO_8 0x2
  109. #define UC1601S_BIAS_RATIO_9 0x3
  110. static inline void uc1601s_set_lcd_bias_ratio(unsigned char br) {
  111. br &= 0x3;
  112. uc1601s_write_command(UC1601S_BR | br);
  113. }
  114. static inline void uc1601s_set_com_end(unsigned char cen) {
  115. uc1601s_write_command(UC1601S_CEN);
  116. uc1601s_write_command(cen);
  117. }
  118. static inline void uc1601s_set_partial_display_start(unsigned char dst) {
  119. uc1601s_write_command(UC1601S_DST);
  120. uc1601s_write_command(dst);
  121. }
  122. static inline void uc1601s_set_partial_display_end(unsigned char den) {
  123. uc1601s_write_command(UC1601S_DEN);
  124. uc1601s_write_command(den);
  125. }