Interface em Visual Basic
(Daqui em diante assume-se que o leitor está minimamente familiarizado com o programa Visual Basic.)
Para a interface pode-se começar por criar o layout da mesma:
Um dos componentes mais importantes desta interface é o componente MSComm
. É aqui que se define como irá ser usada a porta de série do PC. Também se adicionam duas caixas de texto e dois botões.
Assim que o programa for executado configura-se a porta de série 1. Estes parâmetros têm que estar de acordo com os dados da inicialização da USART do microcontrolador.
Private Sub Form_Load() ' chose correct settings for your device Settings = "115200,N,8,1" MSComm1.Settings = Settings '''''''''''''''''''''''''''''' ' Open COM1 MSComm1.CommPort = 1 MSComm1.OutBufferSize = 4 MSComm1.PortOpen = True ' Make sure DTR line is low to prevent Stamp reset MSComm1.DTREnable = False MSComm1.RThreshold = 1 MSComm1.InputLen = 1 End Sub
É possível tornar esta interface mais robusta, para que perante situações não previstas esta reaja de uma forma esperada.
A caixa de texto referente à tensão da DAC tem o nome tensão_dac
e o botão tem o nome send_butom
.
Assim, quando o botão send_butom
for pressionado será enviado o valor da caixa de texto para o microcontrolador.
Para não complicar a compreensão do código e para usar os recursos disponíveis no VB, optou-se por enviar o valor da tensão num conjunto de 3 bytes, antecedidos do carácter s
.
Private Sub send_Click() MSComm1.Output = "s" MSComm1.Output = Hex(tensao_dac.Text) End Sub
Para se receber a tensão da ADC do microcontrolador usa-se o botão que tem a inscrição TensãoADC[mV]
. A este botão foi dado o nome Request_butom
. Assim, quando este for pressionado, será enviado o carácter r
.
Private Sub request_Click() MSComm1.Output = "r" End Sub
Assim que o microcontrolador receber o carácter r
, vai activar a ADC. Após a conversão envia o valor para a sua USART. Assim que o microcontrolador tiver enviado o valor da conversão pela USART, a porta série do PC receberá esse valor.
Private Sub MSComm1_OnComm() Dim sData As String Dim Lido As Integer ' If Rx Event then get data ' and process If MSComm1.CommEvent = comEvReceive Then sData = MSComm1.Input tensao_adc.Text = Round( Asc(sData) * 19,4) End If End Sub
A ADC fez uma conversão de 8 bits. O resultado dessa conversão estará compreendido entre 0 e 255, o que implica que este valor tenha que ser adaptado à natureza da conversão. Daí se multiplicar o valor recebido por 19.4. Para terminar a interface é conveniente que se desactive a porta de série para que não existam conflitos futuros… Para testar tanto o envio de informação para a DAC pode-se ligar a ADC do microcontrolador à saída da DAC. A não coincidência da tensão lida da ADC com a tensão de saída da DAC está relacionada com o facto da ADC ser de 8 bits.