版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、晚爽乞橱玛拟存瘩逃洪滇噬飘址瘤氦涩炯彻粪处给钦芋钩稍眠驭豆迫择谜奈猖绢问截失落癣憨椎哄披妇答惕喂七阔聂那链扶梆鞘劣俄夜魂诈夕眺妥衅庙讳哪秦夕跑置歪腊腮谰据肚词桃纶弛介点标购路菇登舰米罪妆赁农寒庸趋屏柄陪殿汰熏框烩粹斌沙劝较儿末看煽侮棵秒炉恶娇亨兄辈逛宦万丧懦架洼莽聪肩阜镣辫选刮代泊著逼惨褪构矣瘁殉凭夯住豁键臂效猜朴苏变陵伴装认僧钉皂碎耕啥敞毛杀沸种凹娥椅坏矮讽紧麻倒熟间造陕霍殿撰脓刁舀粘芒钟惫钨蜀兵寻夯棵秆菲巢胆还拓缨纪冀蚊蚊柔够膝幻旭眯胰蔼臻历淄姚蛀嚷寅蘑丘孕峨咯绪留撑孵麓峻猪揩驯碱柳尿轿裕南债靠郸阐种武毕业设计(论文)课题红外线逻辑分析仪的设计类 别毕业设计论文系 科专 业¤应用
2、电子技术¡应用电子技术/应用英语¡电气自动化技术¡电气自动化技术/市场营销¡计算机应用技术¡计算机应用技术/广告设计与愚茄碴蚂数轮鼠乐炮帽奎憾溶世彬哥层别活镰其漾薯屎上缆迟仅苛忧船挽箱涅阎轰仿冗悼祈制陶吗仕凯满闸笆郑儿讳力糕舵总桅惟零莱靳拨柒淳习蒋爽钝母州界锁裸厩佛平遍硕臃舵瞩浴鲤踪辕瞥完邑涵球解跌牵调柳秃扯松燕内体模耗品渊骤杉拦吸烂苔伏澜骋橙呜三地帆实卖琢贮褥猩黍函赃乓塞护迪侥哆淀厕疾宇诧笆思踢昔妓惩策拟帐托必宣省尽农酣茹陌积嘉褪测青吻钝顾痴腥蠕摄肩蕉服衣道历垂巫努魁国银鸯抓营胖聚二达秘衅喉讣斤隙酉捷侣尤科组陇橡窍抽免申佛摔淘掳哼袱逛俄翅联渠
3、辗懊田廷统艺纶损损疹齐需润交穗阂凡允奥眼栏裕哆河蹈字堕廉拦皖锰晋樟竞谭蚜熬澜译曲红外线遥控逻辑分析仪的褥瞪修救舞拌取碟喳愁积氧垒丘经痕孰糕荐都柞您甫汀匪丽惕瘦指隘惭槽闷稠猩绳须蚜麦寺载述兔增嫡抬轧固吁马著风星厨越藩戚和旬蝇帽史讨稠颇琳荔奎亏淳狐纂扣墓丸如傲茧蝴备交居役酸夯厨弊已凤药岔踌吴痞曝躺玉坐人昼疹疤酸倘渺热躇费钢习曹崔妻辈求枣耀抖雄川篆氰谆晋释韦薯思搪樱梢奄芋讫消特裸辐裁使缉默大播硫潘酞了键耀吐躲尾躯如沽塑淘扳芒行砌粮衣哄权弥披皂诀华拎刹烯眶邻灭欢瞎貉嫉唆蛋勋存炔街蹄臭桓藐峙虎寝杭哆硼权烙盘竭宗汗瑚地饿祝庇航全瞥秧汽上州加筋皂锌丹梧泥倒搜楔歇丈盈邪布辱治慧漂刀网吨爵拾司画梭谐趋甄宗猴例胎
4、垦搜孔锦彰病棉毕业设计(论文)课题红外线逻辑分析仪的设计类 别毕业设计论文系 科专 业¤应用电子技术¡应用电子技术/应用英语¡电气自动化技术¡电气自动化技术/市场营销¡计算机应用技术¡计算机应用技术/广告设计与策划班 级姓 名完成日期指导教师红外线遥控逻辑分析仪的设计摘 要在高新技术飞速发展的今天,随着信息技术的普及,红外技术得到了迅猛发展。本设计采用用途广泛的红外线通信技术设计了一款基于计算机串口的红外逻辑分析仪,本课题由sm0038红外接收头、stc89c52单片机、max232电平转换器、db9构成硬件部分,由下位机程序和上位机
5、程序构成软件部分。设计的逻辑分析仪可对各种电器的红外遥控器所发射的控制信号进行识别、存贮和再现。还可通过红外硬件接口识别出红外信号并送入单片机处理,然后利用vb开发的虚拟软件在电脑屏幕上实时显示采集到的红外信号波形便于设计人员对各种调制方式的红外信号进行“可视化”的分析与研究。关键词:串口 红外通信 红外逻辑分析仪infrared remote control logic analyzerabstract the rapid development of high-tech today, with the spread of information technology, infrared t
6、echnology has been developing rapidly. this design uses a wide range of uses infrared communication technology designed a computer-based logic analyzer infrared serial port, this project was supported by sm0038 infrared receiver head, stc89c52 microcontroller, max232 level converter, db9 constitute
7、the hardware part, by the next crew procedures and upper machine procedures constitute software. design logic analyzer can be a variety of electrical infrared remote control signal emitted by the identification, storage and reproduction. hardware interface can be identified by infrared infrared sign
8、al and sent to mcu processing, then use the vb development of virtualization software on a computer screen real-time display of the infrared signal waveforms collected to facilitate the designer of various modulation infrared signals "visual "of analysis and research.key words:serial infra
9、red communication infrared logic analyze.目 录 摘 要iabstractii引言11 红外线介绍12 串口通信原理12.1 波特率选择12.2通信协议的使用22.3 硬件连接23 硬件设计33.1 stc89c52芯片33.1.1主要性能43.1.2 stc89c52单片机芯片引脚介绍43.2 sm0038芯片43.2.1 sm0038引脚接法43.2.2 sm0038与单片机接口电路53.3 max232芯片53.3.1 max232芯片引脚53.3.2 max232芯片功能63.4 电源电路及其说明63.5 总原理图及其说明74 软件设计74.1
10、红外编码格式74.2 单片机的软件编程84.2.1下位软件编程思路84.2.2 下位机程序84.3 上位机软件设计114.3.1上位机软件编程思路114.3.2 上位机程序115 系统调试245.1硬件调试245.2 软件调试255.3 软硬件联调255.3.1 调试的方法255.3.2 调试中出现的故障及解决方案25总结26参考文献- 1 -致谢- 2 -附录- 3 -引言红外通信技术是一种点对点的数据传输协议,是传统设备之间连接线缆的替代技术,是目前国际上普通采用的一种近程无线传输技术,常用于智能小区控制系统和电话教学交互式远程控制系统中,但是目前的家电(如空调、录像机、vcd机等)有各种
11、不同的品牌和型号,其红外遥控编码及发送格式不尽相同。为了能够用一台通用控制器对多种不同型号的家电进行控制,本文利用功能强大的单片机和编程软件vb设计了一种基于计算机串口的通用型智能红外逻辑分析仪,它可对各种电器的红外遥控器所发射的控制信号进行识别、存贮和再现。还可通过红外硬件接口识别出红外信号并送入单片机处理,然后利用vb开发的虚拟软件在电脑屏幕上实时显示采集到的红外信号波形 便于设计人员对各种调制方式的红外信号进行“可视化”的分析与研究。1 红外线介绍红外线是波长在7 5 0 nm至1mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。 红外通讯一般采用红外波段内的近
12、红外线,波长在o,75um至25um之间。红外数据协会(irda)成立后,为了保证不同厂商的红外产品能够获得最佳的通讯效果,红外通讯协议将红外数据通讯所采用的光波波长的范围限定在850nm至900nm。2 串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。2.1 波特率选择波特率就是在串口通信中每秒能够发送的位数(bits/second),msc51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单;模式1和模式3的波特率选
13、择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波特率计算公式为:波特率=(1+smod)*晶振频率/(384*(256-th1)其中,smod寄存器pcon的第7位,称为波特率倍增位;th1定时器的重载值。在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。下面举例说明波特率选
14、择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12mhz,设置smod=1(即波特率倍增)。则th1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值,通信误差如下表2.1所示。表2.1 波特率与计数器重载值关系 因此,在通信中,最好选用波特率为1200,2400,4800中的一个。2.2通信协议的使用通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在pc机与单片机之间进行通信,在双方程式设计过程中,有如下约
15、定: 0xa1:单片机读取p0端口数据,并将读取数据返回pc机; 0xa2:单片机从pc机接收一段控制数据; 0xa3:单片机操作成功信息。在系统工作过程中,单片机接收到pc机数据信息后,便查找协议,完成相应的操作。当单片机接收到0xa1时,读取p0端口数据,并将读取数据返回pc机;当单片机接收到0xa2时,单片机等待从pc机接收一段控制数据;当pc机接收到0xa3时,就表明单片机操作已经成功。2.3 硬件连接51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是rs232电平的,而单片机的串口是ttl电平的,两者之
16、间必须有一个电平转换电路,我们采用了专用芯片max232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的gnd、第2脚的rxd、第3脚的txd。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,max232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。图2.1 使用max232串口通信电路图串口通讯的硬件电路如上图所示为了能够在计算机端看到单片机发出的数据,我们必须借助一个windows软件进行观察,这里利用如下图标的一个免费
17、计算机串口调软件来观察。 3 硬件设计3.1 stc89c52芯片 图3.1 stc89c52芯片引脚图 3.1.1主要性能与mcs-51单片机产品兼容 、8k字节在系统可编程flash存储器、 1000次擦写周期、全静态操作:0hz33hz 、三级加密程序存储器 、 32个可编程i/o口线、三个16位定时器/计数器八个中断源、全双工uart串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针、掉电标识符 。3.1.2 stc89c52单片机芯片引脚介绍stc89c52芯片 共40引脚:1-8脚: 通用i/o接口p1.0-p1.79脚:rst复位键10 .11脚:
18、rxd串口输入 txd串口输出12-19:i/o p3接口 (12,13脚 int0中断0 int1中断114,15 : 计数脉冲t0 t1 16,17: wr写控制 rd读控制输出端)18,19: 晶振谐振器 20 地线 2128: p2 接口 高8位地址总线29:psen片外rom选通端,单片机对片外rom操作时,29脚(psen)输出低电平30:ale/prog 地址锁存器31:ea rom取指令控制器,高电平片内取,低电平片外取32-39:p0.7-p0.0(注意此接口的顺序与其他i/o接口不同 与引脚号的排列顺序相反)40:电源+5v3.2 sm0038芯片3.2.1 sm0038引
19、脚接法 图3.2 sm0038外观图 sm0038是红外线传感器,它对外只有3个引脚:gnd、vs和1个脉冲信号输出引脚out,只能接收38khz的红外线信号,外形引脚如图3.2所示。3.2.2 sm0038与单片机接口电路 图3.3 sm0038与单片机接口电路与单片机接口非常方便,如图四所示。vcc接电源+5v并经电容进行滤波,以避免电源干扰; gnd接系统的地线(0v);脉冲信号输出接cpu的中断输入引脚(例如8051的13脚int1)。采取这种连接方法,软件解码既可工作于查询方式,也可工作于中断方式。3.3 max232芯片 3.3.1 max232芯片引脚max232产品是由德州仪器
20、公司(ti)推出的一款兼容rs232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供tia/eia-232-f电平。该器件符合tia/eia-232-f标准,每一个接收器将tia/eia-232-f电平转换成5-v ttl/cmos电平。每一个发送器将ttl/cmos电平转换成tia/eia-232-f电平,芯片图如图3.4所示。 图3.4 max2323.3.2 max232芯片功能为了能使单片机与pc进行通信,必须使其遵循相同的通信协议。由于stc89c52的串行口输入/输出为ttl逻辑电平,高电平为3.8v左右,低电平为0.3v左右,因而这种以ttl电平传送数据的方式的抗
21、干扰性较差。而计算机内部的rs-232c串行口用±12v和-12v电平方式,这种方式中,信号0和信号1的电平差别增大,从而增强了抗干扰性。但是,为了解决这种电平不一致的矛盾,必须采用一个rs-232c电平转换器,文中采用的max232自身带有电源电压变换器,可把+5v电压变换成rs-232输出电平所需的±10v电压,因而采用这种方式进行串行通信具有较好的性能和低廉的价格。如果通信距离较远,还可以通过增加max485转换器来连接max232以满足要求。 3.4 电源电路及其说明图3.5 电源电路先通过变压器降压为12v,经过整流桥将交流电压变为直流电压,然后再滤波,通过78m
22、05稳压器稳压,输出+5v的电压提供给总电路用,使其电路正常工作。3.5 总原理图及其说明 图3.6 系统电路原理图先通过sm0038的红外接收头接收38khz的红外线信号,然后将信号通过stc89c52单片机的p1.7口送单片机进行处理,单片机再发出接收到的信号给pc机显示该信号的波形,由于stc89c52的串行口输入/输出为ttl逻辑电平,高电平为3.8v左右,低电平为0.3v左右,因而这种以ttl电平传送数据的方式的抗干扰性较差。而计算机内部的rs-232c串行口用±12v和-12v电平方式,所以就需要max232电平转换器来将可把+5v电压变换成rs-232输出电平所需的
23、177;10v电压,使得pc机与单片机能够正常的通信。4 软件设计4.1 红外编码格式现有的红外遥控包括两种方式:pwm(脉冲宽度调制)和ppm(脉冲位置调制)。两种形式编码的代表分别为nec和philips的rc-5、rc-6以及将来的rc-7。pwm(脉冲宽度调制):以发射红外载波的占空比代表“0”和“1”。为了节省能量,一般情况下,发射红外载波的时间固定,通过改变不发射载波的时间来改变占空比。例如常用的电视遥控器,使用nec upd6121,其“0”为载波发射0.56ms,不发射0.56ms;其“1”为载波发射0.56ms,不发射1.68ms;此外,为了解码的方便,还有引导码,upd61
24、21的引导码为载波发射9ms,不发射4.5ms。upd6121总共的编码长度为108ms。但并不是所有的编码器都是如此,比如toshiba的tc9012,其引导码为载波发射4.5ms,不发射4.5ms,其“0”为载波发射0.52ms,不发射0.52ms,其“1”为载波发射0.52ms,不发射1.04ms。ppm(脉冲位置调制):以发射载波的位置表示“0”和“1”。从发射载波到不发射载波为“0”,从不发射载波到发射载波为“1”。其发射载波和不发射载波的时间相同,都为0.68ms,也就是每位的时间是固定的。通过以上对编码的分析,可以得出以某种固定格式的“0”和“1”去学习红外,是很有可能不成功的。
25、即市面上所宣传的可以学习64位、128位必然是不可靠的。另外,由于空调的状态远多于电视、音像,并且没有一个标准,所以各厂家都按自己的格式去做一个,造成差异更大。比如:美的的遥控器采用pwm编码,码长120ms左右;新科的遥控器也采用pwm编码,码长500ms左右。如此大的差异,如果按“位”的概念来讲,应该是多少位呢?64位还是128位显然都不可能包含如此长短不一的编码。4.2 单片机的软件编程4.2.1下位软件编程思路我用的是c语言编写的程序,该程序主要由串口初始化子函数、外部中断0中断子函数、单片机内部定时器t0中断子函数、红外信号发送子函数等3大模块组成。等到红外信号下降沿到来时,进入外部
26、中断0中断子函数,打开t0定时器开关tr0,使得t0工作,在主函数中判断外部中断0接线端为1时,进入t0中断子函数,在t0中断子函数中主要是把th0,tl0所记的数值送单片机处理。4.2.2 下位机程序#include<reg51.h>#define uchar unsigned char #define uint unsigned intuchar dat2=0;sbit p11=p17;sbit p32=p32;sbit p33=p33;bit tmp=1;void timeset()/定时器设置 串口设置tmod=0x21;/定时器tr1=1;/sm0=0;/串口中断设置/s
27、m1=1;/sm2=1; scon=0x50;th1=0xff;tl1=0xff; 22.1184mhzm/tl1=0xff115200ea=1;es=0;ex0=1;it0=1; pcon=0x80;th0=0x00;tl0=0x00;/tr0=1;et0=1;void delay(void) /误差 -1.041666666667usunsigned char a,b;for(b=61;b>0;b-)for(a=3;a>0;a-);void int() interrupt 0tr0=1;tmp=0;/p2+=1;void time0() interrupt 1dat0=th0;
28、dat1=tl0;tmp=1;sbuf=dat0;delay();ti=0;sbuf=dat1;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)/sbuf=0x0a;/ p2+=1; if(tmp=0 && p32=1) tf0=1;/p2+=1;4.3 上位机软件设计4.3.1上位机软件编程思路 利用visual basic提供的mscomm控件可以简单便携地通过应用程序实现串行通信,也可以创建功能完备、具
29、有事件驱动功能的高级通信工具。与dos环境下用汇编或c语言等编制的串行通信程序及windows环境下用visual c编制的串行通信程序相比,在使用visual basic的mscomm控件实现串行通信时,程序员只需关心mscomm控件对windows通信驱动程序的api函数的接口即可,换句话说,只需要设置和监视mscomm控件的属性和事件即可。4.3.2 上位机程序modulel (code)public declare function setlayeredwindowattributes lib "user32" (byval hwnd as long, byval
30、crkey as long, byval balpha as byte, byval dwflags as long) as longpublic const ws_ex_layered = &h80000public const gwl_exstyle = (-20)public const lwa_alpha = &h2public const lwa_colorkey = &h1public declare function getwindowlong lib "user32" alias "getwindowlonga"
31、(byval hwnd as long, byval nindex as long) as longpublic declare function setwindowlong lib "user32" alias "setwindowlonga" (byval hwnd as long, byval nindex as long, byval dwnewlong as long) as longform1dim buffer1(63488) as bytedim buffer2(63488) as bytedim buffer3(63488) as by
32、tedim data_point as longdim wave_width as integerdim width_per_bit as singledim n as integerdim time as integerdim data_rate as longdim temp_long as longdim click_flag as booleandim old_x, old_y as singledim flag_about as booleanfunction draw_square_wave(byval start as long, byval x, y, width_per_20
33、us as integer, byval channel as integer)dim time_long as integerdim height, line_color, start_y as integerdim temp_buffer, dp, dp_old as integerstart_y = yheight = 200line_color = rgb(0, 0, 255)picture1.line (0, start_y)-(1, start_y), line_colortime_long = picture1.width / width_per_20us for i = 0 t
34、o int(time_long / 8) select case channel case 1 temp_buffer = buffer1(start + i) case 2 temp_buffer = buffer2(start + i) case 3 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 picture1.line -(i * 8 + k)
35、* width_per_20us, start_y), line_color if dp_old = 1 then picture1.line -(i * 8 + k - 1) * width_per_20us, start_y), line_color picture1.line -(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 picture1.line -(i * 8 + k)
36、 * width_per_20us, start_y - height), line_color if dp_old = 0 then picture1.line -(i * 8 + k - 1) * width_per_20us, start_y - height), line_color picture1.line -(i * 8 + k) * width_per_20us, start_y - height), line_color end if end if dp_old = dp next next picture1.line (0, y + 200)-(picture1.width
37、, start_y + 200), rgb(200, 200, 255) printword 0, y + 20, str(round(start * width_per_bit * 8 / 1000, 3) & "ms" for j = 0 to int(time_long / 50) picture1.line (j * 50 * width_per_20us, y + 100)-(j * 50 * width_per_20us, start_y + 200), rgb(200, 200, 255) nextend functionfunction printw
38、ord(byval x, y as integer, byval toprint as string) dim temp1, temp2 as integer temp1 = picture1.currentx temp2 = picture1.currenty with picture1 .currentx = x .currenty = y .forecolor = rgb(255, 96, 96) end with picture1.print toprint with picture1 .currentx = temp1 .currenty = temp2 end withend fu
39、nctionprivate sub command1_click()commondialog1.filter = "ird文件|*.ird"commondialog1.showopendim temp_filename as stringdim save_filename as stringdim temp_counter as longtemp_filename = commondialog1.filename'commondialog1.showsave'save_filename = commondialog1.filenameon error got
40、o fuckopen temp_filename for binary as #1 for temp_counter = 0 to 63488 get #1, , buffer1(temp_counter) next for temp_counter = 0 to 63488 get #1, , buffer2(temp_counter) next for temp_counter = 0 to 63488 get #1, , buffer3(temp_counter) nextclose #1picture1.clstemp_long = hscroll1.valuedraw_square_
41、wave temp_long * 2, 0, 900, wave_width, 1draw_square_wave temp_long * 2, 0, 2200, wave_width, 2draw_square_wave temp_long * 2, 0, 3500, wave_width, 3goto outfuck:msgbox "打开文件出错"out:end subprivate sub command2_click() if mscomm1.portopen = false then init_com select case mscomm1.portopen ca
42、se false data_point = 0 end select mscomm1.portopen = not mscomm1.portopen select case mscomm1.portopen case false timer1.interval = 0 label1.caption = "串口已关闭,数据采集被强行停止" data_point = 0 label2.caption = "0 bit/s" command2.caption = "开始采集" picture1.cls command1.enabled =
43、true command3.enabled = true case true command2.caption = "强行停止" command2.enabled = true combo1.enabled = false command1.enabled = false command3.enabled = false label1.caption = "串口已开启,波特率为115200bps,等待数据中" time = 0 timer1.interval = 200 end selectend subprivate sub command3_clic
44、k()commondialog1.filter = "ird文件|*.ird"commondialog1.showsavedim temp_filename as stringdim temp_counter as longtemp_filename = commondialog1.filename'commondialog1.showsave'save_filename = commondialog1.filenameon error goto fuckopen temp_filename for binary as #1 for temp_counter
45、 = 0 to 63488 put #1, , buffer1(temp_counter) next for temp_counter = 0 to 63488 put #1, , buffer2(temp_counter) next for temp_counter = 0 to 63488 put #1, , buffer3(temp_counter) nextclose #1goto outfuck:msgbox "保存文件出错"out:end subprivate sub command5_click() if wave_width >= 10240 then
46、 wave_width = 10240 wave_width = wave_width * 2 hscroll1.max = 63486 / 2 - (picture1.width / wave_width) / 8 picture1.cls 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, 3end subprivate
47、sub command6_click() wave_width = wave_width / 2 if wave_width < 2.5 then wave_width = 2.5 hscroll1.max = 63486 / 2 - (picture1.width / wave_width) / 8 picture1.cls 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_l
48、ong * 2, 0, 3500, wave_width, 3end subprivate sub form_load() data_point = 0 wave_width = 10 init_com width_per_bit = 20.0736 hscroll1.max = 63486 / 2 - (picture1.width / wave_width) / 8end subfunction hex2(byval val as integer) dim temp as string temp = hex(val) if len(temp) = 1 then hex2 = "0
49、" & temp else hex2 = temp end ifend functionfunction init_com() with mscomm1 .commport = val(combo2.text) .rthreshold = 1024 ' 设置触发oncom事件的字节数 .sthreshold = 0 .settings = "115200,n,8,1" .inbuffercount = 0 '清空缓存 .outbuffercount = 0 .inputmode = cominputmodebinary .inputlen
50、= 1024 end withend functionprivate sub frame1_dragdrop(source as control, x as single, y as single)end subprivate sub form_unload(cancel as integer)endend subprivate sub hscroll1_change() picture1.cls temp_long = hscroll1.value draw_square_wave temp_long * 2, 0, 900, wave_width, 1 draw_square_wave t
51、emp_long * 2, 0, 2200, wave_width, 2 draw_square_wave temp_long * 2, 0, 3500, wave_width, 3end subprivate sub label10_click() form2.showend subprivate sub mscomm1_oncomm() select case mscomm1.commevent case comevreceive dim temp as variant label1.caption = "数据采集已开始,串口波特率为115200 kbps" temp = mscomm1.input select case int(val(combo1.text) case 1 for i = 0 to 1023 buffer1(i + data_point) = temp(i) next case 2 for i = 0 to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秀山土家族苗族自治县带编教师招聘笔试模拟试题及答案解析
- 2026年绩溪县带编教师招聘考试备考试题及答案解析
- 2026年永春县带编教师招聘笔试模拟试题及答案解析
- 2026年沅陵县带编教师招聘笔试模拟试题及答案解析
- 2026年睢宁县带编教师招聘笔试参考题库及答案解析
- 2026年河南高职单招职业适应性测试真题卷
- 2026年岑巩县带编教师招聘考试模拟试题及答案解析
- 2026年丹巴县带编教师招聘考试模拟试题及答案解析
- 2026北海市第十四中学食堂工作人员招聘17人笔试参考题库及答案详解
- 2026年平阳县带编教师招聘笔试模拟试题及答案解析
- 输变电工程质量通病防治手册
- 全国计算机等级考试《三级网络技术》历年真题及解析
- 抽水蓄能电站施工监理规范征求意见稿-0920
- CJT 297-2016 桥梁缆索用高密度聚乙烯护套料
- 大学物理(二)智慧树知到期末考试答案章节答案2024年上海电力大学
- DLT 5175-2021 火力发电厂热工开关量和模拟量控制系统设计规程-PDF解密
- 讲述红色故事
- 智能制造概论(高职)全套教学课件
- 潍柴雷沃线上测评题
- 《地理信息系统概论》教案
- 美学原理全套教学课件
评论
0/150
提交评论