close

Вход

Забыли?

вход по аккаунту

?

лаба 3 ипу я что ли

код для вставкиСкачать
 Министерство образования и науки российской федерации
Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Южный федеральный университет"
Факультет автоматики и вычислительной техники
Кафедра вычислительной техники
_________________________________________________________________
____________________________________________________
___________________________________________
Лабораторная работа №3 По курсу: Интерфейсы периферийных устройств
На тему: Байт атрибута
Выполнили: студенты гр. А-39
Айрапетян А. В.
Бутенко Д.А.
Терекян А.А.
Проверил:
Авдеев В.А.
Таганрог 2013 г.
Формулировка задания:
Минимальный по объему вариант включает по одной вершине каждого уровня. Возможно включение нескольких вершин одного уровня в задание, что определяет более сложный вариант. Вариант задания:
Инструкция по применению:
Нажатием на comboBox'ы, пользователь выбирает цвет текста/фона, яркость цвета текста и будет ли мигать текст.
Внешний вид программы:
Основные сведения:
После загрузки компьютера дисплей начинает работать в текстовом режиме. В этом режиме видеобуфер хранит код символа и код атрибута. Младшие четыре разряда кода атрибута определяют цвет символа (биты I, R, G и B, где I - интенсивность свечения). Старшие четыре разряда задают цвет фона (биты I/B, R, G и B, где I/B - интенсивность или мигание символа), программируются битом 5 регистра управления режимом (порта 3D8h). Используя 3 основных цвета R, G и B, можно получить 8 цветовых комбинаций. Управляя еще и интенсивностью (I) свечения, образуют 16 цветовых комбинаций с помощью кода IRGB. В табл. 8.2 представлено базовое кодирование цветов (палитра цветов).
Таблица 8.2.
Номер цвета4-битный кодНазвание цвета IRGB 00000Черный10001Синий20010Зеленый30011Голубой40100Красный50101Вишневый60110Коричневый70111Белый81000Серый91001Ярко-синий101010Ярко-зеленый111011Ярко-голубой121100Ярко-красный131101Ярко-вишневый141110Желтый151111Ярко-белый
В адаптере CGA байт атрибута непосредственно управляет выбором цветов символа и фона, а в адаптере EGA каждые четыре бита атрибута используются как индекс для выбора одного из шестнадцати режимов палитры, 6-разрядный код Rr Gg Bb которого поступает в монитор. В этом коде для каждого цвета применяются два бита (00 - цвет выключен, 01 - слабый цвет, 10 - обычный и 11 - яркий). Такое кодирование увеличивает число цветов до 64. Адаптер VGA содержит дополнительно 256 18-разрядных регистров цвета ЦАП, выбор каждого из которых осуществляется 8-разрядным кодом, причем младшие 6 или 4 бита считываются из регистра палитры, используемого также в EGA, а старшие 2 или 4 бита берутся из регистра выбора цвета. Объединением битов (6 и 2, 4 и 4) управляет бит 7 регистра управления режимом. Каждый 18-разрядный регистр цвета ЦАП содержит три 6-разрядных поля R, G и B, которые соответственно поступают на ЦАП R, ЦАП G и ЦАП B, аналоговые сигналы которых передаются в монитор. Этапы дешифрирования битов атрибута в VGA показаны на рис. 8.3.
Рис. 8.3. Этапы дешифрации битов атрибута
В адаптерах MDA и CGA символы хранятся в последовательных ячейках видеобуфера, которые отображаются на прямоугольные координаты экрана (рис. 8.4).
Рис. 8.4. Отображение видеобуфера на экране
В видеобуфере в младшем байте с четным (меньшим) адресом хранится код символа, а в старшем байте с нечетным (большим) адресом - код атрибута. Схема отображения кода символа на экран имеет следующий вид:
Код символа ® ПЗУ (знакогенератор) ® сдвиговый регистр ® экран.
На экран в символьную позицию построчно отображается матрично-пиксельное изображение символа (рис. 8.5).
Рис. 8.5. Матрично-пиксельное изображение символа
Видеобуфер адаптеров EGA и VGA содержит четыре параллельных банка памяти (0 - 3), начальный адрес которых B800:0000h или A000:0000h, причем отображаемые на экране данные хранятся в банках 0 и 1, а в банке 2 - таблицы шрифтов знакогенератора. Байты символов с четными адресами размещаются в банке 0, а байты атрибутов с нечетными адресами - в банке 1. Управление обращением к банкам 0 и 1 управляет контроллер ЭЛТ.
Ниже представлено интерфейсное окно модели, демонстрирующее выбор из таблицы символов соответствующего знака и отображение увеличенного его графического изображения с указанием ASCII-кода.
API- функции работы с байт атрибутом:
ForeColor - Получает или задает основной цвет текста.
public virtual Color ForeColor { get; set; }
BackColor - Получает или задает цвет фона для текста.
public virtual Color BackColor { get; set; }
Font - Возвращает или задает шрифт текста, отображаемого элементом управления.
public virtual Font Font { get; set; }
Листинг файла Form1.cs:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool matrix[16][8] = {0};
TColor colorText = clBlack; //Цвет текста
TColor colorFont = clWhite; //Цвет фона
bool flag = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender){
matrix[4][3] = 1;
matrix[4][4] = 1;
for(int i=6; i<10;i++){ matrix[i][1] = 1; matrix[i][6] = 1;}
matrix[5][2] = 1;
matrix[5][5] = 1;
matrix[10][2] = 1;
matrix[10][5] = 1;
matrix[11][3] = 1;
matrix[11][4] = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SwitchColor(TObject *Sender){
int ColorCount = 0;
if (CheckBox2->Checked) ColorCount += 4;
if (CheckBox3->Checked) ColorCount += 2;
if (CheckBox4->Checked) ColorCount += 1;
switch(ColorCount){
case 0:
colorFont = clBlack;
break;
case 1:
colorFont = clBlue;
break;
case 2:
colorFont = clGreen;
break;
case 3:
colorFont = clSkyBlue;
break;
case 4:
colorFont = clMaroon;
break;
case 5:
colorFont = clPurple;
break;
case 6:
colorFont = clOlive;
break;
case 7:
colorFont = clWhite;
break;
default:
colorFont = clWhite;
}
ColorCount = 0;
if (CheckBox8->Checked) ColorCount += 8;
if (CheckBox5->Checked) ColorCount += 4;
if (CheckBox6->Checked) ColorCount += 2;
if (CheckBox7->Checked) ColorCount += 1;
switch(ColorCount){
case 0:
colorText = clBlack;
break;
case 1:
colorText = clBlue;
break;
case 2:
colorText = clGreen;
break;
case 3:
colorText = clSkyBlue;
break;
case 4:
colorText = clMaroon;
break;
case 5:
colorText = clPurple;
break;
case 6:
colorText = clOlive;
break;
case 7:
colorText = clWhite;
break;
case 8:
colorText = clGray;
break;
case 9:
colorText = clHotLight;
break;
case 10:
colorText = clLime;
break;
case 11:
colorText = clHighlight;
break;
case 12:
colorText = clRed;
break;
case 13:
colorText = clFuchsia;
break;
case 14:
colorText = clYellow;
break;
case 15:
colorText = clCream;
break;
default:
colorText = clBlack;
}
}
void __fastcall TForm1::FormPaint(TObject *Sender){
SwitchColor(Sender);
if(flag) colorText = colorFont;
for(int i=0; i<16; i++)
for(int j=0; j<8; j++)
if(matrix[i][j] == 1){
DrawGrid1->Canvas->Brush->Color = colorText;
DrawGrid1->Canvas->FillRect(DrawGrid1->CellRect(j,i));
} else {
DrawGrid1->Canvas->Brush->Color = colorFont;
DrawGrid1->Canvas->FillRect(DrawGrid1->CellRect(j,i));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender){
Timer1->Enabled = !Timer1->Enabled;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox8Click(TObject *Sender){
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox2Click(TObject *Sender){
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox3Click(TObject *Sender){
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox4Click(TObject *Sender){
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox5Click(TObject *Sender){
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox6Click(TObject *Sender){
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox7Click(TObject *Sender){
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender){
FormPaint(Sender);
Timer2->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender){
flag = !flag;
FormPaint(Sender);
}
Вывод:
В лабораторной работе мы изучили байт атрибута и его параметры.
Документ
Категория
Рефераты
Просмотров
19
Размер файла
260 Кб
Теги
лаба, ипу
1/--страниц
Пожаловаться на содержимое документа