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

Автор работы: Пользователь скрыл имя, 03 Ноября 2012 в 04:38, курсовая работа

Краткое описание

В работе ставится задача придумать функциональную схему устройства, разработать в графическом редакторе OrCAD Capture принципиальную схему. В ходе разработки схем подобрать подходящие микросхемы для обеспечения нужных характеристик осциллографа. Написать программу для микроконтроллера.

Прикрепленные файлы: 1 файл

kursovik.doc

— 663.00 Кб (Скачать документ)

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   

mov SFRPAGE, #001h  ;3

mov TMR3CN, #004h   ;3

 

 

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

 

jnb TMR3CN.7,$     ;4

   nop

nop

 

 

mov TMR3CN,#000h   ;3

mov TMR3H,#0FFh ;3

mov TMR3L,#05Ch ;3

 

cjne A, DPL, Input1_4  ;5  

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

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

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

_250KHz1:

cjne kf1, #005h, _50KHz1

 

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