Написать программу для отображения на экране ЖКИ тестовой строки «LCDTest»

Страницы работы

Содержание работы

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»

Отчет по лабораторной работе №5

Преподаватель: Ухов А.А.

Выполнили: Прутковский В.

Тарасов К.

Гр. 7203

Санкт-Петербург

2011

Задание 1.

Написать программу для отображения на экране ЖКИ тестовой строки «LCDTest» двумя способами

а) по символьно:

// main.c

#include "includes.h"

#include "irq.h"

const char LCD_Info [] = "LCD Test";

void Delay(int value) //Caaa??ea ia value iee?inaeoia

{

    for(int j = 0; j < value; j++)

      for(int i = 0; i < 10; i++)

        i = i;

}

void InitVIC(void)

{

  DWORD i = 0;

  DWORD *vect_addr, *vect_cntl;

  VICINTENCLEAR  = 0xFFFFFFFF; //Eieoeaeecaoey VIC

  VICADDRESS     = 0;

  VICINTSELECT   = 0;

  for(i = 0; i < VIC_SIZE; i++) //Ia?aeuiay onoaiiaea a 0 aaeoi?ia

  {

    vect_addr = (DWORD *)(VIC_BASE_ADDR + VECT_ADDR_INDEX + i * 4);

    vect_cntl = (DWORD *)(VIC_BASE_ADDR + VECT_CNTL_INDEX + i * 4);

    *vect_addr = 0x0; 

    *vect_cntl = 0xF;

  }

}

void InstallIRQ(DWORD IntNumber, void *HandlerAddr, DWORD Priority)

{

  DWORD *vect_addr;

  DWORD *vect_cntl;

  VICINTENCLEAR = 1 << IntNumber; //Cai?ao i?a?uaaiey ia a?aiy iano?ieee

  // Iiene ia?aiai naiaiaiiai VIC aa?ana

  vect_addr = (DWORD *)(VIC_BASE_ADDR + VECT_ADDR_INDEX + IntNumber * 4);

  vect_cntl = (DWORD *)(VIC_BASE_ADDR + VECT_CNTL_INDEX + IntNumber * 4);

  // Onoaiiaea aaeoi?a i?a?uaaiey

  *vect_addr = (DWORD)HandlerAddr;

  *vect_cntl = Priority;

  // ?ac?aoaiea i?a?uaaiey

  VICINTENABLE = 1 << IntNumber;

}

__irq __nested __arm void TimerHandler0()

{    

  T0IR = 0x01;

  FIO2PIN = ~(FIO2PIN); // Eiaa?oe?iaaou naaoiaeiau

  VICADDRESS = 0; // Na?in i?a?uaaiey

}

void InitTimer0()

{

  T0TCR &= ~0x01; // Cai?aoeou oaeia?

  T0IR   = 0x01; // Eiioeao?aoey ?aaeno?a i?a?uaaiee

  T0CTCR = 0; // Eiioeao?aoey ?aaeno?a oi?aaeaiey

  T0PC   = 0; // Eiioeao?aoey ?aaeno?a i?aaaaeeoaey

  T0MR0  = 1200000; // Eiioeao?aoey ?aaeno?a n?aaiaiey

                        // ?anoioa PCLK = 12 IAo

                            // aaeeony ia T0MR0 e aaao ?anoioo i?a?uaaiee 10Ao

  T0MCR  = (0x01 | 0x02); // Eiioeao?aoey ?aaeno?a oi?aaeaiey ?a?eia n?aaiaiey

  InstallIRQ( TIMER0_INT, (void *)TimerHandler0, 0x03);

  T0TCR |= 0x01; // ?ac?aoeou ?aaioo oaeia?a

}

void SetDataBusDirection(BOOL dir) // Onoaiiaea iai?aaeaiey ia?aaa?e aaiiuo

{

    if(dir) //Ia?aiaoa? 1 - caienu

    {

        FIO1DIR |= BIT_1;  //DB0 

        FIO1DIR |= BIT_4;  //DB1

        FIO1DIR |= BIT_8;  //DB2

        FIO1DIR |= BIT_9;  //DB3

        FIO1DIR |= BIT_10; //DB4

        FIO1DIR |= BIT_14; //DB5

        FIO1DIR |= BIT_15; //DB6

        FIO1DIR |= BIT_16; //DB7

    }

    else //A i?ioeaiii neo?aa ?oaiea

    {

        FIO1DIR &= ~BIT_1;  //DB0 

        FIO1DIR &= ~BIT_4;  //DB1

        FIO1DIR &= ~BIT_8;  //DB2

        FIO1DIR &= ~BIT_9;  //DB3

        FIO1DIR &= ~BIT_10; //DB4

        FIO1DIR &= ~BIT_14; //DB5

        FIO1DIR &= ~BIT_15; //DB6

        FIO1DIR &= ~BIT_16; //DB7

Похожие материалы

Информация о работе