Professional Documents
Culture Documents
Bài thí nghiệm 2 PDF
Bài thí nghiệm 2 PDF
#include "USB_HID.h" }
#include <pic18_usb.h> {
int LED1_To_PC = 0; {
int LED3_To_PC = 0; {
int i = 0; output_toggle(Pin_Table[i]);
printf(lcd_putc,"\f"); }
if (!input(PIN_B5)) if(Attached_HID && Enumerated_HID)
{ {
while((!input(PIN_B5))); output_high(HID_USB_ON);
output_toggle(Pin_Table[i]); }
printf(lcd_putc,"\f"); else
} output_toggle(HID_USB_ON);
} delay_ms(100);
{ }
} {
} {
} var[i] = '\0';
{ }
{} { switch(HID_InData[1])
} {
{ output_toggle(Pin_Table[HID_InData[1]]);
} case 1: //LED # 2
{ printf(lcd_putc,"\f");
Writitng_Messages(); usb_task();
break; Status_USB_HID();
Reading_ADC(); {
break; if(usb_kbhit(1))
} {
} Clear_HID_Bus(HID_InData);
setup_adc_ports(AN0_TO_AN8|VSS_VDD); Reading_HID();
setup_adc(ADC_CLOCK_INTERNAL); }
setup_vref(FALSE); }
lcd_init(); }
Message(); }
Setup_USB_HID();
while(TRUE)
//output_high(PIN_B0);
/*
if(!input(PIN_B4))
if(LED1_To_PC)
LED1_To_PC =0;
else
LED1_To_PC =1;
}
Code Visual Studio:
}
Bi th nghim 3: Thit k Card thu thp d liu vi 8 DI, 8DO, 4AI, 4AO, 2 b
#include <lcd.c> }
case 'B':
void Buttons_Options(){
while(TRUE){ break;
if (!input(PIN_B4)){
while((!input(PIN_B4))); Buttons_Options();
output_toggle(Pin_Table[i]); break;
default:
if (!input(PIN_B5)){ break;
while((!input(PIN_B5))); }
output_toggle(Pin_Table[i]); }
i++;
} if(i>2) i = 0;
} }
break;
if(Attached_HID && Enumerated_HID){
case 5:
output_high(HID_USB_ON);
output_toggle(Pin_Table[HID_InData[1]]);
}
break;
else{
case 6:
output_toggle(HID_USB_ON);
output_toggle(Pin_Table[HID_InData[1]]);
delay_ms(100);
break;
}
case 7:
}
output_toggle(Pin_Table[HID_InData[1]]);
break;
void Clear_HID_Bus(char *var) {
}
int i = 0;
}
while(var[i] != '\0') {
void Writitng_Messages(){
var[i] = '\0';
int j = 0,k= 0,x=1;
i++;
char Buffer[64];
}
printf(lcd_putc,"\f");
}
for(j = 1; j<=sizeof(HID_InData); j++){
void Toggling_LEDs(){
Buffer[k] = (HID_InData[j]);
switch(HID_InData[1])
if(Buffer[k] == '\0'){
{
break;
case 0:
}
output_toggle(Pin_Table[HID_InData[1]]);
else{
break;
if(x > 16){
case 1:
lcd_gotoxy(x-16,2);
output_toggle(Pin_Table[HID_InData[1]]);
printf(lcd_putc,"%c",Buffer[k]);
break;
}
if(x > 32){ void pwm2(){
} set_tris_c(PIN_C1);
else{ setup_ccp2(ccp_pwm);
lcd_gotoxy(x,1); setup_timer_2(T2_DIV_BY_16,249,1);
} {
} Buffer[k] = (HID_InData[j]);
x++; break;
} else{
} if(x > 5)
set_tris_c(PIN_C2); x++;
setup_ccp1(ccp_pwm); }
setup_timer_2(T2_DIV_BY_16,249,1); SET_PWM2_DUTY(Buffer[k]);
break; set_adc_channel(0);
} delay_us(20);
else{ temp1=read_adc();
break; delay_us(20);
} temp2=read_adc();
k++; set_adc_channel(2);
x++; delay_us(20);
} temp3=read_adc();
SET_PWM1_DUTY(Buffer[k]); set_adc_channel(3);
} delay_us(20);
temp4=read_adc();
delay_us(20);
for (i=0;i<64;i++) }
{ usb_put_packet(1,HID_OutData,64,USB_DTS_TOGGLE);
HID_OutData[i]= temp1; }
} {
usb_put_packet(1,HID_OutData,64,USB_DTS_TOGGLE); count1=get_timer0();
for (i=0;i<64;i++)
for (i=0;i<64;i++) {
{ HID_OutData[i]= count1;
delay_us(20); }
} usb_put_packet(1,HID_OutData,64,USB_DTS_TOGGLE);
usb_put_packet(1,HID_OutData,64,USB_DTS_TOGGLE); }
void Reading_HID(){
{ switch(HID_InData[0])
HID_OutData[i]= temp3; {
} Toggling_LEDs();
usb_put_packet(1,HID_OutData,64,USB_DTS_TOGGLE); break;
{ Writitng_Messages();
} Reading_ADC();
usb_put_packet(1,HID_OutData,64,USB_DTS_TOGGLE); break;
} case 4:
{ break;
count2=get_timer1(); case 5:
{ break;
break; Setup_USB_HID();
case 7:
pwm2(); while(TRUE)
break; {
} Reading_Buttons1();
usb_task();
{ if(usb_enumerated())
setup_adc_ports(AN0_TO_AN3|VSS_VDD); {
setup_adc(ADC_CLOCK_INTERNAL); if(usb_kbhit(1))
setup_timer_0(T0_EXT_L_TO_H); {
setup_timer_1(T1_EXTERNAL); Clear_HID_Bus(HID_InData);
SET_TIMER1(0); Clear_HID_Bus(HID_OutData);
/*
setup_adc(ADC_CLOCK_DIV_2); Reading_HID();
setup_spi(SPI_SS_DISABLED); }
setup_wdt(WDT_OFF); }
setup_timer_1(T1_DISABLED); }
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
*/
setup_vref(FALSE);
lcd_init();
//! Message();
{
richTextBox3.Text =
Code Visual studio: USB_Host.Inputs.DataBuf[i].ToString();
}
using System; }
using System.Collections.Generic; }
using System.ComponentModel;
using System.Data; void Read_Counter1_HID()
using System.Drawing; {
using System.Linq; if (USB_Host.ReadInput())
using System.Text; {
using System.Threading.Tasks; richTextBox4.Clear();
using System.Windows.Forms; byte[] rcv =
using CyUSB; USB_Host.Inputs.DataBuf;
namespace CARD2 for (int i = 1; i <
{ USB_Host.Inputs.RptByteLen; i++)
public partial class Form1 : Form {
{ richTextBox4.Text =
public static int[] PID_USB = new USB_Host.Inputs.DataBuf[i].ToString();
int[10]; }
public static int[] VID_USB = new }
int[10]; }
bool Led1_state = false;
bool Led2_state = false; void USB_Devices_DeviceRemoved(object
bool Led3_state = false; sender, EventArgs e)
bool Led4_state = false; {
bool Led5_state = false; USBEventArgs usbEvent = e as
bool Led6_state = false; USBEventArgs;
bool Led7_state = false; }
bool Led8_state = false;
public static Int64 ticks = 0; void USB_Devices_DeviceAttached(object
int My_Device; sender, EventArgs e)
USBDeviceList USB_Devices; {
CyHidDevice USB_Host; USBEventArgs usbEvent = e as
public Form1() USBEventArgs;
{ }
InitializeComponent();
USB_Devices = new
USBDeviceList(CyConst.DEVICES_HID); private void button3_Click(object
USB_Devices.DeviceAttached += new sender, EventArgs e)
EventHandler(USB_Devices_DeviceAttached); {
USB_Devices.DeviceRemoved += new int i;
EventHandler(USB_Devices_DeviceRemoved); for (i = 0; i < USB_Devices.Count;
} i++)
{
void Read_HID() USBDevice Devices =
{ USB_Devices[i]; //CCS HID Demo
if (USB_Host.ReadInput()) PID_USB[i] = Devices.ProductID;
{ VID_USB[i] = Devices.VendorID;
richTextBox2.Clear(); if (Devices.Product == "CCS HID
byte[] rcv = Demo")
USB_Host.Inputs.DataBuf; {
for (int i = 1; i < My_Device = i;
USB_Host.Inputs.RptByteLen; i++) USB_Host =
{ USB_Devices[VID_USB[My_Device],
richTextBox2.Text = PID_USB[My_Device]] as CyHidDevice;
USB_Host.Inputs.DataBuf[i].ToString(); if (USB_Host != null)
} {
} label1.Text = "OK! .....
} ";
void Read_Counter_HID() }
{ else
if (USB_Host.ReadInput()) {
{ label1.Text = "OFF
richTextBox3.Clear(); .....";
byte[] rcv = }
USB_Host.Inputs.DataBuf; }
for (int i = 1; i < }
USB_Host.Inputs.RptByteLen; i++) }
ovalShape1.FillColor =
private void Form1_Load(object sender, Color.Gray;
EventArgs e) ovalShape1.FillGradientColor =
{ Color.WhiteSmoke;
var NewArray = new byte[64];
} NewArray[1] = 0x01;
NewArray[2] = 0x00;
private void button2_Click(object USB_Host.Outputs.DataBuf =
sender, EventArgs e) NewArray;
{ USB_Host.WriteOutput();
string text = richTextBox1.Text; }
byte[] data = Led1_state = !Led1_state;
System.Text.Encoding.ASCII.GetBytes(text); }
var NewArray = new byte[data.Length
+ 2]; private void ovalShape2_Click(object
data.CopyTo(NewArray, 2); sender, EventArgs e)
NewArray[1] = 0x02; {
data = NewArray; if (Led2_state == false)
USB_Host.Outputs.DataBuf = data; {
USB_Host.WriteOutput(); ovalShape2.FillColor =
} Color.Red;
ovalShape2.FillGradientColor =
private void button4_Click(object Color.WhiteSmoke;
sender, EventArgs e) var NewArray = new byte[64];
{ NewArray[1] = 0x01;
var NewArray = new byte[64]; NewArray[2] = 0x01;
NewArray[1] = 0x03; USB_Host.Outputs.DataBuf =
USB_Host.Outputs.DataBuf = NewArray; NewArray;
USB_Host.WriteOutput(); USB_Host.WriteOutput();
Read_HID(); }
} else
{
private void Start_Click(object sender, ovalShape2.FillColor =
EventArgs e) Color.Gray;
{ ovalShape2.FillGradientColor =
int value = 0; Color.WhiteSmoke;
value = Int16.Parse(textBox1.Text); var NewArray = new byte[64];
timer1.Interval = value; NewArray[1] = 0x01;
timer1.Start(); NewArray[2] = 0x01;
timer1.Enabled = true; USB_Host.Outputs.DataBuf =
} NewArray;
USB_Host.WriteOutput();
private void Stop_Click(object sender, }
EventArgs e) Led2_state = !Led2_state;
{ }
textBox1.Clear();
timer1.Stop(); private void ovalShape3_Click(object
timer1.Enabled = false; sender, EventArgs e)
} {
if (Led3_state == false)
private void ovalShape1_Click(object {
sender, EventArgs e) ovalShape3.FillColor =
{ Color.Red;
if (Led1_state == false) ovalShape3.FillGradientColor =
{ Color.WhiteSmoke;
ovalShape1.FillColor = var NewArray = new byte[64];
Color.Red; NewArray[1] = 0x01;
ovalShape1.FillGradientColor = NewArray[2] = 0x02;
Color.WhiteSmoke; USB_Host.Outputs.DataBuf =
var NewArray = new byte[64]; NewArray;
NewArray[1] = 0x01; USB_Host.WriteOutput();
NewArray[2] = 0x00; }
USB_Host.Outputs.DataBuf = else
NewArray; {
USB_Host.WriteOutput(); ovalShape3.FillColor =
Color.Gray;
} ovalShape3.FillGradientColor =
else Color.WhiteSmoke;
{ var NewArray = new byte[64];
NewArray[1] = 0x01; }
NewArray[2] = 0x02; Led5_state = !Led5_state;
USB_Host.Outputs.DataBuf = }
NewArray;
USB_Host.WriteOutput(); private void ovalShape6_Click(object
} sender, EventArgs e)
Led3_state = !Led3_state; {
} if (Led6_state == false)
{
private void ovalShape4_Click(object ovalShape6.FillColor =
sender, EventArgs e) Color.Red;
{ ovalShape6.FillGradientColor =
if (Led4_state == false) Color.WhiteSmoke;
{ var NewArray = new byte[64];
ovalShape4.FillColor = NewArray[1] = 0x01;
Color.Red; NewArray[2] = 0x05;
ovalShape4.FillGradientColor = USB_Host.Outputs.DataBuf =
Color.WhiteSmoke; NewArray;
var NewArray = new byte[64]; USB_Host.WriteOutput();
NewArray[1] = 0x01; }
NewArray[2] = 0x03; else
USB_Host.Outputs.DataBuf = {
NewArray; ovalShape6.FillColor =
USB_Host.WriteOutput(); Color.Gray;
} ovalShape6.FillGradientColor =
else Color.WhiteSmoke;
{ var NewArray = new byte[64];
ovalShape4.FillColor = NewArray[1] = 0x01;
Color.Gray; NewArray[2] = 0x05;
ovalShape4.FillGradientColor = USB_Host.Outputs.DataBuf =
Color.WhiteSmoke; NewArray;
var NewArray = new byte[64]; USB_Host.WriteOutput();
NewArray[1] = 0x01; }
NewArray[2] = 0x03; Led6_state = !Led6_state;
USB_Host.Outputs.DataBuf = }
NewArray;
USB_Host.WriteOutput(); private void ovalShape7_Click(object
} sender, EventArgs e)
Led4_state = !Led4_state; {
} if (Led7_state == false)
{
private void ovalShape5_Click(object ovalShape7.FillColor =
sender, EventArgs e) Color.Red;
{ ovalShape7.FillGradientColor =
if (Led5_state == false) Color.WhiteSmoke;
{ var NewArray = new byte[64];
ovalShape5.FillColor = NewArray[1] = 0x01;
Color.Red; NewArray[2] = 0x06;
ovalShape5.FillGradientColor = USB_Host.Outputs.DataBuf =
Color.WhiteSmoke; NewArray;
var NewArray = new byte[64]; USB_Host.WriteOutput();
NewArray[1] = 0x01; }
NewArray[2] = 0x04; else
USB_Host.Outputs.DataBuf = {
NewArray; ovalShape7.FillColor =
USB_Host.WriteOutput(); Color.Gray;
} ovalShape7.FillGradientColor =
else Color.WhiteSmoke;
{ var NewArray = new byte[64];
ovalShape5.FillColor = NewArray[1] = 0x01;
Color.Gray; NewArray[2] = 0x06;
ovalShape5.FillGradientColor = USB_Host.Outputs.DataBuf =
Color.WhiteSmoke; NewArray;
var NewArray = new byte[64]; USB_Host.WriteOutput();
NewArray[1] = 0x01; }
NewArray[2] = 0x04; Led7_state = !Led7_state;
USB_Host.Outputs.DataBuf = }
NewArray;
USB_Host.WriteOutput();
private void ovalShape8_Click(object data = NewArray;
sender, EventArgs e) USB_Host.Outputs.DataBuf = data;
{ USB_Host.WriteOutput();
if (Led8_state == false) }
{
ovalShape8.FillColor = private void button8_Click(object
Color.Red; sender, EventArgs e)
ovalShape8.FillGradientColor = {
Color.WhiteSmoke; string text = richTextBox7.Text;
var NewArray = new byte[64]; byte[] data =
NewArray[1] = 0x01; System.Text.Encoding.ASCII.GetBytes(text);
NewArray[2] = 0x07; var NewArray = new byte[data.Length
USB_Host.Outputs.DataBuf = + 2];
NewArray; data.CopyTo(NewArray, 2);
USB_Host.WriteOutput(); NewArray[1] = 0x07;
} data = NewArray;
else USB_Host.Outputs.DataBuf = data;
{ USB_Host.WriteOutput();
ovalShape8.FillColor = }
Color.Gray; }
ovalShape8.FillGradientColor = }
Color.WhiteSmoke;
var NewArray = new byte[64];
NewArray[1] = 0x01;
NewArray[2] = 0x07;
USB_Host.Outputs.DataBuf =
NewArray;
USB_Host.WriteOutput();
}
Led8_state = !Led8_state;
}
private void
richTextBox2_TextChanged(object sender,
EventArgs e)
{
Code:
{ int PWM_time = 0;
} if (Led1_state == false)
void Read_HID() {
{ ovalShape2.FillColor = Color.Red;
{ NewArray[1] = 0x01;
richTextBox2.Clear(); USB_Host.WriteOutput();
}
var NewArray = new byte[64];
}
NewArray[1] = 0x01;
}
NewArray[2] = 0x00;
void USB_Devices_DeviceRemoved(object sender,
EventArgs e) USB_Host.Outputs.DataBuf = NewArray;
{ USB_Host.WriteOutput();
USBEventArgs usbEvent = e as USBEventArgs; }
//label3.Text = usbEvent.FriendlyName + " Led1_state = !Led1_state;
removed.";
}
}
private void Led2(object sender, EventArgs e)
void USB_Devices_DeviceAttached(object sender,
EventArgs e) {
{ if (Led2_state == false)
NewArray[2] = 0x01;
USB_Host.Outputs.DataBuf = NewArray; USB_Host.Outputs.DataBuf = NewArray;
USB_Host.WriteOutput(); USB_Host.WriteOutput();
} }
{ }
ovalShape3.FillColor = Color.Black;
USB_Host.WriteOutput(); USB_Host.WriteOutput();
} Read_HID();
Led2_state = !Led2_state; }
NewArray[1] = 0x01;
int i;
NewArray[2] = 0x02;
for (i = 0; i < USB_Devices.Count; i++)
USB_Host.Outputs.DataBuf = NewArray;
{
USB_Host.WriteOutput();
USBDevice Devices = USB_Devices[i];
}
PID_USB[i] = Devices.ProductID;
else
VID_USB[i] = Devices.VendorID;
{
if (Devices.Product == "CCS HID Demo")
ovalShape4.FillColor = Color.Black;
{
var NewArray = new byte[64];
My_Device = i;
NewArray[1] = 0x01;
NewArray[2] = 0x02;
USB_Host = }
USB_Devices[VID_USB[My_Device],
PID_USB[My_Device]] as
timer2.Enabled = false; {
} textBox1.Clear();
} timer1.Stop();
timer1.Enabled = false;
// timer2.Enabled = false; }
// timer3.Enabled = false;
byte[] data =
System.Text.Encoding.ASCII.GetBytes(text);
{
ek2[i] = ek1[i];
timer3.Interval = 1;
ek1[i] = ek[i];
timer3.Enabled = false;
uk1[i] = uk[i];
timer2.Interval = 500;
}
timer2.Enabled = false;
timer2.Enabled = false;
}
PWM_time = 0;
timer2.Enabled = true;
private void timer2_Tick(object sender, EventArgs e)
Read_ADC(i);
void Read_ADC(int No)
temp = Convert.ToByte(txtValue.Text) * 100/255;
{
ek[i] = Convert.ToInt16(set_temp1.Text) - temp;
var NewArray = new byte[64];
} {
txtValue.Text =
USB_Host.Inputs.DataBuf[i].ToString();
int PID_out = 0;
for(byte i= 0;i<4;i++)
NewArray[1] = Convert.ToByte(PID_out|0xF0); //
if data send >= 128 => output for PWM
USB_Host.Outputs.DataBuf = NewArray;
USB_Host.WriteOutput();