' http://electronics598.rssing.com/browser.php?indx=8435866&item=10874 библиотека дисплея,совместим с ILI9481 '************************************************************************************** ' осциллоскоп версия 101 * ' * '************************************************************************************** $regfile = "m32def.dat" ' контроллер $crystal = 16000000 ' частота $hwstack = 200 'ХЗЧНР $swstack = 200 ' ХЗЧНР $framesize = 200 'ХЗЧНР ' БИБЛИОТЕКА ДИСПЛЕЯ,ссылка откуда стырил в 1 сточке $include "hx8357_02.inc" ' пины дисплея Cs_disp Alias Portb.2 : Config Cs_disp = Output ' /Chip Select Display Res_disp Alias Portb.3 : Config Res_disp = Output ' /Reset Display fьr INIT Rs_disp Alias Portb.0 : Config Rs_disp = Output ' Indexregister = 0, Data = 1 Wr_disp Alias Portb.1 : Config Wr_disp = Output ' write data to Display 0 -> 1 = latch it Data_disp_lo Alias Porta : Config Data_disp_lo = Output ' Data to Display DB0-DB7 Data_disp_hi Alias Portc : Config Data_disp_hi = Output ' Data to Display DB8-DB15 Cs_disp = 0 Res_disp = 1 'Reset Display :ACTIVE=LOW Wr_disp = 1 'WRITE active high Data_disp_lo = 0 Data_disp_hi = 0 dim osc(800) as byte 'массив считываний ацп dim osc_clear(430) as byte 'массив очистки дисплея 'временные переменные dim x as word dim y as word dim z as word dim a as word dim b as word 'dim sinhr as word 'dim sinhr_copy as word DIM FREQ AS SINGLE dim text as String * 14 Config portd = INPUT Dim w As word '?????????? R ? ??????? ????? ?????????? ????????? ? ??? dim color as word Config Timer1 = Timer , Prescale = 1 'таймер1 пока не задействован Const Timer1pre = 65376 ' (65536 - Timer1pre) /16= 65376=10 usec 63936=100 usek Timer1 = Timer1pre On Timer1 Pulse: Enable Interrupts Enable Timer1 Stop Timer1 '**************************************************************************************************************************** Call Hx8357c_init(0) 'Init display and choose Display orientation:0=Landscape/1=Portrait Call Hx8357c_clrscr(Black) Orient = 0 ' 0=Landscape ЗАСТАВКА Call Hx8357c_text( "OSCILLOSKOP V 1.01" , 132 , 20 , 3 , Yellow , Black) '18 БУКВ*12= 216-480=-264/2= -132 WAITMS 200 Call Hx8357c_text( "OSCILLOSKOP V 1.01" , 132 , 20 , 3 , Black , Black) GOSUB DELENIJA ' РИСУЕМ ЭКРАН Do 'СЧИТЫВАЕМ ПОРТ АЦП,8 тактов(0,5 мксек) идем на синхронизацию gosub read8 : gosub синхронизация Call Hx8357c_text( " " , 250 , 280 , 1 , Yellow , Black) Call Hx8357c_text(Fusing(FREQ , "#.##") , 250 , 280 , 1 , Yellow , Black) 'макс w = 0 for x = 1 to 500 if osc(x) > w then w = osc(x) next x FREQ = w / 255 text = " Vmax= " + Fusing(FREQ , "#.##") text = text + " V " Call Hx8357c_text( " " , 2 , 280 , 1 , Black , Black) Call Hx8357c_text(text , 2 , 280 , 1 , Yellow , Black) 'мин w = 255 for x = 1 to 500 if osc(x) < w then w = osc(x) next x FREQ = w / 255 text = " Vmin= " + Fusing(FREQ , "#.##") text = text + " V " Call Hx8357c_text(text , 2 , 300 , 1 , Yellow , Black) 'СЛУЖЕБНОЕ Call Hx8357c_text( " " , 152 , 280 , 1 , Yellow , Black) Call Hx8357c_text(str(a) , 152 , 280 , 1 , Yellow , Black) Call Hx8357c_text( " " , 152 , 300 , 1 , Yellow , Black) Call Hx8357c_text(str(b) , 152 , 300 , 1 , Yellow , Black) ' рисуем горизонтальные линии,ацп 0-1 вольт,линии через 0,2 вольта for x = 50 to 479 step 5 for y = 10 to 266 step 64 Call Hx8357c_set_pixel(x , y , Blue2) next y next x ' рисуем вертикальные линии,через 10 мксек 'частота кварца 16 мгц,8 такт,опрос каждые 8/16 мксек,10 мксек/(8/16)= 50 делений for x = 50 to 479 step 50 for y = 10 to 265 step 5 Call Hx8357c_set_pixel(x , y , Blue2) next y next x 'переворачиваем график,чтоб 0 вольт было внизу for x = 1 to 500 osc(x) = 255 - osc(x) next x 'стираем стаый график for x = 1 to 430 w = x + 50 if osc(x) = osc_clear(x) and osc(x + 1) = osc_clear(x + 1) then nop else Call Hx8357c_line(w , osc_clear(x) + 10 , w + 1 , osc_clear(x + 1) + 10 , Black) end if 'рисуем новый гафик Call Hx8357c_line(w , osc(x) + 10 , w + 1 , osc(x + 1) + 10 , red) next x 'заполняем буфер для последующего стирания for x = 1 to 430 osc_clear(x) = osc(x) next x Orient = 0 'Demo-loop starts with landscape mode 'Call Hx8357c_clrscr(green0) 'Call Hx8357c_text( "Merry X-Mas" , 70 , 20 , 3 , Yellow , Green0) 'Call Hx8357c_text( "and a Happy" , 70 , 40 , 3 , Yellow , Green0) 'Call Hx8357c_text( " New Year" , 70 , 60 , 3 , Yellow , Green0) 'Call Hx8357c_line(20 , 80 , 300 , 80 , Yellow) 'Restore Girl 'Call Hx8357c_showpicture(90 , 100) 'Call Hx8357c_clrscr(Black) Loop End синхронизация: y = 0 z = 0 for x = 2 to 350 'ищем первый переход через уровень синхры снизу вверх if osc(x) < 128 and z = 0 then y = 1 if osc(x) => 128 and y = 1 then z = 1 a = x - 1 goto label1 end if next x label1: 'нашли!!! y = 0 for x = a to 800 'сдвигаем весь массив влево,чтоб отрисовка начиналась с уровня синхры y = y + 1 osc(y) = osc(x) next x 'ПОДСЧЕТ ЧАСТОТЫ y = 0 z = 0 for x = 1 to 429 'if osc(x) => 128 then z = 1 if osc(x) < 128 AND Y = 0 then y = 1 if osc(x) => 128 and y = 1 then Y = 0 Z = Z + 1 b = x - 2 end if next x label2: Z = Z - 1 FREQ = 2000 / B FREQ = FREQ * Z B = Z 'FREQ = FREQ / Z return DELENIJA: Orient = 0 Call Hx8357c_text( "1.0 V" , 2 , 8 , 1 , Yellow , Black) Call Hx8357c_text( "0.75V" , 2 , 72 , 1 , Yellow , Black) Call Hx8357c_text( "0.5 V" , 2 , 136 , 1 , Yellow , Black) Call Hx8357c_text( "0.25V" , 2 , 200 , 1 , Yellow , Black) Call Hx8357c_text( "0.0 V" , 2 , 264 , 1 , Yellow , Black) RETURN Pulse: Return $include "Font8x8.font" $include "Font12x16.font" $include "ADCREAD_02.inc"