Суббота, Сентябрь 19, 2020

Пример 7.7 PIC18 Си стр276-Жки

TABLE6instruction

TABLE

#include<p18cxxx.h>
#include<delays.h>
#include<string.h>
#pragma config OSC=RC
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma config BOR=OFF
#pragma config MCLRE=OFF
#define LCD PORTB
#define RS  PORTBbits.RB5
#define E   PORTBbits.RB4

rom far char str1[]="I am PIC18F1320!";
rom far char str2[]="How are you?";
rom far char str3[]="It works!";
rom far char str4[]="It's the program";
rom far char str5[]="for 2 MHz";
char buf[16];
#pragma code
void SendLCDdata(char data,char rs)
{
    LCD=(data>>4)&0x0f;
    RS=rs;
    E=1;
    Nop();
    E=0;
    Delay10TCYx(2);
    LCD=data&0x0f;
    RS=rs;
    E=1;
    Nop();
    E=0;
    Delay10TCYx(2);
}
void SendLCDnibble(char nibble,char rs)
{
    LCD=nibble&0x0f;
    RS=rs;
    E=1;
    Nop();
    E=0;
    Delay10TCYx(2);
}
void CLR(void)
{
    SendLCDdata(1,0);
    Delay1KTCYx(1);
}
void InitLCD(void)
{
    Delay1KTCYx(10);
    SendLCDnibble(3,0);
    Delay1KTCYx(2);
    SendLCDdata(3,0);
    Delay10TCYx(6);
    SendLCDdata(0x32,0);
    SendLCDdata(0x28,0);      //установка:данные по 4 бита,дисплей 2 строки,сиволы 5х7 точек
    SendLCDdata(0x08,0);      //выключаем дисплей
    SendLCDdata(0x01,0);      //чистим дисплей  
    Delay1KTCYx(1);           //требуется для очистки дисплея 2мс
    SendLCDdata(0x06,0);      //установка:курсор инкриментируется,сдвига индикации нет.
    SendLCDdata(0x0C,0);      //влючаем дисплей,курсор выключен,мигание выключено
}
void SendLCDstring(char *str,char position)
{
    int ptr=0;
    SendLCDdata(position,0);
    while(str[ptr]!=0){
        SendLCDdata(str[ptr++],1);
    }
}    
void main(void)
{
    ADCON1=0x7f;
    TRISB=0;
    PORTB=0;
    InitLCD();
    while(1)
    {
        int i;
        for(i=0;i<200;i++){
            strcpypgm2ram(buf,str1);
            SendLCDstring(buf,0x80);
            strcpypgm2ram(buf,str2);
            SendLCDstring(buf,0xc0);
        }
        CLR();
        for(i=0;i<400;i++){
            strcpypgm2ram(buf,str3);
            SendLCDstring(buf,0x80);
        }
        CLR();
        for(i=0;i<400;i++){
            strcpypgm2ram(buf,str4);
            SendLCDstring(buf,0x80);
            strcpypgm2ram(buf,str5);
            SendLCDstring(buf,0xc0);
        }
        CLR();
    }
}

primer-77-pic18-si-str276-zhki



НАЗАД                                                                                                                                         ДАЛЕЕ


Back to Top