por jvanderleym » 09 Set 2010 14:23
Boo tarde, colega.
Segue abaixo o codigo de um osciloscopio de 06 canais, três de tensão e 03 de corrente com sensor de efeito hall, desenvolvido em mikroC.
Espero que possa ter ajudado.
/*
Projeto : Osciloscopio 240x128
PIC : 18F452
Clock : 20 MHz
configuração :
_HS_OSC_1H
_WDT_OFF_2H
_LVP_OFF_4L
*/
#include "T6963C.h"
extern const char imagem240128[];
void main(void)
{
unsigned int x0, y0, contador;
unsigned short int canal1[128];
unsigned short int canal2[128];
unsigned short int canal3[128];
unsigned short int canal4[128];
unsigned short int canal5[128];
unsigned short int canal6[128];
unsigned int conta;
int var_botao;
long var_display;
ADCON1 = 0B00101001;
//TRISB = 0;
//PORTB = 0 ;
//TRISB = 0xFF ;
TRISC = 0 ; // port C is output only
//PORTC = 0b00000000 ; // chip enable, reverse on, 8x8 font
USART_init(19200);
T6963C_Init(240, 128, 8, &PORTD, &PORTC, 3, 2, 1, 5); // T6963C_Init_240x128, see Autocomplete
T6963C_graphics(1) ;
T6963C_text(0) ;
T6963C_cursor(0);
T6963C_image(imagem240128);
conta = 0;
y0 = 0;
var_botao = 0;
do
{
if (var_botao == 0)
{
for (conta = 0; conta < 128; conta++)
{
canal1[conta] = Adc_Read(0) >>2;
canal2[conta] = Adc_Read(1) >>2;
canal3[conta] = Adc_Read(2) >>2;
canal4[conta] = Adc_Read(3) >>2;
canal5[conta] = Adc_Read(4) >>2;
canal6[conta] = Adc_Read(5) >>2;
}
conta = 0;
y0 = 0;
for (contador = 0; contador < 128; contador++)
{
canal1[conta] = canal1[conta] - 20;
var_display = (long) canal1[conta] * 85;
var_display = var_display / 255;
T6963C_dot((var_display+ 1), y0, T6963C_WHITE);
canal2[conta] = canal2[conta] - 100;
var_display = (long) canal2[conta] * 300;
var_display = var_display / 255;
T6963C_dot((var_display+ 31), y0, T6963C_WHITE);
canal3[conta] = canal3[conta] - 20;
var_display = (long) canal3[conta] * 85;
var_display = var_display / 255;
T6963C_dot((var_display+ 81), y0, T6963C_WHITE);
canal4[conta] = canal4[conta] - 100;
var_display = (long) canal4[conta] * 300;
var_display = var_display / 255;
T6963C_dot((var_display+ 111), y0, T6963C_WHITE);
canal5[conta] = canal5[conta] - 20;
var_display = (long) canal5[conta] * 85;
var_display = var_display / 255;
T6963C_dot((var_display+ 161), y0, T6963C_WHITE);
canal6[conta] = canal6[conta] - 100;
var_display = (long) canal6[conta] * 300;
var_display = var_display / 255;
T6963C_dot((var_display+ 191), y0, T6963C_WHITE);
y0++;
conta++;
}
}
if (var_botao == 0)
{
if (Button(&PORTB, 7, 20, 0)) var_botao = 1;
}
if (var_botao == 0)
{
T6963C_image(imagem240128);
}
if (var_botao && Button(&PORTB, 7, 20, 1))
{
var_botao = 0;
T6963C_image(imagem240128);
}
}
while(1);
}