Цифровой осциллограф

P5 = TC/R =39h - длина строки равна 58 байтов.

P6 = L/F = EFh -  количество линий на кадр равно 240.

P7 = AL = 28h и P8 = AH = 0 - горизонтальный адресный диапазон (текстовый) равен 40.

Значения параметров команды «Scroll» (код 44hрр):

P1 = SAD 1L = 0 и P2 = SAD1H = 0 - начальный адрес первого экранного блока прокрутки.

P3 = SL1 = P6 = SL2 = EFh - 255 строк на прокручиваемый блок.

P4 = SAD2L = B0h и P5 = SAD2H = 04h - начальный адрес второго блока прокрутки.

P7 = SAD3L = 0h и P8 = SAD3H = 0h - начальный адрес третьего блока прокрутки.

P9 = SAD4L = 0h и P10 = SAD4H = 0h - начальный адрес четвёртого блока прокрутки.

Значения параметров команды «CURSOR FORM» (код 5Dhрр):

P1= CRX = 04hширина курсора равна 5 пикселей.

P2 = 86h.

CRY = 6h - высота курсора равна 7 пикселей

CM = 1 – блочный курсор.

Далее выставляется команда  «CURSOR DIRECTION» с кодом  4Сhрр. Два младших бита кода команды CD1 и CD2 сброшены, поэтому курсор будет двигаться вправо.

Значения параметра команды «HORIZONTAL SCROLL RATE» (код 5Ahрр):

P1 = 0 – ноль пикселей для прокрутки.

Значения параметра команды «OVERLAY» (код 5Ahрр): P1 = 01h.

MX0 = 0 и MX1 = 1 - метод композиции наслоённого экрана следующий: (L1 and L2) or L3.

DM1 = DM2 = 0 – текстовый режим отображения блоков экрана 1 и 3, соответственно.

         Командой «DISPLAY ON/OFF» (код 59h)  включается дисплей (P1=16h).

         Изображение выводится на дисплей сканированием его памяти. Курсор двигается слева направо и сверху вниз. Каждый бит в памяти соответствует пикселю на дисплее. Контроллер настроен так, что ширина горизонтальной линии равна 40 байтов (40*8=320) и этих линий 240. Контроллер сканирует память дисплея, пока не достигнет конца ряда, а потом переходит на следующий ряд. То есть адрес начала ряда  с номером n равен 40*n или 28h*n.

         Информация о сигнале с канала 1 хранится в XRAM микроконтроллера по адресу 000h – 0F0h (240 байтов).

         Для отображения осциллограммы по вертикали нужно 256 пикселей, так как АЦП 8 – ми разрядный. По горизонтали будем использовать 240 пикселей. То есть размер графического экрана равен байтов. Эти байты будут храниться в XRAM по адресу 0200h – 1FFFh.

         Коду 0 соответствует напряжение -0.512 В, а коду 255 соответствует напряжение +0.512 В. Коду 128 – напряжение 0 В. В каждом байте, которые хранятся по адресу 000h – 0F0h содержится номер пикселя в строке дисплея, который нужно зажечь. Адрес байта – это номер строки (Рисунок 5.2).

Рисунок 5.2 – Соответствие байтов памяти дисплея и положения пикселей на дисплее.

            На рисунке 5.3 более подробно приведены блок-схемы подпрограмм для записи команд и данных в память дисплея.

           

Перед выводом осциллограммы посылается команда с кодом 46h «CSRW» - установка адреса курсора. У неё два параметра – два байта шестнадцатиразрядного адреса. Мы устанавливаем курсор в начало графической страницы.

Осциллограмма выводится путём подачи команды «MWRITE» контроллеру SED1335. После выставления кода команды 42h производится посылка байтов данных в память дисплея.

         Текст программы представлен в приложении A. В программе приведена только подпрограмма InputADC1, так как подпрограмма InputADC2 – такая же.

Изменены лишь названия переменных.

 

Рисунок 5.3 – Блок схема алгоритма подпрограммы WrComm и WrData

         240 команд идущих подряд, записывающих данные с АЦП с частотой дискретизации 10 МГц также не приведены.

 

ПРИЛОЖЕНИЕ A

 

Программа для МК цифрового осциллографа.

;--------------------------------------------------------------------------------

;     НГТУ РЭФ Кафедра ЭП  2006г.


;     Азанов М.А. РЭ3-11


;     FILE NAME   : dig_osc.asm

;     TARGET MCU  : C8051F120

;     DESCRIPTION : Программа для МК цифрового осциллографа.

;     NOTES       : Прием данных с АЦП, сохранение выборки в памяти, вывод данных

;                   на ЖКИ, прием данных о параметрах сигнала и установка нужной

;                   частоты дискретизации и уровня сигнала

;----------------------------------------------------------------------------------



$include (c8051f120.inc) 


;-------------------------

;Объявление переменных

;-------------------------


kf equ      R0    ;коэффициент частоты дискретизации


; kfn f        Т

; 1    10М     100н            

; 2    5М      200н

; 3   2.5М     400н

; 4  500к     2мк

; 5  250к     4мк

; 6    50к     20мк

; 7    25к     40мк

; 8    5к      200мк

; 9   2.5к     400мк

;10   500      2м

;11   250      4м


CoefAmplif equ R2  ;коэффициент усиления 

i equ R3           ;переменная - cчётчик1

Num equ R4

kf1 equ R5

kf2 equ R6


switch equ P2      ;порт, управляющий аналоговыми коммутаторами


Button_kf equ P6

Button_CoefAmplif equ P7


Padc1 equ P4         ;АЦП канал 1

Padc2 equ P5         ;АЦП канал 2



;-----------------------------------------------------------------------------

; Векторы прерывания и сброса

;-----------------------------------------------------------------------------


      cseg AT 0   ;Определение сегмента в адресном пространсве CODE по адресу 0

      jmp Config      ;Относительный переход на Config


;------------------------------------

; Объявленеие сегмента Main

;------------------------------------


Main segment CODE ;объявление сегмента Main, имеющего класс памяти CODE

     rseg Main          ;выбор сегмента Main

     using    0         ;использовать банк регистров 0


Config:

      mov SP,#07Fh      ;стек расположен по адресу 80h в ОЗУ


;----------------------------------------------------------------

; Настройка WDT

;----------------------------------------------------------------

;Отключение WDT

      clr EA             ;Запретить все прерывания

      mov WDTCN, #0DEh

      mov WDTCN, #0ADh

      setb EA   


                 

;----------------------------------------------------------------

; Настройка портов ввода-вывода

;----------------------------------------------------------------


      mov SFRPAGE, #00Fh ;Переход на страницу F  SFR


;Связывание периферийных устройств с разрядами портов


      mov XBR0, #000h  

                              

      mov XBR1, #080h   ;биты      SYSCKE T2EXE T2E INT1E T1E INT0E T0E CP1E

                  ;значения     1      0   0    0    0    0    0    0


                  ;/SYSCLK подключен

                            

      mov XBR2, #040h   ;биты       WEAKPUD XBARE CNVST2E T4EXE T4E UART1E EMIFLE CNVST0E

                    ;значения      0      1     0        0   0    0       0      0


                  ;Разрешить установленные перемычки

     

;Настройка режимов вывода разрядов портов


;1 - режим Push-Pull

;0 - режим Open-Drein


      mov P0MDOUT, #03Fh 


;Результат настройки портов ввода-вывода

;порт P0

       ;P0.0 = SYSCLK     (Push-Pull Output)(Digital)

       ;P0.1 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.2 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.3 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.4 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.5 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.6 = GP I/O     (Open-Drain Output/Input)(Digital)

       ;P0.7 = GP I/O     (Open-Drain Output/Input)(Digital)


      mov P1MDOUT, #0FFh

      mov P3MDOUT, #0FFh



;----------------------------------------------------------------

; Настройка генератора (SYSCLK=100 МГц и на P0.6 выводится 50 МГц )

;----------------------------------------------------------------

      mov SFRPAGE, #00Fh


      mov OSCICN, #083h ;1    ;биты     IOSCEN IFRDY - - - - IFCN1 IFCN0

                         ;значения    1     0             1     1

                 

                         ;внутренний генератор разрешён

                         ;частота не программируется

                         ;значение предделителя = 1 (SYSCLK=25 МГц)


      mov PLL0CN, #000h ;2    ;PLL использует в качестве опорной частоты

                        ;частоту внутреннего генератора


      mov SFRPAGE, #000h

      mov FLSCL, #030h  ;3    ;биты      -  -   FLRT   - - - FLWE 

                          ;значения         1  1           0


                        ;стирание и запись Flash памяти запрещена

                        ;Память работает на частоте SYSCLK <= 100 MHz


      mov SFRPAGE, #00Fh

      mov PLL0CN, #001h  ;4   ;PLL включен

      mov PLL0DIV, #001h ;5   ;предделитель PLL установлен в 1

     

      mov PLL0FLT, #001h ;6   ;диапазон частот, которые делятся 19-30 МГц

                     ;7   ;выходная частота PLL = 65-100 МГц

      mov PLL0MUL, #004h ;8   ;коэффициент умножения PLL равен 4


      ;задержка - 5 мкс  ;9

      mov i, #040h            ;установка задержки

      djnz i, $               ;i-- и переход на себя, если не 0

   

      mov PLL0CN, #003h  ;10  ;включение PLL

     

      mov i, #0FFh            ;установка задержки


PLL_WAIT:


      dec i

Страницы: 1, 2, 3, 4, 5, 6



Реклама
В соцсетях
рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать