Paralel Port Tabanlı PC Osiloskop

lptpcosilaskopPC tabanlı bir osiloskop projesidir. Band genişliği yaklaşık 1MHz olup sadece dalga şekillerini görmek için tasarlanmıştır.

Nasıl çalışır?

C2 kapasitesi üzerinden verilen giriş sinyali R4 trimpotu üzerinden offset kazandırılarak ADC girişine uygulanır ve analog girişi ADC çıkışında dijitale çevrilerek PC paralel portuna uygulanır.

ADC için koruma develeri geliştirilebileceği gibi sinyal girişi bir video kuvvetlendiricisi çıkışından da verilebilir. ADC0801 yerine ADC0802/ADC0803/ADC0804/ADC0805 ADC den biri kullanılabilir. R4 trimpotu ile osiloskopun offset ayarı yapılır. Devre ilk enerjilendiğinde R4 trimpotuna göre ADC çıkışıda bir değer alır ve bu değer LED display üzerinde görülebilir ayrıca bu şekilde donanım PC ye bağlanamadan önce R4 trimpotu ayarlanarak LED displaydeki değişen değerlerin görülmesi ile donanım test edilebilir. Giriş sinyali C2 kapasitesi üzerinden alınıp bir yüksek gerilim koruma devresi kullanılmamıştır bu yüzden genliği 10V üzeri sinyallerin girişe uygulanması tavsiye edilmez. Genliği 1V den daha küçük sinyallerin osiloskopta görülebilmesi için C2 kapasitesinden önce kuvvetlendirici katı kullanılmalıdır.

#include <dos.h>
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

char msg[30];
int a,b,secim;
float dly;
float art;

int cerceve()
                  {
                    moveto(50, 50);
                    lineto(600,50);
                    lineto(600,450);
                    lineto(50,450);
                    lineto(50,50);
//———————————-yatay cizgileri——————————————–
                    moveto(50,250) ;
                    lineto(600,250) ;
//———————————dikey cizgileri———————————————
                    a=50;
                    while(a<600)
                                        {
                                            if(a==380-55) {moveto(a,50); lineto(a,450);}
                                            moveto(a,245);
                                            lineto(a,255);
                                            a=a+55;
                                        }
//—————————-sifir belirtme cizgileri——————————————
                    moveto(50,250);
                    lineto(35,250);
                    moveto(600,250);
                    lineto(615,250);
                    moveto(325,50);
                    lineto(325,35);
                    moveto(325,450);
                    lineto(325,465);
                    return 0;
                   }
 

int install()
                    {
                        int gdriver = DETECT, gmode, errorcode;
                        initgraph(&gdriver, &gmode, “”);
                        return 0;
                    }
 

int info()
                    {
                        moveto(0,20);
                        if (dly!=0) sprintf(msg,” Time/div[t]=%fms”,dly*55/art,getx(),gety());
                        else sprintf(msg,” Time/div[t]=unknown”,getx(),gety());
                        outtext(msg);
                        moveto(270,0);
                        sprintf(msg,” PCSCOPE v1.0″,getx(),gety());
                        outtext(msg);
                        return 0;
                    }
 

int draw()
                    {
                        int voltage=250;
                        int time=50;
                        int voltageaddress=0×379;
                        voltage=inportb(voltageaddress);
                        voltage=voltage>>3;
                        voltage=106+9*voltage;
                        moveto(50,voltage);
                        while(time<800)
                                                {
                                                    delay(dly);
                                                    time=time+art;
                                                    voltage=inportb(voltageaddress);
                                                    voltage=voltage>>3;
                                                    voltage=106+9*voltage;
                                                    if(time<600) lineto(time,voltage);
                                                 }
                        return 0;
                       }
 

main()
            {
                clrscr();
                textcolor(9);
                cprintf(” PCSCOPE APPLICATION\n”);
                puts(“\r Enter max two digits delay time”);
                int a;
                scanf(” %2d”,&a);
                printf(” Delay is %dms\n”,a);
                dly=a;
                puts(” Enter max two digits shift points”);
                while(1) {
                                scanf(” %2d”,&a);
                                if(a==0) puts(“Shift time cannot be zero”);
                                else break;}
                printf(” Shift time is %dms”,a);
                art=a;
                textcolor(4);
                if (dly==0) cprintf(“\n\n\r Attention time/div=unknown\n\r This program written for analysing the signal figure because of time neither nor voltage does not completely true”);
                else cprintf(“\n\n\r Attention time/div=%fms\n\r This program written for analysing the signal figure because of time neither nor voltage does not completely true”,55*dly/art);
                puts(“\n\r Press any key for drawing”);
                getch();
                install();
                while(1)
                            {
                                cleardevice();
                                cerceve();
                                info();
                                draw();
                            }
                getch();
                closegraph();
                }

 

İlginize Çekebilir

Otomatik Kademeli Kapasitemetre

Kaynak Kodu : ; software: ver.6 ;***************** Dec. 3rd. 2002 ************************** ; Written by Flemming …