Меню
Поиск



рефераты скачать Цифровой осциллограф

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       

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




Новости
Мои настройки


   рефераты скачать  Наверх  рефераты скачать  

© 2009 Все права защищены.