Autor Tema: PIC16F73 envia dato y Visual Basic 6.0 lo grafíca  (Leído 3020 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alekspm

  • PIC10
  • *
  • Mensajes: 13
PIC16F73 envia dato y Visual Basic 6.0 lo grafíca
« en: 15 de Mayo de 2010, 21:39:55 »
Hola, les proporciono el code en VB 6.0 que recibe un dato serial a través del puerto RS-232, proveniente del PIC16F73 pin 17, nos muestra su valor en analogico y en digital. Y lo grafíca. El PIC16F73 o cualquier otro debe programarse para que envie un dato serial por el pin asignado para ese caso.
Cualquier duda estoy a sus órdenes. Alekspm, Bye


1.Iniciar Microsoft Visual Basic 6.0
2.Crear un nuevo proyecto EXE standar (Form1) con las siguientes propiedades:
   Appearance= 1 - 3D
   AutoRedraw= True
   BackColor= H80000004
   BorderStyle= 1 – Fixed Single
   Caption= Monitor AN-0 del PIC 16F73-1/SP
   Icon= (asigne uno)
   StartUpPosition= 2 – CenterScreen
3.En el formulario padre, agregar dos etiquetas con la siguientes propiedades:
   label1, BackColor= H80000009, Caption= Dato de 8 bits:
   label2, BackColor= H80000009, Caption= Voltaje aplicado al pin 2:
4.Agregar dos cuadros de texto con las siguientes propiedades:
   text1, Locked= True, Text= (vacio)
   text2, Locked= True, Text= (vacio)
5.Agregar el control AvtiveX MSComm
   El formulario debe parecerse al siguiente, puede cambiar según el gusto del desarrollador.


6.De dos clicks sobre el formulario padre, y al aparecer el examinador de código, escriba:
   
Dim MatrizY(150), MatrizY2(150) As Integer
Dim Contador, Aux As Integer
Dim CordX, CordY As Integer
Dim Recibe As String

Private Sub Form_Load()
    Contador = 0
    CurrentX = 1000
    CurrentY = 5000
    CordX = 250 'Inicio de la grafica original 1000
    CordY = 5550
    
    'Comprueba que el puerto este cerrado para poder abrirlo
    If MSComm1.PortOpen = False Then
        MSComm1.Settings = "2400, N, 8, 1" 'BPS, Parity, Bits, Stop
        MSComm1.Handshaking = comNone   'Sin protocolo. Vea Ayuda: MSComm
        MSComm1.InputMode = 0   '0: Datos recuperados como texto. 1: en binario
        MSComm1.RThreshold = 1  'Cada cuantos bytes recibidos se genera un evento
        MSComm1.InputLen = 1    'Cuantos bytes se extraen al leer el puerto
        MSComm1.PortOpen = True 'Abre el puerto seleccionado
    End If
End Sub

Private Sub MSComm1_OnComm()
'MSComm1.CommEvent = 2 (CommEvReceive); No. de caracteres RThreshold recibido.
'Este evento se genera continuamente hasta que se usa la propiedad Input para
'quitar datos del búfer de recepción.
    If MSComm1.CommEvent = 2 Then
        'El dato que llega por el puerto se guarda en "Recibe"
        Recibe = MSComm1.Input  'El dato se recibe en bytes
        MatrizY(149) = Asc(Recibe)  'Convierte el byte (11111111= FF) Recibe en ASCII
        'El ASCII de recibe lo resta a 255 para hacer positiva la grafica
        Aux = 255 - Asc(Recibe)
    End If
    
    If Contador = 149 Then
    
        MatrizY(149) = 255 - Asc(Recibe)
        MatrizY(149) = (MatrizY(149) * 10) + 3000
        MatrizY2(149) = MatrizY(149)
    
    
        For Contador = 0 To 148
            MatrizY2(Contador) = MatrizY(Contador + 1)
        Next

        For Contador = 0 To 149
            MatrizY(Contador) = MatrizY2(Contador)
        Next
            Cls
            CordX = 250

        For Contador = 0 To 147
            Line (CordX, MatrizY2(Contador)) - (CordX + 20, MatrizY2(Contador + 1))
            CordX = CordX + 20
        Next
    End If
    'El 10 es para aumentar la escala del Aux
    'El 3000 es para ajustar el setpoint de la grafica
    Line (CordX, CordY) - (CordX + 20, (Aux * 10) + 3000)

    CordY = (Aux * 10) + 3000
    CordX = CurrentX

    MatrizY(Contador) = CordY
    Contador = Contador + 1
    
    'Muestra el dato en formato de 8 bits (255= 11111111)
    Text1.Text = Asc(Recibe)
    'Convierte los 8 bits en voltaje. El (5/255) es el factor de resolución del PIC
    Text2.Text = Asc(Recibe) * (5 / 255)
End Sub

Private Sub Form_UnLoad(Cancel As Integer)
    If MSComm1.PortOpen Then
        'Cierra el puerto utilizado
        MSComm1.PortOpen = False
    End If
    
    End 'Termina el programa
End Sub


 

anything