Professional Documents
Culture Documents
08 Тајмери - lcd Pic16f887
08 Тајмери - lcd Pic16f887
PIC16F887 МИКРОКОНТОРЛЕР
Аудиториски вежби 8
Прекини
Прекини
Што се случува откако ќе настане прекин?
Тековната инструкција е се довршува
Адресата на следната инструкција се става на стек
Се извршува рутината за справување со прекин
(interrupt service routine) која почнува на адресата
0004 (има само еден вектор на прекин)
Откако ќе завршу рутината се извршува
инструкцијата RETFIE по што адресата на следната
инструкција која требаше да се изврши кога се случи
прекин се вади од стек и таа следна се извршува
Прекини
Рутината за справување со прекин во програма во
MikroC e во функцијата именувана interrupt
Секогаш кога ќе настане прекин се повикува оваа
функција
Но претходно, прекинот треба да биде овозможен
(enabled)
Сетирање на одредени битови кај регистрите за специјална
намена
Прекини
INTCON (1):
За овозможување на прекини
IE – Interrupt Enable
Прекини
INTCON (2):
GIE - Global Interrupt Enable bit
PEIE - Peripheral Interrupt Enable bit
T0IE - TMR0 Overflow Interrupt Enable bit
INTE - RB0/INT External Interrupt Enable bit
RBIE - RB Port Change Interrupt Enable bit.
Прекини
Ако сакате да се справите со одреден прекин ваша
задача е да ја дефинирате функција interrupt
Постојат различни извори на прекин
Најчесто за различен извор на прекин на различен
начин се справуваме со прекинот
Значајна е идентификацијата на типот на прекин
Вредности на одредени битови од SFR
Прекини
INTCON (3):
void main() {
OPTION_REG = 0x84; // Се поставуваат опции за TMR0 (прескалер)
ANSEL = 0;
ANSELH = 0;
TMR0 = 96; // Тајмерот брои од 96 до 255
INTCON = 0xA0; // Се сетира INTCON за да се овозможи TMR0
cnt = 0; // Бројот на прекини се иницијлизира на 0
do {
if (cnt == 400) {
cnt = 0; // Се ресетира cnt
}
} while(1);
}
Имплементација на Тајмер TMR0
Со кодот
do {
if (cnt == 400) {
cnt = 0; // Се ресетира cnt
}
} while(1);
Подобрување:
cnt*w*p = 250* 250* 32 = 2 000 000
PORTB=0x00;
}
LCD дисплеј
• Една од дополнителните компоненти (излезен
уред)
• HD44780 microcontroller (Hitachi)
• 2x16 Алфанумерички карактери
• Појавување на курсор
• Позадинска светлина
LCD дисплеј
Еден знак - 5x8 матрица од пиксели
Зелена позадинска светлина
Пиксели каде не се гледа позадинската светлина
формираат знакот
Потенциометар за подесување на прилагодување на
контрастот
LCD меморија
DDRAM меморија
Ако се пратат повеќе од 16 знаци за еден од редовите на
дисплејот повеќето (до 40) ќе се зачуваат, но ќе се
прикажат само првите 16
Команда за поместување ќе овозможува приказ на
другите меморирани знаци
LCD меморија
CGROM
Character
Generator RОM;
Предефинирана
мапа на знаците
Адреса=ASCII код
LCD Дисплеј
LCD Дисплеј
• Интерфејтот меѓу контролерот и LCD се поставува при
иницијализација и може да биде со 4 или 8 бита
• 8 бита: ASCII кодовите се праќаат преку податочните линии
DB0- DB7
• 4 бита: Кога интерфејсот е со 4 бита се користат само 4
податочни линии (D4-D7)
• Својства
• Брзината на преносот со 4 битови е помала, но тоа не
незначително
• Кога се користат 4 битови се штеди на пинови од
микроконторлерот кои може да се користат за други
цели
• Најчесто се користат 4 битови
LCD дисплеј
Пинови на LCD
8 (4) пинови може да се користат за пренос на
податоци/команди
Адреса на DDRAM - каде?
Адреса на CGROM – што?
3 пинови за контрола на работата
RS –1 се примаат податоци, 0 се примаат команди (Register
Select )
R/W- Read/Write
E - 0 – оневозможена работа на LCD, 1 работа на LCD
Заземјување
Напојување
Контраст
Конекција на LCD- дефинирање на
променливи
Променлива: Опис: Пример:
extern sfr sbit LCD_RS: Register Select line. sbit LCD_RS at RB4_bit;
extern sfr sbit LCD_EN: Enable line. sbit LCD_EN at RB5_bit;
extern sfr sbit LCD_D7; Data 7 line. sbit LCD_D7 at RB3_bit;
extern sfr sbit LCD_D6; Data 6 line. sbit LCD_D6 at RB2_bit;
extern sfr sbit LCD_D5; Data 5 line. sbit LCD_D5 at RB1_bit;
extern sfr sbit LCD_D4; Data 4 line. sbit LCD_D4 at RB0_bit;
sbit LCD_RS_Direction at
extern sfr sbit LCD_RS_Direction; Register Select direction pin.
TRISB4_bit;
sbit LCD_EN_Direction at
extern sfr sbit LCD_EN_Direction; Enable direction pin.
TRISB5_bit;
sbit LCD_D7_Direction at
extern sfr sbit LCD_D7_Direction; Data 7 direction pin.
TRISB3_bit;
sbit LCD_D6_Direction at
extern sfr sbit LCD_D6_Direction; Data 6 direction pin.
TRISB2_bit;
sbit LCD_D5_Direction at
extern sfr sbit LCD_D5_Direction; Data 5 direction pin.
TRISB1_bit;
sbit LCD_D4_Direction at
extern sfr sbit LCD_D4_Direction; Data 4 direction pin.
TRISB0_bit;
Пример