BoostC, ejemplo: leer ADC (3 lineas) y mostrar en LCD.
Página 1 de 1.
BoostC, ejemplo: leer ADC (3 lineas) y mostrar en LCD.
Este ejmplo lo usé para leer los niveles de luz, tomados en distintos tramos del panel solar del Busca-sol ( ) y mostrarlos en un LCD 20x2 para comprobar su funcionamiento. Está escrita para 16F876A, pero se puede adaptar a otros PIC, muestra una lectura sencilla de ADC (solo ADRESH) y el uso del driver LCD.
- Código:
//***** pic16f876A *****
#include <system.h>
#pragma DATA _CONFIG, _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF;
#pragma CLOCK_FREQ 8000000 //8 MHz
//------------------------ DEFINICIONES LCD-------------------------------
//------------------------------------------------------------------------
#define LCD_ARGS 2, /* Interface type: mode 0 =8bit, 1 =4bit(low nibble), 2 =4bit(upper nibble) */ \
1, /* Use busy signal: 1 = use busy, 0 = use time delays */\
PORTC, TRISC, /* Data port and data port tris register */ \
PORTC, TRISC, /* Control port and control port tris register */ \
1, /* Bit number of control port is connected to RS */ \
2, /* Bit number of control port is connected to RW */ \
3 /* Bit number of control port is connected to Enable */
// C1 rs
// C2 rw
// C3 enable
// C4 D4
// C5 D5
// C6 D6
// C7 D7
#include <lcd_driver.h> // include the LCD template code
//----------------------- DEFINICIONES LEER ADC --------------------------
//------------------------------------------------------------------------
#define nivel_izq adc_read(1); n_izq = read;
#define nivel_tra adc_read(2); n_tra = read;
#define nivel_der adc_read(3); n_der = read;
//----------------------- CONFIGURAR VARIABLES ---------------------------
//------------------------------------------------------------------------
char read; //lectura ADC
char conta; //contador
int n_der; //nivel luz derecha
int n_tra; //nivel luz atras
int n_izq; //nivel luz izquierda
//----------------------------- FUNCIONES --------------------------------
//------------------------------------------------------------------------
void adc_read(char canal)
{
switch (canal)
{
case 1:
adcon0 = 0b10000101;
case 2:
adcon0 = 0b10001101;
case 3:
adcon0 = 0b10010101;
case 4:
adcon0 = 0b10011101;
case 5:
adcon0 = 0b10100101;
}
while (adcon0.2 == 1);
read = adresh;
}
void main()
{
//------------------------- CONFIGURAR PUERTOS ---------------------------
//------------------------------------------------------------------------
trisa = 0b11111;
trisb = 0b00000000;
trisc = 0b00000000;
porta = 0b00000;
portb = 0b00000000;
portc = 0b00000000;
adcon0 = 0b01000001;
adcon1 = 0b00000000; //leer solo adresh (256 valores)
//------------------------------------------------------------------------
//----------------------------- PRINCIPAL --------------------------------
lcd_setup();
delay_ms(100);
while( 1 )
{
lcd_clear();
nivel_izq //leer niveles de luz
nivel_tra
nivel_der
n_der = n_der * 2 - n_tra;
n_tra = n_tra - n_izq;
lprintf( "I:%3d", n_izq );
lprintf( " T:%3d", n_tra );
lprintf( " D:%3d", n_der );
delay_ms( 500 );
}
}
arcachofo- Participante Activo
- Mensajes : 91
Fecha de inscripción : 26/11/2008
Temas similares
» Leer slave I2C en 16 bit
» módulos para una IDE en python
» Ejemplo: led parpadeante por interrupciones en BoostBasic.
» Que les Parece Algunos Ejemplos en ASM...
» Compilador Basic libre para PIC: GCBASIC
» módulos para una IDE en python
» Ejemplo: led parpadeante por interrupciones en BoostBasic.
» Que les Parece Algunos Ejemplos en ASM...
» Compilador Basic libre para PIC: GCBASIC
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.