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

Изучение архитектуры микроконтроллера AT89C52 фирмы Atmel. Разработка проектной схемы вывода рисунков на графический ЖК-индикатор на основе микроконтроллера. Составление программы по обработке и выводу на жидкокристаллический дисплей данных с LPT порта.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.12.2012
Размер файла 76,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

17

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

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

Содержание

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

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

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

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

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

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

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

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

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

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

Приложение

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 сигнала низкого уровня для считывания байта дисплеем с входов D0D7.

· На входе 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)

declare (i,r0,r1,a,a1,x,y,bait,ostatok,nomer,counter,mask,j) byte,

inibyte(*) byte constant (80h, 07h, 40h,

1eh, 00h, 41h,

00h, 00h, 42h,

1eh, 00h, 43h,

00h, 00h, 81h,

00h, 00h, 24h,

00h, 00h, 98h);

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

status: procedure;

declare c byte;

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

p0=0ffh;

c=0bh;

r1=0;

do while r1-c<>0;

p2=p2 and 11111101b; /*rd=0*/

r1=p0;

p2=p2 or 00000010b; /*rd=1*/

r1=r1 and c;

end;

end status;

/*Чтение байта с дисплея*/

read: procedure;

call status;

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

p0=low(nomer);

p2=p2 and 11111110b; /*wr=0*/

p2=p2 or 00000001b; /*wr=1*/

p0=high(nomer);

p2=p2 and 11111110b; /*wr=0*/

p2=p2 or 00000001b; /*wr=1*/

p0=24h;

p2=p2 and 11111110b; /*wr=0*/

p0=p2 or 00000001b; /*wr=1*/

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

p2=p2 and 11111101b; /*rd=0*/

a=p0;

p2=p2 or 00000010b; /*rd=1*/

end read;

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

write: procedure;

p0=a;

p2=p2 and 11111110b; /*wr=0*/

p2=p2 or 00000001b; /*wr=1*/

end write;

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

send: procedure;

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

counter=counter+1;

if counter=2 then

do;

counter=0;

y=a;/*координата по Y*/

mask=10000000b;

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

else bait=y*30;

nomer=bait;

ostatok=x mod 8;/*вычисление бита*/

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

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

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

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

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

p0=low(nomer);

p2=p2 and 11111110b;/*wr=0*/

p2=p2 or 00000001b;/*wr=1*/

p0=high(nomer);

p2=p2 and 11111110b;/*wr=0*/

p2=p2 or 00000001b;/*wr=1*/

p0=24h;

p2=p2 and 11111110b;/*wr=0*/

p2=p2 or 00000001b;/*wr=1*/

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

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

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

end;

else

do;

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

a=0;

p2=p2 or 00010000b;/*ack=1*/

end;

end send;

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

receive: procedure interrupt 0;

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

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

end receive;

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

initialization: procedure;

do i=0 to 20;

a=inibyte(i);

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

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

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

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

end;

end initialization;

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

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

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

do i=0 to 25;

end;

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

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

call initialization;

/*acknowledge - готов к приему*/

p2=p2 or 00010000b;/*Ack=1*/

enable;/*разрешение прерываний*/

counter=0;

do while 1;

end;

end;

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

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

/* REGISTER DECLARATIONS FOR 8051 */

$nolist

DECLARE REG LITERALLY 'REGISTER';

/********* BYTE REGISTERS ********/

DECLARE

P0 BYTE AT(80H) REG,

P1 BYTE AT(90H) REG,

P2 BYTE AT(0A0H) REG,

P3 BYTE AT(0B0H) REG,

PSW BYTE AT(0D0H) REG,

ACC BYTE AT(0E0H) REG,

B BYTE AT(0F0H) REG,

SP BYTE AT(81H) REG,

DPL BYTE AT(82H) REG,

DPH BYTE AT(83H) REG,

DPP BYTE AT(84H) REG,

PCON BYTE AT(87H) REG,

TCON BYTE AT(88H) REG,

TMOD BYTE AT(89H) REG,

TL0 BYTE AT(8AH) REG,

TL1 BYTE AT(8BH) REG,

TH0 BYTE AT(8CH) REG,

TH1 BYTE AT(8DH) REG,

IE BYTE AT(0A8H) REG,

IP BYTE AT(0B8H) REG,

SCON BYTE AT(98H) REG,

SBUF BYTE AT(99H) REG;

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

/********* PSW BITS ********/

DECLARE

CY BIT AT(0D7H) REG,

AC BIT AT(0D6H) REG,

F0 BIT AT(0D5H) REG,

RS1 BIT AT(0D4H) REG,

RS0 BIT AT(0D3H) REG,

OV BIT AT(0D2H) REG,

P BIT AT(0D0H) REG,

/********* TCON BITS ********/

TF1 BIT AT(8FH) REG,

TR1 BIT AT(8EH) REG,

TF0 BIT AT(8DH) REG,

TR0 BIT AT(8CH) REG,

IE1 BIT AT(8BH) REG,

IT1 BIT AT(8AH) REG,

IE0 BIT AT(89H) REG,

IT0 BIT AT(88H) REG,

/********* IE BITS ********/

EA BIT AT(0AFH) REG,

ES BIT AT(0ACH) REG,

ET1 BIT AT(0ABH) REG,

EX1 BIT AT(0AAH) REG,

ET0 BIT AT(0A9H) REG,

EX0 BIT AT(0A8H) REG,

/********* IP BITS ********/

PS BIT AT(0BCH) REG,

PT1 BIT AT(0BBH) REG,

PX1 BIT AT(0BAH) REG,

PT0 BIT AT(0B9H) REG,

PX0 BIT AT(0B8H) REG,

/********* P3 BITS ********/

RD BIT AT(0B7H) REG,

WR BIT AT(0B6H) REG,

T1 BIT AT(0B5H) REG,

T0 BIT AT(0B4H) REG,

INT1 BIT AT(0B3H) REG,

INT0 BIT AT(0B2H) REG,

TXD BIT AT(0B1H) REG,

RXD BIT AT(0B0H) REG,

/********* SCON BITS ********/

SM0 BIT AT(9FH) REG,

SM1 BIT AT(9EH) REG,

SM2 BIT AT(9DH) REG,

REN BIT AT(9CH) REG,

TB8 BIT AT(9BH) REG,

RB8 BIT AT(9AH) REG,

TI BIT AT(99H) REG,

RI BIT AT(98H) REG;

$list

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

:1021F1008007401E00410000421E00430000810094

:0522010000240000981C

:10202600E5A04404F5A07580FF75150B750A00E55B

:102036000AC395156017E5A054FDF5A085800AE54D

:10204600A04402F5A0E50A5515F50A80E222122001

:1020560026E5A04404F5A0E511F580E5A054FEF5BB

:10206600A0E5A04401F5A0E4F580E5A054FEF5A0A6

:10207600E5A04401F5A0758024E5A054FEF5A0E591

:10208600A04401F580E58054FBF5A0E5A054FDF5DC

:10209600A085800BE5A04402F5A022850B80E5A073

:1020A60054FEF5A0E5A04401F5A022E50BB4FF031C

:1020B60002216E0512E512B4020280030221617547

:1020C6001200850B0E751380E50DD394074018E5B5

:1020D6000E75F01EA4FFAEF0E50D75F00884FD7CCC

:1020E60000EF2DF50F800BE50E75F01EA4FFAEF088

:1020F6008F0F850F11E50D75F00884AFF07E008F08

:1021060010E5130F2303DFFDF513122054E51345E5

:102116000BF50B122026E5A04404F5A0E511F58089

:10212600E5A054FEF5A0E5A04401F5A0E4F580E5A0

:10213600A054FEF5A0E5A04401F5A0758024E5A015

:1021460054FEF5A0E5A04401F5A0E5A054FBF5A0DA

:102156001220A1E5A04410F5A0800C850B0D750B8F

:1021660000E5A04410F5A0229021A812220F859028

:102176000B1220B122750800E508D394145022E50D

:10218600089021F193F50B122026E5A04404F5A052

:102196001220A1E5A054FBF5A07808740126F6509C

:1021A600D722E5A054F7F5A0750800E508D39419E1

:1021B60050087808740126F650F1E5A04408F5A009

:1021C60012217BE5A04410F5A0D2AF75120080FE67

:05220F00758116E47367

:030003000221D601

:03000000022206D3

:0922060075811675D0000221A8B3

:1021D600C0E0C0F0C083C082C0D075D000122174A8

:0B21E600D0D0D082D083D0F0D0E03207

:00000001FF

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

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

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

Приложение

Размещено на Allbest.ru


Подобные документы

  • Разработка компьютерной системы для считывания данных по последовательному порту и вывода обработанной информации на LCD индикатор. Выбор и обоснование режимов работы узлов микроконтроллера. Проектирование программного обеспечения микропроцессора.

    курсовая работа [380,5 K], добавлен 14.10.2010

  • Разработка устройства на базе микроконтроллера ATmega32 семейства AVR для обработки нажатия кнопок на стандартной клавиатуре PS/2 и вывода их значения на LCD-индикатор. Описание принципа работы протокола PS/2. Передача данных, коды сканирования.

    контрольная работа [1,6 M], добавлен 13.12.2015

  • Формирование тактовых импульсов микроконтроллера. Схемы входных и выходных устройств, источника напряжения питания. Проектирование модуля инициализации микроконтроллера, процедур обработки прерываний, процедур вывода информации и процедуры Main.

    курсовая работа [273,1 K], добавлен 19.12.2010

  • Архитектура микроконтроллера PIC16F876 фирмы Microchip и построение на его основе микропроцессорной системы управления электронагревателями печи обработки полимеров. Текстовый жидкокристаллический дисплей WH1602A-YYK-CP фирмы Winstar и контроллер.

    контрольная работа [429,4 K], добавлен 24.12.2012

  • Моделирование заданных команд, внутренних функциональных устройств и объектов ввода-вывода микроконтроллера. Разработка программа для демонстрации совместной работы микроконтроллера и моделируемого внешнего устройства. Компоненты архитектуры ATMega128.

    курсовая работа [3,6 M], добавлен 12.06.2013

  • Создание приемника команд RC5 для персонального компьютера на основе микроконтроллера ATmega8. Особенности написания файла прошивки и симулирование устройства. Порядок выполнения сборки собственной схемы и характеристика полученного микроконтроллера.

    курсовая работа [2,0 M], добавлен 24.11.2013

  • Особенности разработки устройства управления системой измерения веса, построенного на микроконтроллере ATmega16 фирмы Atmel. Схема включения микроконтроллера, сброса, стабилизатора напряжения. Проектирование функций микроконтроллера. Листинг программы.

    курсовая работа [153,6 K], добавлен 19.12.2010

  • Составление схемы электрической структурной и функциональной. Описание элементной базы: микроконтроллер PIC16F88, микросхема DS18B20, ЖК-индикатор MT10T9. Описание схемы электрической принципиальной, главные элементы. Правила работы с устройством.

    контрольная работа [1,2 M], добавлен 06.12.2013

  • Рассмотрение структурной схемы микропроцессорной системы обработки данных. Описание архитектуры микроконтроллера ATmega161. Расчет оперативного запоминающего устройства. Строение, назначение адаптера параллельного интерфейса, способы его программирования.

    курсовая работа [621,5 K], добавлен 24.09.2010

  • Назначение и применение микроконтроллеров - интегральных микросхем, предназначенных для управления электронными схемами. Описание способа адресации. Разработка программы, описание электрической и структурной схемы разрабатываемого микроконтроллера.

    курсовая работа [177,6 K], добавлен 30.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.