Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #define F_CPU 8000000 // CPU frequency = 8MHz
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4.  
  5. #define RS 2 // RS = PD2
  6. #define E 3 // E = PD3
  7.  
  8. static void lcd_write(int data) {
  9. PORTD &= 0x0F; // clear old data
  10. PORTD |= (data & 0xF0); // set new data
  11. _delay_us(100);
  12. PORTD |= (1 << E); // E = 1
  13. _delay_us(1700);
  14. PORTD &= ~(1 << E); // E = 0
  15. }
  16.  
  17. void lcd_command(unsigned char comm) {
  18. PORTD &= ~(1 << RS); // RS = 0
  19. lcd_write(comm);
  20. lcd_write(comm << 4);
  21. }
  22.  
  23. void lcd_putc(unsigned char data) {
  24. PORTD |= (1 << RS); // RS = 1
  25. lcd_write(data);
  26. lcd_write(data << 4);
  27. }
  28.  
  29. void lcd_init(void) {
  30. PORTD &= 0x03;
  31. DDRD |= 0xfc;
  32. _delay_ms(100);
  33.  
  34. // This places the LCD in 4-bit mode.
  35. lcd_write(0x30); _delay_ms(5);
  36. lcd_write(0x30); _delay_ms(1);
  37. lcd_write(0x30); _delay_us(100);
  38. lcd_write(0x20); _delay_us(100);
  39.  
  40. // Now the LCD is in 4-bit mode.
  41. lcd_command(0x2C); // N & F
  42. lcd_command(0x08); // display off
  43. lcd_command(0x01); // display clear
  44. lcd_command(0x06); // inc mode, no shift
  45. lcd_command(0x0C); // display on
  46. lcd_command(0x02); // home
  47. }
  48.  
  49. void lcd_puts(const char *str) {
  50. while (*str)
  51. lcd_putc(*str++);
  52. }
  53.  
  54. void lcd_goto(unsigned char pos) {
  55. lcd_command(pos | 0x80);
  56. }
  57.  
  58. int main(void) {
  59. lcd_init();
  60.  
  61. lcd_puts("TOHA POBEGAILO");
  62. lcd_goto(0x40);
  63. lcd_puts("ZACHET");
  64.  
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement