Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 8000000 // CPU frequency = 8MHz
- #include <avr/io.h>
- #include <util/delay.h>
- #define RS 2 // RS = PD2
- #define E 3 // E = PD3
- static void lcd_write(int data) {
- PORTD &= 0x0F; // clear old data
- PORTD |= (data & 0xF0); // set new data
- _delay_us(100);
- PORTD |= (1 << E); // E = 1
- _delay_us(1700);
- PORTD &= ~(1 << E); // E = 0
- }
- void lcd_command(unsigned char comm) {
- PORTD &= ~(1 << RS); // RS = 0
- lcd_write(comm);
- lcd_write(comm << 4);
- }
- void lcd_putc(unsigned char data) {
- PORTD |= (1 << RS); // RS = 1
- lcd_write(data);
- lcd_write(data << 4);
- }
- void lcd_init(void) {
- PORTD &= 0x03;
- DDRD |= 0xfc;
- _delay_ms(100);
- // This places the LCD in 4-bit mode.
- lcd_write(0x30); _delay_ms(5);
- lcd_write(0x30); _delay_ms(1);
- lcd_write(0x30); _delay_us(100);
- lcd_write(0x20); _delay_us(100);
- // Now the LCD is in 4-bit mode.
- lcd_command(0x2C); // N & F
- lcd_command(0x08); // display off
- lcd_command(0x01); // display clear
- lcd_command(0x06); // inc mode, no shift
- lcd_command(0x0C); // display on
- lcd_command(0x02); // home
- }
- void lcd_puts(const char *str) {
- while (*str)
- lcd_putc(*str++);
- }
- void lcd_goto(unsigned char pos) {
- lcd_command(pos | 0x80);
- }
- int main(void) {
- lcd_init();
- lcd_puts("TOHA POBEGAILO");
- lcd_goto(0x40);
- lcd_puts("ZACHET");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement