Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * lb7.c
- *
- * Created: 05.12.2019 12:22:32
- * Author: Student
- */
- /*
- * lab5.c
- *
- * Created: 18.10.2019 15:16:49
- * Author: Student
- */
- #include <io.h>
- #include <mega128a.h>
- #include <delay.h>
- #define RS 7
- #define E 6
- unsigned char flag=0;
- unsigned char TabCon[] =
- {0x41,0xA0,0x42,0xA1,0xE0,0x45,0xA3,0xA4,0xA5,0xA6,0x4B, 0xA7,0x4D,0x48,0x4F,0xA8,0x50,0x43,0x54,0xA9,0xAA,0x58,
- 0xE1,0xAB,0xAC,0xE2,0xAD,0xAE,0x62,0xAF,0xB0,0xB1,0x61,
- 0xB2,0xB3,0xB4,0xE3,0x65,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,
- 0xBC,0xBD,0x6F,0xBE,0x70,0x63,0xBF,0x79,0x5C,0x78,0xE5,
- 0xC0,0xC1,0xE6,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7};
- void LCD_cmd(unsigned char cmd)
- {
- DDRD |= ((1<<E)|(1<<RS));// разряды PORTD на выход
- PORTD &= ~(1<<RS); // выбор регистра команд RS=0
- PORTC = cmd; // записать команду в порт PORTC
- PORTD |= (1<<E); // \ сформировать на
- delay_us(5); // | выводе E строб 1-0
- PORTD &= ~(1<<E); // / передачи команды
- delay_ms(100); // задержка для завершения записи
- }
- void LCD_out(unsigned char cmd)
- {
- DDRD |= ((1<<E)|(1<<RS));// разряды PORTD на выход
- PORTD = 1<<RS; // выбор регистра команд RS=0
- PORTC = cmd; // записать команду в порт PORTC
- PORTD |= (1<<E); // \ сформировать на
- delay_us(5); // | выводе E строб 1-0
- PORTD &= ~(1<<E); // / передачи команды
- delay_ms(100); // задержка для завершения записи
- }
- void LCD_init(void)
- {
- DDRC = 0xFF;// все разряды PORTC на выход
- DDRD |= ((1<<E)|(1<<RS));// разряды PORTD на выход
- delay_ms (100);// задержка для установления
- LCD_cmd(0x30);// \ вывод
- LCD_cmd(0x30);// | трех
- LCD_cmd(0x30);// / команд 0x30
- LCD_cmd(0x38);// 8 разр.шина, 2 строки, 5x7 точек
- LCD_cmd(0x0E);// включить ЖКИ и курсор, без мерцания
- LCD_cmd(0x06);// инкремент курсора, без сдвига экрана
- LCD_cmd(0x01);// очистить экран, курсор в начало
- }
- unsigned char Code(unsigned char symb)
- {
- return (symb >= 192 ? TabCon[symb-192]: symb);
- }
- void string(unsigned char* s )
- {
- while(*s!='\0')
- {
- LCD_out (Code( *s++)) ;
- }
- }
- void print (unsigned char a)
- {
- switch(a)
- {
- case 0 : string("евразия"); break;
- case 1 : string("африка"); break;
- case 2 : string("северная америка"); break;
- case 3 : string("южная америка"); break;
- case 4 : string("австралия"); break;
- case 5 : string("антарктика"); break;
- default : string("ошибка");
- }
- }
- interrupt[EXT_INT2]
- void new(void)
- {
- flag=!flag;
- if(flag)
- PORTE =0x50;
- else PORTE = 0x70;
- }
- void main(void)
- {
- unsigned char i;
- #asm("sei")
- LCD_init();
- EIMSK=0x04;
- EICRA=0x20;
- DDRA=0xFF;
- DDRE=1<<3|1<<4|1<<5;
- PORTA=1<<3;
- //DDRE=0x50;
- LCD_init();
- PORTE=0x70;
- while(1)
- {
- for(i=0;i<6;i++)
- {
- LCD_cmd(0x01);
- print (i);
- delay_ms(3000);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement