Методичка (МПС)
.pdf–X5, X6 $ $ ,
$ $ % $
$&;
–" $ $ ( X7);
–$" $ «+.» "
# " &. ) & « »
% $
;
–& « / » % . % « .»
& # $ $ , % « .» $ &
« »;
|
|
|
|
||||||
|
) * |
|
|
|
|
|
|||
|
|
|
n, / |
|
|
|
|
|
|
|
|
|
|
|
X5 |
|
|
X6 |
|
|
|
|
|
U, |
|
|
|
|
|
|
|
|
|
|
|
|
|
Y |
|
|
|
|
|
+ |
|
|
|
|
|
UZ1 |
|
|
|
|
|
|
UZ2 |
|
|
X1 |
VS1 |
X2 |
|
VS3 |
|
|
|
|
|
|
|
|
|
X4 |
VS5 |
X3 |
VS7 |
X5 |
|
~U |
|
|
|
|
|
|
|
X6 |
|
|
|
|
|
|
|
|
|
X7 |
|
X2 |
VS2 |
X1 |
|
VS4 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
UA |
|
|
|
|
|
X3 |
VS6 |
X4 |
VS8 |
|
|
|
|
|
,- # |
|
|
|
|||
|
|
" |
|
! |
|
%! '( |
|
|
|
|
|
|
|
|
|
||||
$%& % |
# |
|
|
|
0 |
1 |
|
||
|
|
|
|
|
|
|
|
||
|
“ - ” |
|
|
|
|
|
|
. 1.6. ! " «0 " &»
–«)», % "
% ;
–«+», % " # #
& % ;
–& « /,», # # " $
% % ;
–$ $
% ;
–«#», " " "
" .
11
1.3.6 " «& ) ! ) "»
& «3$" $&»
!$ $ $ '
# &. ! " . 1.7.
|
|
|
! |
|
||
|
+ |
|
|
|||
|
|
|
|
|
A2 |
|
|
DD1 |
VT1 |
|
A2 |
|
|
|
|
|
|
V |
|
|
|
|
|
VD1 |
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
2 |
2 |
|
|
|
|
|
||
|
|
VT2 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
VD2 |
|
|
|
B1 |
|
|
|
|
A2 |
Y |
|
|
|
|
|
|
|
|
|
VT3 |
|
A2 |
|
|
|
|
|
|
) * |
||
|
|
|
VD3 |
|
||
A1 |
|
|
|
|
+% %, 0 |
|
|
|
|
|
|
|
|
|
|
VT4 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
VD4 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
α, / %1 |
|
|
|
|
,- # |
|
||
|
|
|
|
|
n |
|
|
" |
|
1 |
|
|
# ( |
|
|
|||||
|
# |
|
½ |
! |
0 |
1 |
|
|
|
|
|
||
|
|
|
|
|
|
.%/ |
|
“ - ” |
|
|
|
||
. 1.7. ! " «3$" $&» |
, " $ :
–& «+ &» %;
–!$" $& &
&$ $ $ Y;
–" %
& $ $ . ) % "
# « / $ »;
–" # &
1, 1, 1, 1 & %
« »;
– & « / » % . % « .»
$& # $ $ , % « .» $ &
« »;
12
–& « /,», # # "
& % ;
–& «1/0,5», #& $ #
% !$ $ «1» !$ «1/2» % ;
–«)/+», % "
$ ;
–«+», #& " $
$ $ ;
–$ # $ ;
–& «%», # # " %
!$ % $ ;
–«3$», % " ' !$
$ % .
13
2. * + ( + , + * (,
+ ' -1. ' .
' ) )
/ " '
, & & % " &
$ '.
# ) '
1.* & " " &
% (9 *);
2.( & 9 * %, &
" . ) $ & % "
$ & ;
3., & $ , &
.
# '
9 " " ' ",
$ . ) & 9 * $ $ ,
9 *, , % , "
# $ !$
" & .
: &$ , &$
( . 2.1.1), " , # 4 16 . % % " " & " , "
DDRAM (Display Data RAM), $ % "
$ " .
"#
1
2
3
4
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 10 11 12 13 14 15 |
$%
. 2.1.1. : &$ 9 *
14
" 4- 9 *,
# DDRAM:
– 1 0x00;
– 2 0x04;
– 3 0x01;
– 4 0x05.
DDRAM % . 2.1.1.
& DDRAM %
.
9 * % & CGRAM (Character Generator RAM),
$ , %
" CGRAM. 0
CGRAM . 2.1.2.
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
. 2.1.2. 0 9 *
15
6 $ - CGRAM &
$ ( . 2.1.2). , & &
" .
6 # ! "
9 * & , & #
$ . : " «2 "
/ » # :
–RS (register select). 6 " , "
– . RS=0,
, $ RS=1, ;
–R/W (read/write). 6 " % . + # % – (R/W=1) & (R/W=0).;
–E (enable). $
;
–DB4…DB7 (data bus). ! . 0 % #
DB0…DB3, &.
. 2.1.1 ,
.
0.2.1.1. 9 * HD44780
|
|
|
|
|
|
|
|
|
|
|
|
|
RS |
RW |
DB7 |
DB6 |
DB5 |
DB4 |
DB3 |
DB2 |
DB1 |
DB0 |
. |
||
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
( |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
– |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
0 |
0 |
|
0 |
0 |
0 |
0 |
0 |
1 |
– |
1.52 |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
I/D |
S |
37 |
|
% |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
2 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
D |
C |
B |
37 |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
+$ |
0 |
0 |
0 |
0 |
0 |
1 |
S/C |
R/L |
– |
– |
37 |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
2 |
0 |
0 |
0 |
0 |
1 |
DL |
N |
F |
– |
– |
37 |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
ACG |
ACG |
ACG |
ACG |
ACG |
ACG |
37 |
|
CGRAM |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
37 |
|
DDRAM |
|
|
|
|
|
|
|
|
|
|
|
|
'$ |
0 |
1 |
BF |
AC |
AC |
AC |
AC |
AC |
AC |
AC |
0 |
|
busy |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
« » & # %
# ".
« » #
%, #.
16
«% .» "
$ . - I/D=1,
# , I/D=0, # . / «S»
$ & " , I/D. - S=1, %, %, % #. - S=0,
" #.
«% » % # ,
'$ . / D
. - D=0, " , D=1, " . / +
, % . - C=0,
%. - C=1, %. / B
. - B=0, $ , B=1, $ .
«) » $ %
.
S/C |
R/L |
# |
0 |
0 |
$ |
0 |
1 |
$ |
1 |
0 |
& $ |
1 |
1 |
& $ |
«% »
. - DL=1, 8-" % , DL=0,
4-" % . / N
. " 9 * %
HD44780. % " . ) "
51 53, " 52 54. ) N=0, % " %
51 52. - N=1, % "
% 9 *. / F
! ' . - F=1, 5x10 , F=0,
5x8 .
«% CGRAM» & /
CGRAM & .
«% DDRAM» &
DDRAM, ! & .
«0 1 ) busy » '$ BF (busy flag). - '$ , ,
- " #. : "
" % & .
! . 2.1.1 % % "
. : & , % &
. - &, % ,
!.
17
. )
9 " & % : 8-" 4-". ) & 8- $ % &
! DB7…DB0. )
' "
. 2.1.1 "
enable (E);
) & 4- $ % & & 4
! DB7…DB4. ) & & 4
8, : "
# RS, R/W ! 4 ' ! DB7…DB4; " -% #
! 4 ! DB3…DB0.
" $ & 4-"
.
) %
& $ & " % & '$ $
. * # " &:
1. ) % % &
40 $ , &
! .
2. ) % & «2
» ( .2.1.1), ! DB4..DB7 "
& % " % 5 . : "
" & " , % , &
& ! '. 6
& % &.
3. ) %
100 ( " 1 ). 4. ) «2 »
( .2.1.1), % $
%.
5. ) «2 %» ( . 2.1.1). : " "
.
) " " %. 6 CGRAM $ , % #
DDRAM, & # :
1." «2 DDRAM» "
. ,, % 5 2-"
, # " :
RS |
|
RW |
|
DB7 |
DB6 |
|
DB5 |
|
DB4 |
DB3 |
DB2 |
DB1 |
DB0 |
0 |
|
0 |
|
1 |
1 |
|
0 |
|
0 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
18
2. 2 RS, " , "
, % CGRAM ( . 2.1.2). ) " % $&
# " .
! ) ' %
# . ) $ & &
«E» # " .
) $ 1. # 1. * & " %
& &, . 2.1.3.
1 |
|
|
2
3 |
“ & - “ |
4
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 11 12 13 14 15 |
|
|
.2.1.3. 0 & 9 * |
|||||||||
//-------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
|
|
//Выходы: |
|
|
|
|
|
|
|
|
|
|
|
//PC0...PC3 - DB4...DB7 |
|
|
|
|
|
|
|
|
|
||
//PC4 |
- R/W |
|
|
|
|
|
|
|
|
|
|
//PC5 |
- RS |
|
|
|
|
|
|
|
|
|
|
//PC6 |
- E |
|
|
|
|
|
|
|
|
|
|
//Подключение необходимых библиотек, в том числе библиотеки
//контроллера ATmega32:
#include <iom32v.h> #include <macros.h>
//Объявление переменных (пояснение переменных дается ниже): |
|
|
|||||||||
unsigned char data=0,start_delay=0,gain=0; |
|
|
|
|
|||||||
unsigned char i,i1,i2,i3,delay=0; |
|
|
|
|
|
||||||
unsigned char stop_init=0; |
|
|
|
|
|
|
|
||||
unsigned char mass[60]={0x08, 0x04, 0x24, 0x2F, 0x24, |
0x2F, |
0x24, |
|||||||||
0x2F, |
0x08, |
0x09, |
0x24, |
0x28, |
0x2A, |
0x28, |
0x2A, |
0x28, |
0x09, |
0x02, |
|
0x22, |
0x22, |
0x2A, |
0x29, |
0x2A, |
0x2B, |
0x25, |
0x24, |
0x24, |
0x25, |
0x25, |
|
0x28, |
0x22, |
0x2D, |
0x2A, |
0x28, |
0x25, |
0x20, |
0x24, |
0x2F, |
0x2A, |
0x2A, |
|
0x2A, 0x25, 0x22, |
0x22}; |
|
|
|
|
|
|
|
//инициализация портов ввода-вывода. Порт С инициализируется на вывод //информации:
19
void port_init(void)
{
PORTA = 0xFF; DDRA = 0x00; PORTB = 0xFF; DDRB = 0x00; PORTC = 0x00; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0x00;
}
//Инициализация таймера Т0, используемого для отсчета временных //интервалов:
void timer0_init(void)
{
TCCR0 = 0x00;
TCNT0 = 0x00; OCR0 = 0x7D; TCCR0 = 0x00;
}
//Обработка прерывания по совпадению таймера Т0:
#pragma interrupt_handler timer0_comp_isr:iv_TIM0_COMP void timer0_comp_isr(void)
{ |
|
|
|
CLI(); |
//запрет всех прерываний |
||
i1+=1; |
//инкремент cчетчика прерываний таймера Т0 i1 |
||
if(i1>=i2) |
//когда i1 больше уставки i2, |
||
{ |
|
|
|
delay=1; |
//устанавливается флаг delay, |
||
i1=0; |
//обнуляется счетчик i1, |
||
TCCR0=0x00; |
//останавливается таймер Т0 |
||
TCNT0=0x00; |
//и очищается его счетный регистр |
||
} |
|
|
|
SEI(); |
//разрешение всех прерываний |
||
} |
|
|
|
//Функция отправки данных на жидкокристаллический индикатор: |
|||
void data_ts(void) |
|
||
{ |
|
|
|
switch(gain) |
|
|
//опрос задания на задержку |
{ |
|
|
|
case 1: i2=50; break; |
//если gain=1, то задержка 50 мс |
||
case 2: i2=5; |
break; |
// если gain=2, то задежка 5 мс |
|
case 3: i2=1; |
break; |
// если gain=3, то задержка 1 мс |
|
} |
|
|
|
TCCR0=0x0B; |
|
|
//запуск таймера Т0 для отсчета задержки |
start_delay=1; |
|
//установка флага начала отсчета |
|
while(start_delay==1) |
//пока идет задержка, |
||
{ |
|
|
|
20