红外线遥控逻辑分析仪的设计(编辑修改稿)内容摘要:

igned char define uint unsigned int uchar dat[2]={0}。 sbit P11=P1^7。 sbit P32=P3^2。 sbit P33=P3^3。 bit tmp=1。 void TimeSet() //定时器设置 串口设置 { TMOD=0x21。 //定时器 TR1=1。 南通职业大学电子工程系毕业论文 9 // SM0=0。 //串口中断设置 // SM1=1。 // SM2=1。 SCON=0x50。 TH1=0xff。 TL1=0xff。 EA=1。 ES=0。 EX0=1。 IT0=1。 PCON=0x80。 TH0=0x00。 TL0=0x00。 // TR0=1。 ET0=1。 } void delay(void) //误差 { unsigned char a,b。 for(b=61。 b0。 b) for(a=3。 a0。 a)。 } void INT() interrupt 0 { TR0=1。 tmp=0。 // P2+=1。 } 南通职业大学电子工程系毕业论文 10 void Time0() interrupt 1 { dat[0]=TH0。 dat[1]=TL0。 tmp=1。 SBUF=dat[0]。 delay()。 TI=0。 SBUF=dat[1]。 delay()。 TI=0。 TR0=0。 // TF0=0。 TH0=0。 TL0=0。 // P33=0。 } void Time1() interrupt 3 { RI=0。 TI=0。 } void main() { TimeSet()。 while(1) 南通职业大学电子工程系毕业论文 11 { // SBUF=0x0a。 // P2+=1。 if(tmp==0 amp。 amp。 P32==1) { TF0=1。 // P2+=1。 } } } 上位机软件设计 上位机软件编程思路 利用 Visual Basic 提供的 MSComm 控件可以简单便携地通过应用程序实现串行通信,也可以创建功能完备、具有事件驱动功能的高级通信工具。 与 DOS 环境下用汇编或C 语言等编制的串行通信程序及 Windows 环境下用 Visual C 编制的串行通信程序相比,在使用 Visual Basic 的 MSComm 控件实现串行通信时,程序员只需关心 MSComm 控件对Windows 通信驱动程序的 API 函数的接口即可,换句话说,只需要设置和监视 MSComm控件的属性和事件即可。 上位机程序 Modulel (Code) Public Declare Function SetLayeredWindowAttributes Lib user32 (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long Public Const WS_EX_LAYERED = amp。 H80000 Public Const GWL_EXSTYLE = (20) Public Const LWA_ALPHA = amp。 H2 Public Const LWA_COLORKEY = amp。 H1 Public Declare Function GetWindowLong Lib user32 Alias GetWindowLongA (ByVal hwnd As Long, ByVal nIndex As Long) As Long 南通职业大学电子工程系毕业论文 12 Public Declare Function SetWindowLong Lib user32 Alias SetWindowLongA (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Form1 Dim Buffer1(63488) As Byte Dim Buffer2(63488) As Byte Dim Buffer3(63488) As Byte Dim Data_point As Long Dim Wave_width As Integer Dim Width_per_BIT As Single Dim n As Integer Dim Time As Integer Dim Data_rate As Long Dim temp_long As Long Dim Click_flag As Boolean Dim Old_X, Old_Y As Single Dim Flag_about As Boolean Function Draw_Square_Wave(ByVal Start As Long, ByVal x, Y, Width_per_20us As Integer, ByVal Channel As Integer) Dim Time_long As Integer Dim HEiGHT, LINE_COLOR, START_Y As Integer Dim Temp_buffer, Dp, Dp_old As Integer START_Y = Y HEiGHT = 200 LINE_COLOR = RGB(0, 0, 255) (0, START_Y)(1, START_Y), LINE_COLOR Time_long = / Width_per_20us For i = 0 To Int(Time_long / 8) Select Case Channel Case 1 Temp_buffer = Buffer1(Start + i) Case 2 Temp_buffer = Buffer2(Start + i) Case 3 南通职业大学电子工程系毕业论文 13 Temp_buffer = Buffer3(Start + i) End Select k = 0 For j = 7 To 0 Step 1 k = k + 1 Dp = Int(Temp_buffer / 2 ^ j) If Dp = 0 Then If Dp_old = 0 Then ((i * 8 + k) * Width_per_20us, START_Y), LINE_COLOR If Dp_old = 1 Then ((i * 8 + k 1) * Width_per_20us, START_Y), LINE_COLOR ((i * 8 + k) * Width_per_20us, START_Y), LINE_COLOR End If End If If Dp = 1 Then Temp_buffer = Temp_buffer 2 ^ j If Dp_old = 1 Then ((i * 8 + k) * Width_per_20us, START_Y HEiGHT), LINE_COLOR If Dp_old = 0 Then ((i * 8 + k 1) * Width_per_20us, START_Y HEiGHT), LINE_COLOR ((i * 8 + k) * Width_per_20us, START_Y HEiGHT), LINE_COLOR End If End If Dp_old = Dp Next Next (0, Y + 200)(, START_Y + 200), RGB(200, 200, 255) PrintWord 0, Y + 20, Str(Round(Start * Width_per_BIT * 8 / 1000, 3)) amp。 ms For j = 0 To Int(Time_long / 50) 南通职业大学电子工程系毕业论文 14 (j * 50 * Width_per_20us, Y + 100)(j * 50 * Width_per_20us, START_Y + 200), RGB(200, 200, 255) Next End Function Function PrintWord(ByVal x, Y As Integer, ByVal toprint As String) Dim temp1, temp2 As Integer temp1 = temp2 = With Picture1 .CurrentX = x .CurrentY = Y .ForeColor = RGB(255, 96, 96) End With toprint With Picture1 .CurrentX = temp1 .CurrentY = temp2 End With End Function Private Sub Command1_Click() = Ird 文件 |*.ird Dim temp_Filename As String Dim save_Filename As String Dim temp_counter As Long temp_Filename = 39。 39。 save_Filename = On Error GoTo fuck Open temp_Filename For Binary As 1 For temp_counter = 0 To 63488 Get 1, , Buffer1(temp_counter) 南通职业大学电子工程系毕业论文 15 Next For temp_counter = 0 To 63488 Get 1, , Buffer2(temp_counter) Next For temp_counter = 0 To 63488 Get 1, , Buffer3(temp_counter) Next Close 1 temp_long = Draw_Square_Wave temp_long * 2, 0, 900, Wave_width, 1 Draw_Square_Wave temp_long * 2, 0, 2200, Wave_width, 2 Draw_Square_Wave temp_long * 2, 0, 3500, Wave_width, 3 GoTo out fuck: MsgBox 打开文件出错 out: End Sub Private Sub Command2_Click() If = False Then Init_ Select Case Case False Data_point = 0 End Select = Not Select Case Case False = 0 = 串口已关闭,数据采集被强行停止 Data_point = 0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。