Advertisement
Guest User

Untitled

a guest
Jul 20th, 2013
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.55 KB | None | 0 0
  1. /*
  2.  * hd44780.h
  3.  */
  4.  
  5.  
  6. #ifndef HD44780_H_
  7. #define HD44780_H_
  8.  
  9. /* RS */
  10. #define SET_OUT_LCD_RS DDRD |= _BV(PD0)
  11. #define SET_LCD_RS PORTD |= _BV(PD0)
  12. #define CLR_LCD_RS PORTD &= ~_BV(PD0)
  13. /* RW */
  14. #define SET_OUT_LCD_RW DDRD |= _BV(PD1)
  15. #define SET_LCD_RW PORTD |= _BV(PD1)
  16. #define CLR_LCD_RW PORTD &= ~_BV(PD1)
  17. /* E */
  18. #define SET_OUT_LCD_E DDRD |= _BV(PD2)
  19. #define SET_LCD_E PORTD |= _BV(PD2)
  20. #define CLR_LCD_E PORTD &= ~_BV(PD2)
  21. /* D4 */
  22. #define SET_OUT_LCD_D4 DDRD |= _BV(PD3)
  23. #define SET_IN_LCD_D4 DDRD &= ~_BV(PD3)
  24. #define SET_LCD_D4 PORTD |= _BV(PD3)
  25. #define CLR_LCD_D4 PORTD &= ~_BV(PD3)
  26. #define IS_SET_LCD_D4 PIND & _BV(PD3)
  27. /* D5 */
  28. #define SET_OUT_LCD_D5 DDRD |= _BV(PD4)
  29. #define SET_IN_LCD_D5 DDRD &= ~_BV(PD4)
  30. #define SET_LCD_D5 PORTD |= _BV(PD4)
  31. #define CLR_LCD_D5 PORTD &= ~_BV(PD4)
  32. #define IS_SET_LCD_D5 PIND & _BV(PD4)
  33. /* D6 */
  34. #define SET_OUT_LCD_D6 DDRD |= _BV(PD5)
  35. #define SET_IN_LCD_D6 DDRD &= ~_BV(PD5)
  36. #define SET_LCD_D6 PORTD |= _BV(PD5)
  37. #define CLR_LCD_D6 PORTD &= ~_BV(PD5)
  38. #define IS_SET_LCD_D6 PIND & _BV(PD5)
  39. /* D7 */
  40. #define SET_OUT_LCD_D7 DDRD |= _BV(PD6)
  41. #define SET_IN_LCD_D7 DDRD &= ~_BV(PD6)
  42. #define SET_LCD_D7 PORTD |= _BV(PD6)
  43. #define CLR_LCD_D7 PORTD &= ~_BV(PD6)
  44. #define IS_SET_LCD_D7 PIND & _BV(PD6)
  45.  
  46. #define LCD_NOP asm volatile("nop\n\t""nop\n\t" "nop\n\t" "nop\n\t" ::);
  47.  
  48.  
  49.  
  50. #define LCDCOMMAND 0
  51. #define LCDDATA    1
  52.  
  53. #define LCD_LOCATE(x,y)  WriteToLCD(0x80|((x)+((y)*0x40)), LCDCOMMAND)
  54.  
  55. #define LCD_CLEAR              WriteToLCD(0x01, LCDCOMMAND)
  56. #define LCD_HOME               WriteToLCD(0x02, LCDCOMMAND)
  57.  
  58. /* IDS */
  59.  
  60. #define LCDINCREMENT           0x02
  61. #define LCDDECREMENT           0x00
  62. #define LCDDISPLAYSHIFT        0x01
  63.  
  64. #define LCD_ENTRY_MODE(IDS)    WriteToLCD(0x04|(IDS), LCDCOMMAND)
  65.  
  66. /* BCD */
  67. #define LCDDISPLAY             0x04
  68. #define LCDCURSOR              0x02
  69. #define LCDBLINK               0x01
  70.  
  71. #define LCD_DISPLAY(DCB)       WriteToLCD(0x08|(DCB), LCDCOMMAND)
  72.  
  73. /* RL */
  74. #define LCDLEFT                0x00
  75. #define LCDRIGHT               0x04
  76.  
  77. #define LCD_SHIFT_DISPLAY(RL)  WriteToLCD(0x18|(RL), LCDCOMMAND)
  78. #define LCD_SHIFT_CURSOR(RL)   WriteToLCD(0x10|(RL), LCDCOMMAND)
  79.  
  80. #define LCD_CGRAM_ADDRESS(A)   WriteToLCD(0x40|((A)&0x3f), LCDCOMMAND)
  81. #define LCD_DDRAM_ADDRESS(A)   WriteToLCD(0x80|((A)&0x7f), LCDCOMMAND)
  82.  
  83. #define LCD_WRITE_DATA(D)      WriteToLCD((D),LCDDATA)
  84.  
  85.  
  86. void lcd_init(void);
  87. void WriteToLCD(unsigned char v,unsigned char rs);
  88. unsigned char ReadAddressLCD(void);
  89. void lcd_puts(char *str);
  90. #endif /* HD44780_H_ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement