Цифровые осциллографы

Автор работы: Пользователь скрыл имя, 23 Марта 2014 в 21:56, курсовая работа

Описание работы

В ходе развития технологии микроэлектроники происходила миниатюризация электронных схем, и появились СБИС. Массовое производство СБИС привело к их удешевлению. Одним из дешёвых и миниатюрных устройств является микроконтроллер (МК). Микроконтроллер – это СБИС, содержащая на одном кристалле процессор, ПЗУ, ОЗУ, последовательный или параллельный интерфейс связи, таймеры, схему прерываний и другие периферийные устройства. Таким образом, на одной ИС можно реализовать множество различных устройств, в которых требуется управлять каким то процессом. Причём совершенствование технологии изготовления СБИС привело к повышению их производительности, и микроконтроллеры могут достаточно быстро реагировать на событие и обрабатывать его.

Файлы: 1 файл

nReferat.ru - Cifrovoy Oscillograf.doc

— 663.00 Кб (Скачать файл)

В программе задаются следующие значения этих параметров:

P1=30h.

M0=0 - внутренний генератор символов ROM.

М1=0 - генератор символов RAM1; 32 знака.

М2=0 - высота символа 8 пикселов (2716 или эквивалент ROM).

W/S=0 - однопанельное управление

IV=1- нет коррекции верхней строки экрана (нет смещения) 

T/L=1 - режим ТВ

DR=0 - нормальная операция

P2=87h.

FX=7h - ширина символа равна 8 пикселей.

WF=1 - двухкадровое управление АС

P3 = FY= 07h - высота символа равна 8 пикселей.

P4 = С/R = 27h - адресный диапазон равен 40 байтов на одну строку дисплея.

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

  mov ACC, i  ;если нет синхронизации с PLL в течении 5us,

    jz PLL_NOWAIT  ;то ошибка в установках PLL

  mov ACC, PLL0CN

  jnb ACC.4, PLL_WAIT ;задержка до появления синхроимпульсов с PLL

  mov CLKSEL, #022h ;системная частота берётся с PLL и

;делится  на 4 перед выводом на P0.0

 

PLL_NOWAIT:

 

 

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

; Настройка таймера

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

 

;таймер 3 используется  для задания частоты дискретизации  сигнала с АЦП

 

mov SFRPAGE, #001h;

 

     mov TMR3CF, #008h  ; Таймер 3 тактируется от частоты SysClk

 

 

 

 

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

; Настройка прерываний

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

mov SFRPAGE, #000h

mov IE, #000h          ;Запретить  все прерывания

mov IP, #000h          ;Все  устройства имеют низкий приоритет

 

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

; Главная часть  программы

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

 

; Настройка контроллера SED1335

 

ConfigSED1335:

mov R1,#40h    ;установка системы   

lcall WrComm

mov DPTR,#msg1 ;параметры установки системы 

lcall WrData

 

mov R1,#44h    ;прокрутка

lcall WrComm

mov dptr,#msg2 ;параметры прокрутки

lcall WrData

 

  mov r1,#5Dh    ;форма курсора

lcall WrComm

mov dptr,#msg3 ;параметры курсора

lcall WrData

 

mov r1,#4Ch    ;направление курсора

lcall WrComm

 

mov R1,#5Ah  ;прокрутка по точкам

lcall WrComm

mov DPTR,#msg18  ;параметр прокрутки по  точкам

lcall WrData

 

mov dptr,#5Bh  ;наложение

lcall WrComm

mov dptr,#msg4 ;параметр наложения

lcall WrData

 

mov r1,#59h    ;включение/выключение  дисплея

lcall WrComm

mov dptr,#msg5; параметр дисплея

lcall WrData

 

 

Dig_osc: 

mov kf,Button_kf 

 

;Выделение битов b2,b1,b0 и запись в kf1

mov A, kf

anl A, #007h

mov kf1, A

 

;Выделение битов b5,b4,b3 и запись в kf2

mov A, kf

RR A

RR A

RR A

anl A, #007h

mov kf2, A

 

mov CoefAmplif,Button_CoefAmplif

mov switch,CoefAmplif

 

call InputADC1

call Converting

 

; Вывод осциллограммы

mov R1,#46h; установка курсора

lcall WrComm

mov DPTR,#msg6

lcall WrData

 

mov R1,#42h; запись в память дисплея

lcall WrComm

mov DPTR,#00h

 

M0:  movx A, @DPTR        ;загрузка в A данных из XRAM

cjne A, #0A1h, M1   ;загружены все данные?

ljmp M2

 

M1:

mov R1, A

clr p3.2    ;a0=0=данные

mov A, R1 ; послать байт данных

mov P1, A

clr P3.0 ; CS - строб

clr P3.1 ; дисплея

setb P3.1

setb P3.0

inc DPTR

sjmp M0   ; следующий байт

 

M2:

sjmp Dig_osc

 

 

; Подпрограммы

 

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

 

WrComm:

setb P3.2 ; a0=1=команда

WrComm_1:

mov A, R1 ; послать байт данных

mov P1, A

clr P3.0 ; CS - строб

clr P3.1 ; дисплея

setb P3.1

setb P3.0

ret

 

Write:  clr p3.2       ;a0=0=данные

sjmp WrComm_1

 

 

 

 

 

 

 

 

 

 

 

; WrData посылает  байт на который указывает 

; DPTR в контроллер  ввиде данных.

 

WrData: clr A                

movc A, @A+DPTR       ;загрузка  в A значения параметра, записанного  в ПЗУ

cjne A, #0A1h, WrData1;загружены все параметры?

ret

 

WrData1:

mov R1, A

lcall Write   ; отправить

inc DPTR

sjmp WrData   ; следующий байт

 

 

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

; Подпрограмма  ввода с канала 1 АЦП

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

InputADC1:

mov SFRPAGE, #00Fh     

 

;Ввод в XRAM 240 байтов

 

cjne kf1,#001h,_5MHz1

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

;Частота дискретизации 10 МГц

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

_10MHz1:

mov DPTR, #000h  ;3 

mov ACC, Padc1         ;3

movx @DPTR, A          ;3   

nop   ;1

mov DPTR, #001h   

mov ACC, Padc1        

movx @DPTR, A             

nop 

mov DPTR, #002h   

mov ACC, Padc1        

movx @DPTR, A             

nop   

; .

; .

;       .

mov DPTR, #0EFh   

mov ACC, Padc1        

movx @DPTR, A             

nop 

 

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

;Частота дискретизации 5 МГц

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

_5MHz1:

cjne kf1, #002h, _2_5MHz1

 

mov DPTR, #000h  

Input1_2:

mov A, Padc1        

movx @DPTR, A             

inc DPTR        

mov A, #0F0h        

 

;задержка 70 нс

nop

nop

nop

nop

nop

nop

nop

cjne A, DPL, Input1_2    

 

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

;Частота дискретизации 2.5 МГц

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

_2_5MHz1:

cjne kf1, #003h, _500KHz1

 

; Задание числа c которого считает  таймер 

 

mov DPTR, #000h  

Input1_3:

mov A, Padc1   ;2     

movx @DPTR, A             

inc DPTR        

mov A, #0F0h        

 

;задержка 270 нс

mov i,#008h       ;2

djnz i,$         ;3

nop

 

nop

 

cjne A, DPL, Input1_3    

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

;Частота дискретизации 500 КГц

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

_500KHz1:

cjne kf1, #004h, _250KHz1

 

; Задание числа c которого считает  таймер 

mov SFRPAGE, #001h

mov RCAP3H,#0FFh

mov RCAP3L,#05Ch

 

mov DPTR, #000h  

Input1_4:

mov SFRPAGE, #00Fh  ;3

mov A, Padc1     ;2  

movx @DPTR, A      ;3       

inc DPTR     ;1   

mov A, #0F0h     ;2   

Информация о работе Цифровые осциллографы