Микроконтроллер вывода рисунков на графический ЖК-индикатор

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    22,17 Кб
  • Опубликовано:
    2012-12-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Микроконтроллер вывода рисунков на графический ЖК-индикатор















Курсовая работа

Микроконтроллер вывода рисунков на графический ЖК-индикатор

Содержание

1. Техническое задание

. Разработка структурно-функциональной схемы

. Разработка принципиальной схемы

.1 Принципиальная схема и ее описание

.2 Выбор элементной базы

. Разработка программного обеспечения

.1 Алгоритм программы

.2 Листинг программы

. Заключение.

. Список используемой литературы

Приложение

1. Техническое задание

Необходимо спроектировать схему на основе микроконтроллера для вывода рисунков на графический ЖК-индикатор. Графические данные должны поступать с LPT порта, обрабатываться микроконтроллером и затем выводиться на дисплей.

Написать программу для контроллера, которая будет обрабатывать поступающие с LPT порта данные, и выводить их на ЖК-дисплей.

2. Разработка структурно-функциональной схемы

Рис.1. Структурно-функциональная схема.

Назначение блоков и принцип работы структурно-функциональной схемы.

· LPT порт - 25-контактный параллельный порт персонального компьютера. По сигналу Ack# приходящему от микроконтроллера, он может отправлять графические данные (набор координат X, Y) для MCS - 51 по протоколу Centronics. При этом он выставляет сигнал Strobe#, по которому буферный регистр начинает принимать данные, а микроконтроллер считывает их.

· Буферный регистр. Предназначен для хранения данных, присланных LPT портом.

· MCS-51 - микроконтроллер серии МК51. Он принимает по прерыванию INT0 два байта, означающие соответственно, координаты X и Y выводимой точки, преобразует их в один байт для битовой карты графического дисплея и отсылает его на ЖК-дисплей.

· LCD дисплей - жидкокристаллический дисплей. Высвечивает принятый от микроконтроллера байт.

3. Разработка принципиальной схемы

3.1 Принципиальная схема и ее описание

Принципиальная схема приведена на чертеже КП02.98020088.01.Э3.

С помощью LPT порта по протоколу Centronics графические данные передаются с персонального компьютера через буферный регистр-защелку на микроконтроллер. Данные подаются на 8-битную шину данных порта в виде последовательности байтов. В каждом байте содержится одна координата (X или Y), причем они должны чередоваться.

Буферный регистр начинает считывать данные только по положительному перепаду сигнала на входе С, который происходит при подаче сигнала Strobe# через инвертор на одиннадцатую линию регистра. После этого он защелкивается и переходит в режим хранения до следующего перепада на С.

Микроконтроллер после программного сброса и инициализации ЖК-дисплея, которую он производит, засылая последовательность из семи трехбайтовых команд на 8-разрядную шину данных, выставляет высокий уровень на 36 линию, сигнализируя этим LPT порту о своей готовности к приему информации.

После этого MCS-51 переходит в режим ожидания до тех пор, пока не возникнет прерывание INT0 по сигналу на двенадцатой линии микроконтроллера.

Как только это происходит, он считывает данные с порта P1. Затем микроконтроллер снова сообщает о готовности к приему. После принятия двух байт MCS-51 обрабатывает их, получая координату в битовой карте дисплея, где необходимо засветить точку.

Микроконтроллер считывает байт, находящийся по этой координате, накладывает на него маску для того, чтобы засветить только нужную точку и затем отправляет его на дисплей.

3.2 Выбор элементной базы

Микросхема XP1 - параллельный LPT порт.

Кварцевый резонатор ZQ1 - 16МГц типа РГ-5-16МГц

Микросхема DD1 - К1554ИР23. 8-разрядный буферный регистр-защелка.

Микросхема DD2 - микроконтроллер АТ89С52.

Микросхема DD3 - жидкокристаллический дисплей Hantronix 240x64.

Микросхема DD4 - КР1554ЛН1. Микросхема представляет собой 6 инверторов.

Конденсаторы С2 и С3 выбираются равными 33 пФ, C1 -1 мкФ.

Резисторы R1 - 20КОм, R2 - 10 КОм.

Диод VD1 - КД521.

4. Разработка программного обеспечения

4.1 Алгоритм программы

Сначала микроконтроллер осуществляет программный сброс жидкокристаллического дисплея, посылая на вход RST нулевое значение, поддерживая его в течение 2 микросекунд. Затем производится инициализация дисплея следующим образом:

· Проверяется готовность дисплея к приему байтов команд.

· На вход СD через выход Р2.2 подается высокий уровень сигнала, означающий, что присланный байт будет являться командой.

· В порт Р0 записывается байт команды.

· Активизируется вход WR с помощью подачи через выход P2.0 сигнала низкого уровня для считывания байта дисплеем с входов D0¸D7.

· На входе WR (через выход Р2.0) снова устанавливается логическая единица, означающая конец считывания байта команды.

Таким образом, на дисплей посылается последовательность из 21 байта (семь команд).

Затем микроконтроллер посылает на линию Ack# LPT порта через выход Р2.4 логическую единицу, означающую готовность к приему, после чего разрешает все прерывания.

По приходу логического нуля на 12 линию микроконтроллера возникает прерывание INT0, вступает в действие обработчик этого прерывания, который считывает данные с порта Р1 и запускает процедуру обработки принятого байта.

В вызванной процедуре принятый байт запоминается и микроконтроллер ожидает следующего байта выставляя единицу на Р2.4.

Когда приходит второй байт, процедура обработки принятого байта, используя первый байт, вычисляет координату на битовой карте дисплея.

Затем микроконтроллер считывает с LCD байт с таким же местоположением, следующим способом:

· На выход Р2.2 выставляется единица, означающая что будет команда.

· На порт Р0 посылается поочередно три байта команды установки позиции на битовой карте дисплея.

· Считывается байт, записанный в этой позиции.

Затем на считанный байт накладывается маска, указывающая какой бит необходимо засветить, и байт посылается обратно на свое место на дисплее.

В программе также предусмотрена возможность очистки дисплея, которая происходит при посылании с LPT порта байта 0FFH.

4.2 Листинг программы

ts:do;

$include(reg51.dcl)(i,r0,r1,a,a1,x,y,bait,ostatok,nomer,counter,mask,j) byte,(*) byte constant (80h, 07h, 40h,     

eh, 00h, 41h,

h, 00h, 42h,

eh, 00h, 43h,

00h, 00h, 81h,

h, 00h, 98h);

/*Проверка готовности дисплея*/

status: procedure;c byte;=p2 or 00000100b; /*cd=1*/=0ffh;=0bh;=0;while r1-c<>0;=p2 and 11111101b; /*rd=0*/=p0;=p2 or 00000010b;        /*rd=1*/=r1 and c;;status;

/*Чтение байта с дисплея*/: procedure;status;=p2 or 00000100b; /*cd=1*/=low(nomer);=p2 and 11111110b; /*wr=0*/=p2 or 00000001b; /*wr=1*/=high(nomer);=p2 and 11111110b; /*wr=0*/=p2 or 00000001b; /*wr=1*/=24h;=p2 and 11111110b; /*wr=0*/=p2 or 00000001b; /*wr=1*/=p0 and 11111011b; /*cd=0*/=p2 and 11111101b; /*rd=0*/=p0;=p2 or 00000010b; /*rd=1*/read;

/*Запись байта на дисплей*/

write: procedure;

p0=a;=p2 and 11111110b; /*wr=0*/=p2 or 00000001b; /*wr=1*/write;

/*Обработка принятых от LPT координат*/

send: procedure;

if a=0ffh then goto label1;         /*Если пользователь засылает 0ffh, то дисплей очищается и снова готов к приему*/

counter=counter+1;counter=2 then ;=0;=a;/*координата по Y*/

mask=10000000b;

if x>7 then bait=y*30+x/8; /*вычисление байта на битовой карте дисплея*/

else bait=y*30;=bait;=x mod 8;/*вычисление бита*/

mask=ror(mask, ostatok); /*циклический сдвиг вправо переменной mask на ostatok позиций*/

call read;/*чтение байта с дисплея*/

a=mask or a;/*наложение маски на считанный байт*/

call status;/*проверка готовности дисплея*/

p2=p2 or 00000100b;/*cd=1*/=low(nomer);=p2 and 11111110b;/*wr=0*/=p2 or 00000001b;/*wr=1*/=high(nomer);=p2 and 11111110b;/*wr=0*/=p2 or 00000001b;/*wr=1*/=24h;=p2 and 11111110b;/*wr=0*/=p2 or 00000001b;/*wr=1*/2=p2 and 11111011b;/*cd=0*/

call write;/*вывод байта на дисплей*/

p2=p2 or 00010000b;/*готов к приему*/

end;;=a;/*координата по X*/

a=0;=p2 or 00010000b;/*ack=1*/; send;

*Получение байта от LPT*/

receive: procedure interrupt 0;

a=p1; /*считывание из порта P1*/

call send;/*вызов процедуры обработки принятого байта*/

end receive;

/*Инициализация дисплея*/: procedure;i=0 to 20;

a=inibyte(i); status;/*проверка готовности дисплея*/

p2=p2 or 00000100b;/*cd=1*/

call write;/*вывод байта на дисплей*/

p2=p2 and 11111011b;/*cd=0*/;

end initialization;

/*-------------------НАЧАЛО ПРОГРАММЫ---------------------------*/

/*Программный сброс дисплея в течение 2-х микросекунд*/

label1: p2=p2 and 11110111b;  /*RST=0*/i=0 to 25;

end;=p2 or 00001000b;/*RST=1*/

/*инициализация дисплея*/initialization;

/*acknowledge - готов к приему*/=p2 or 00010000b;/*Ack=1*/;/*разрешение прерываний*/=0;while 1;;;

При написании программы была использована библиотека, указанная в программе как файл reg51.dcl. Его листинг приведен ниже:

/* Copyright 1982,1983,1986 Intel Corporation */

/* REGISTER DECLARATIONS FOR 8051 */

$nolistREG LITERALLY 'REGISTER';

/********* BYTE REGISTERS ********/BYTE AT(80H) REG,BYTE AT(90H) REG,BYTE AT(0A0H) REG,BYTE AT(0B0H) REG,BYTE AT(0D0H) REG,BYTE AT(0E0H) REG,BYTE AT(0F0H) REG,BYTE AT(81H) REG,BYTE AT(82H) REG,BYTE AT(83H) REG,BYTE AT(84H) REG,BYTE AT(87H) REG,BYTE AT(88H) REG,BYTE AT(89H) REG,BYTE AT(8AH) REG,BYTE AT(8BH) REG,BYTE AT(8CH) REG,BYTE AT(8DH) REG,BYTE AT(0A8H) REG,BYTE AT(0B8H) REG,BYTE AT(98H) REG,BYTE AT(99H) REG;

/********* BIT REGISTERS ********/

/********* PSW BITS ********/BIT AT(0D7H) REG,BIT AT(0D6H) REG,BIT AT(0D5H) REG,BIT AT(0D4H) REG,BIT AT(0D3H) REG,BIT AT(0D2H) REG,BIT AT(0D0H) REG,

/********* TCON BITS ********/BIT AT(8FH) REG,BIT AT(8EH) REG,BIT AT(8DH) REG,BIT AT(8CH) REG,BIT AT(8BH) REG,BIT AT(8AH) REG,BIT AT(89H) REG,BIT AT(88H) REG,

/********* IE BITS ********/BIT AT(0AFH) REG,BIT AT(0ACH) REG,BIT AT(0ABH) REG,BIT AT(0AAH) REG,BIT AT(0A9H) REG,BIT AT(0A8H) REG,

/********* IP BITS ********/BIT AT(0BCH) REG,BIT AT(0BBH) REG,BIT AT(0BAH) REG,BIT AT(0B9H) REG,BIT AT(0B8H) REG,

/********* P3 BITS ********/BIT AT(0B7H) REG,BIT AT(0B6H) REG,BIT AT(0B5H) REG,BIT AT(0B4H) REG,BIT AT(0B3H) REG,BIT AT(0B2H) REG,BIT AT(0B1H) REG,BIT AT(0B0H) REG,

/********* SCON BITS ********/BIT AT(9FH) REG,BIT AT(9EH) REG,BIT AT(9DH) REG,BIT AT(9CH) REG,BIT AT(9BH) REG,BIT AT(9AH) REG,BIT AT(99H) REG,BIT AT(98H) REG;

$list

После компиляции получился .hex файл, листинг которого приведен ниже:

:1021F1008007401E00410000421E00430000810094

:0522010000240000981C

:10202600E5A04404F5A07580FF75150B750A00E55B

:102036000AC395156017E5A054FDF5A085800AE54D

:10204600A04402F5A0E50A5515F50A80E222122001

:1020560026E5A04404F5A0E511F580E5A054FEF5BB

:10206600A0E5A04401F5A0E4F580E5A054FEF5A0A6

:10207600E5A04401F5A0758024E5A054FEF5A0E591

:10208600A04401F580E58054FBF5A0E5A054FDF5DC

:10209600A085800BE5A04402F5A022850B80E5A073

:1020A60054FEF5A0E5A04401F5A022E50BB4FF031C

:1020B60002216E0512E512B4020280030221617547

:1020C6001200850B0E751380E50DD394074018E5B5

:1020D6000E75F01EA4FFAEF0E50D75F00884FD7CCC

:1020E60000EF2DF50F800BE50E75F01EA4FFAEF088

:1020F6008F0F850F11E50D75F00884AFF07E008F08

:102116000BF50B122026E5A04404F5A0E511F58089

:10212600E5A054FEF5A0E5A04401F5A0E4F580E5A0

:10213600A054FEF5A0E5A04401F5A0758024E5A015

:1021460054FEF5A0E5A04401F5A0E5A054FBF5A0DA

:102156001220A1E5A04410F5A0800C850B0D750B8F

:1021660000E5A04410F5A0229021A812220F859028

:102176000B1220B122750800E508D394145022E50D

:10218600089021F193F50B122026E5A04404F5A052

:102196001220A1E5A054FBF5A07808740126F6509C

:1021A600D722E5A054F7F5A0750800E508D39419E1

:1021B60050087808740126F650F1E5A04408F5A009

:1021C60012217BE5A04410F5A0D2AF75120080FE67

:05220F00758116E47367

:030003000221D601

:03000000022206D3

:0922060075811675D0000221A8B3

:1021D600C0E0C0F0C083C082C0D075D000122174A8

:0B21E600D0D0D082D083D0F0D0E03207

:00000001FF

5. Заключение

При выполнении данного курсового проекта была изучена архитектура микроконтроллера AT89C52 фирмы Atmel и построена на его основе микропроцессорная система управления выводом изображения на графический ЖК-дисплей. Также приобретены навыки программирования микропроцессорных систем.

микроконтроллер вывод данные порт дисплей

Приложение



Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!