Documentos de Académico
Documentos de Profesional
Documentos de Cultura
“PROGRAMACIÓN AVANZADA”
PRESENTADO POR:
MATEO DIAZ DAVID
MACIN CARBALLO GERARDO
NO. DE CONTROL:
10TE0347
10TE0366
LICENCIATURA EN:
INGENIERÍA MECATRONICA
DE LA ESPECIALIDAD EN:
Automatización de procesos.
DOCENTE:
M.S.C. Montiel Martínez Miguel
1
Envío y recepción de datos por medio de RS232
Resumen
Antecedentes
El estándar RS-23
2
Desarrollo
Objetivo:
Elementos de decoración
Operadores numéricos
Tratamiento de caracteres
Color
Agrupación de elementos
Elementos de comunicación
3
son: las entradas y salidas de carácter
booleano y de forma de Bytes mismo que
serán enviados y recibidos mediante la
ayuda de Isis Proteus y el microcontrolador
a usar.
4
Figura 2.- Muestra el diseño del circuito que realizaría la función generar el control de la temperatura de
intervalos de 10.
5
Figura 3.- Muestra la interfaz en funcionamiento donde el usuario oprime un botón y este inicia el
programa mandado del microcontrolador para poder realizar la etapa de censado de temperatura.
6
Figura 4.- Imagen que muestra el circuito elaborado en Isis Proteus para la obtención de la señal a
manipular con el sensor LM35.
7
Código de microcontrolador
/*
* practica_rs232.c
*
* Created: 01/03/2014 05:04:30 p.m.
* Author: Macin, Mateo
*/
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 8000000UL // XTAL de 8 MHz
#endif
#include "UARTAiNit.h"
//#include "TIMER0.h"
#include <avr/interrupt.h>
#include <util/delay.h>
#define setbit(sfr,bit) (_SFR_BYTE(sfr)|=(_BV(bit)))
#define clearbit(sfr,bit) (_SFR_BYTE(sfr)&=~(_BV(bit)))
#define bittoggle(sfr,bit)(_SFR_BYTE(sfr)^=_BV(bit))
unsigned char x;
unsigned char motor;
unsigned char temp_deseada;
unsigned char temp_ADC;
unsigned char temperatura;
ISR (USART_RX_vect){
if(x==48) //start
{
temp_deseada=10;
else if(x==49)//detenido
{
temp_deseada=20;
}
else if (x==50)//Aumentar rango de temp
{
temp_deseada=30;
}
else if (x==51)//Aumentar rango de temp
{
temp_deseada=40;
8
}
else if (x==52)//Aumentar rango de temp
{
temp_deseada=50;
}
else if (x==53)//Aumentar rango de temp
{
temp_deseada=60;
}
else if (x==54)//Aumentar rango de temp
{
temp_deseada=70;
}
else if (x==55)//Aumentar rango de temp
{
temp_deseada=80;
}
else if (x==56)//Aumentar rango de temp
{
temp_deseada=90;
}
else if (x==57)//Aumentar rango de temp
{
temp_deseada=100;
}
}
int main(void)
{
initializeUART0(9600,0,8,2,2);
9
setbit(UCSR0B,RXCIE0);
sei();
while(1)
{
temperatura=((temp_deseada*255)/150);
//255-----150
//bits de temp---temperatura
_delay_ms(20);
setbit(ADCSRA,ADSC); //se inicia la
conversion
while(bit_is_clear(ADCSRA,ADIF))
//Espera a que termine la conversion
temp_ADC=ADCH;
TransmiteUART0(temp_ADC);
if (temperatura<temp_ADC)
{
PORTD&=~(1<<PORTD6);
}
else
{
PORTD|=(1<<PORTD6);
}
}
}
10
Bibliografía
Bricos. (8 de Noviembre de 2012). Obtenido de http://bricos.com/2012/11/temporizadores-clases-y-
funcionamiento/
11