Yo lo hice asi... y ademas lo GRAFICA!!! Espero te sirva. Atte. Alekspm
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