Beruflich Dokumente
Kultur Dokumente
MICROCONTROLADORES Y
DSPS
Seccin: 002
Nmero de Prctica: 10
Objetivos:
Controlar una lcd des el lenguaje C
Introduccin:
Los DSPIC sin chips ms potentes que el microcontroladores
PIC ya que tiene un memoria mas grade, instrucciones
diferentes, es mas es as rpido, su programacin es diferente
comparado con
el micro controlador PIC .as como con
instrucciones DSPs, El manejo de un display de 7 segmentos
es un buen comienzo para introducirnos en el gran mundo de
los DSPIC.
Metodologa de diseo (consideraciones tericas).
Procesador de seales digitales (DSPs)
Es un microprocesador que posee un software y un hardware
optimizado para realizar operaciones numricas a muy altas
velocidades, til para aplicaciones de seales analgica en
tiempo real. sus partes principales son:
Multiplicadores-acumuladores (MAC)
ALU
Registros
PLL
PWM
DSPIC30F4013es un controlador digital de 16 bits ofrece
la capacidad de un DSP con las caractersticas de control en
tiempo real de un microcontroladores sus caractersticas son:
Interrupciones priorizadas
Perifricos extensivos incluidos
Manejo de potencia
Acumuladores duales de 40 bits
MACS de 16X16 bits en un solo ciclo
Barrel-shifter de 40 bits
Arquitectura tipo harbad modificada
LCD
//int us,ds,um,dm,uh,dh;
int ius,ids,ium,idm,iuh,idh;
int seg,dseg,minu,dmin,hr;
int ajuste;
int minutos;
int horas;
char num2ascii (int num)
{switch (num){
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
}
}
void main() {
CORCON=CORCON;
PSVPAG=PSVPAG;
ADPCFG = 0xFFFF;
LATB = 0;
TRISB = 0;
LATD = 0;
TRISD = 0;
TRISF = 0XFFFF;
Lcd_Custom_Config(&PORTB, 3,2,1,0, &PORTD, 0, 2, 1);
Lcd_Custom_Cmd(LCD_CURSOR_OFF);
Lcd_Custom_Out(1,1, mensaje);
Lcd_Custom_Out(2,5, hora);
idh=0;
iuh=0;
idm=0;
ium=0;
ids=0;
ius=0;
hora[5]=' ';
hora[2]=':';
set_tris_f(0b11111111);
ajuste=0;
while (1)
{
port_f=0b11111111;
ajuste =port_f;
if (ajuste==1){
ids=0;
ius=0;
Lcd_Custom_Out(1,1, "Ajuste la hora");
minutos = Ow_Read(&PORTF,1);
horas = Ow_Read(&PORTF,2);
if (minutos == 1) {ium++; minu=0;} if (ium ==10) {ium=0; minu=1;}
if (minu == 1) {idm++; dmin=0; minu=0;} if (idm==6) {idm=0;}
if (horas == 1) {iuh++; hr=0;} if (iuh==10) {iuh=0; hr=1;}
if (hr == 1) {idh++; hr=0;} if (idh==2 && iuh==4) {idh=0; iuh=0;}}
else{
delay_ms (4000); //un segundo
if (ius<9) {ius++; seg=0;}
{ium++; minu=0;
hora[3]=num2ascii(idm);
hora[4]=num2ascii(ium);
hora[6]=num2ascii(ids);
hora[7]=num2ascii(ius);
Lcd_Custom_Out(2,5, hora);
}
},
El circuito utilizado es el siguiente:
Material utilizado
DSPIC30F4013
LCD
Potencimetro 5K
Alambre
Protoboard
Resultados
Los resultados se muestran en el siguiente video:
Conclusiones: