下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、:张鸿文庄进发鸿学院:自动化科学与专业:自动化班级:2011 二班目录一、设计要求21.11.2基本要求2扩展要求2二、简介+创新功能52.12.2简介5创新功能6案比较53.1硬件方案5四、设计与论证84.1电路设计8五、电路图及有关设计文件11六、测试方法、仪器和数据14系统测试的目的14系统测试的方法14测试仪器15七、测试数据及分析16一、设计要求二、1.基本要求可以单片机显示屏上实时地显示当前电压值,并且有波形显示以及坐标方格显示。示波器最高测量电压不低于 10V,精度不低于 20mv。具有改变采样频率以及幅度变换功能,即改变“X 增益”和“Y 增益”,并且有图像上下移动的功能。4)
2、具有输入电压过高的功能等。功能,电压达到设定值提醒功能,电压提醒5)支持图像保存功能以及图像回调功能。2.拓展要求1)具有多通道信号输入功能,即可以同时测量多路信号。2)利用显示。交叉线精确标志处出波形上点的横纵坐标,实现横纵坐标的对应3)人机交互功能,上位机通讯功能,以及其他创新功能。二、简介+创新功能2.1 简介设计的便携式示波器,硬件电路主要是放大电路和 stm32 开发板,信号经过放大电路的处理之后,再经由 stm32 的 AD 引脚,经过数据处理后在 TFT 显示屏上显示。显示屏上可以实时地显示当前电压值,并且有波形显示以及坐标方格显示,而且,经过处理后可以测出输入波形的值以及频率。
3、具有改变采样频率以及幅度变换功能,即改变“X 增益”和“Y 增益”,并且有图像上下移动的功能。通过 U 盘模块可以保存图像以及图像回调。具有多通道信号输入功能,即可以同时测量信号。利用交叉线精确标志处出波形上点的横纵坐标,实现横纵坐标的对应显示。具体的系统框图如下:蓝牙安卓显示波形信号创新、ADCH376安卓显示通过蓝牙模块将输入波形的信号发送给安卓,通过进行波形显示与数据分析,实现真正意义上的便携式示波器。显示界面如下图:U 盘通信Stm32单片机放 大电路2.2.2、CH376U 盘模块此模块通过 SPI 通信与单片机进行连接,实现 U 盘与单片机的通信,可以在U 盘上创建文件,将数据保存
4、在 U 盘上。2.2.3、触摸屏模块制作的便携式示波器可以通过触摸屏直接对示波器进行功能选择,可以通过触摸直接将光标移到制定位置,读出特定位置的横纵坐标。2.2.4、实时上传波形到服务器的示波器通过蓝牙与进行通信,处理数据后再上面实现,不仅仅可以保存,还可以利用 GPRS 网路功能,利用 HTTP 通信协议,将保存上传到服务器上面,服务器是利用 Tomcat 在本机上面搭建的一个平的台,其他人可以的服务器,查看波形。图 22.2.4、自动打印波形功能波形服务器页面的上位机,通过与服务器 Tomcat 通信,当服务器接受到打印令,就会自动调用进行打印波形。图 3 Tomcat2.2.5、带有 A
5、utoSet 功能按下该键后,可以自动调节量程。案比较3.1 硬件结构设计3.1.1CH375 与 CH376 的选择由于 CH375 模块没有特定的 SPI 接口,选用并口模式占用的 IO 口过多,导致单片机 IO 口不够用。而 CH376 有专门的 SPI 接口,占用的 IO 口只有 5 个,所以选用 CH376。3.1.2 总体实现方案与主控制器的选择主控制器的选择上:方案 1:51 单片机,这个控制器虽然相对容易控制,比较简单。不过存在资源相对较少的缺点。方案 2:stm32 单片机,这个主控制器虽然在控制上相对 51 更有难度,不过资源上远比 51 多很多。不仅 IO 口多,而且有内
6、置的 AD快。功能,处理速度又经过之前多次使用这两种单片机的经验,毫不犹豫地选择了 stm32 作为主控制器。3.1.3 运放器型号的选择方案一:TL082 与 TL084 通同型、JEFT 输入,电源电压15,增益带宽 3MHz,转换速率 15V/US,消耗电流 1.4mA ,满足作品要求,而且价钱合适,新赛格又有得卖,所以毫不犹豫的买了。方案二:LM6172 双运放带宽为 100MHz,转换速率 3000v/s,每通道消耗电流 2.3mA,输出电流可达 50mA,完全满足本电路的要求,不选择该的一个原因是价格,邮购价格为 8 元一片。3.1.4 电子模拟开关的选择方案一:用继电器搭,通过
7、ULN2003 控制虽说输入电压可以提高,但是由于继电器反应速度慢,声音不好听,价钱又贵,2 元一个,买十多个不划算,所以不选。方案二:CD4051 电子模拟开关具有低导通阻抗和很低的截止漏电流。幅值为 4.520V 的数字信号可控制值至20V 的模拟信号,价钱又便宜,所以选择此类型号。3.1.5 显示方案1TFT 触摸屏显示优点 : 不用借用第的传输,直接单片机操作 IO 口,实时性比较好,能满足高频的显示,利用触摸功能也能实现对用户指令的响应。缺点 : 编程较复杂,刷屏效果很一般。2显示优点:实用性好,方便携带,只需要在 android上安装的 APP,就可以实现波形的显示,并根据用户的按
8、键选择对用的采样频率,真正实现了示波器的简易性,具有很强的创新性。缺点:难度较大,处理速度受的处理器的速度影响。3.1.6 数据传输方案1 网络传输优点 : 传输数据比较容易实现,使用 android的 sokect 编程和单片机上的 DM9000 网卡通信,就能简单实现采样数据的传输。缺点 : 传输速度受网络信号影响,而且需要网线,使用比较麻烦2 蓝牙传输优点 : 单片机上使用蓝牙串口模块能轻易地和的蓝牙 API 实现数据传输,稳定性较好,编程较容易,成本低廉。缺点 : 传输速度中等,传输距离有限。3 WIFI 传输优点 : 传输速度最快,可以实现一对多的传输。缺点 : 协议复杂,成本高。经
9、考虑,采用蓝牙传输,在实现低频率的基础上,第二代拟用 wifi 传输,进一步完善。四、设计与论证1、电路设计1.1、保护电路考虑到 CD4051 的输入电压不能大于 5V,输出电压即电压不能大于3.3V,所以,在输入输出端必须加上保护电路。本电路中采用二极管钳位的方法,:二极管钳位保护电路是指由两个二极管反向并联组成的,一次只能有一个二极管导通,而另一个处于截止状态,那么它的正反向压降就会被钳制在二极管正向导通压降 0.5-0.7 以下,从而起到保护电路的目的。在调试过程中,如果输入电压过大,输入电压基本稳定在 5.08V 作用,输出电压也稳定在 3.28V 作用,对电路起到很好的保护作用,既
10、简单又实用。1.2、旁路电容电路旁边的两个电容主要是起高频补偿的作用,因为本示波器只对低频有检测效果,所以在实物中去掉。而且,由于容值取值不当,对电阻的分压有一定的干扰作用。1.3 直流偏置电压TL084 产生的电压主要是将 1.5V 的正电压经过反向转换为负电压,将输入电压了 1.5V,所以对负电压也能。1.4 量程放大编程()Android 是谷歌()公司推出机开发,AndroidSDK 指的是 Android 专属的开发工具包。 AndroidSDK(Software Development Kit)提供了在 Windows/Linux/Mac上开发 Android 应用的开发组件,An
11、droid 支持所有的,其包含了在 Android上开发移动应用的各种工具集。工具集不仅包括了 Android 模拟器和用于 Eclipse 的 Android 开发工具插件(ADT),而且包括了各种用来调试、打包和在模拟器上安装应用的工具。Android SDK 主要是以 Java 语言为基础,用户可以使用 JavaCD4051是电子模拟开关,与 TL082配合起到电压放大缩小与放大的作用,由三个控制端 C、B、A 控制,分别有放大50倍,20倍,10倍,5倍,2倍,缩小10倍,缩小5倍。经过函数信号发生器与示波器的测量,此电路在低频下可以实现电压的放大与缩小功能,且误差很小,在20mv 之
12、内。语言来开发 Android上的应用。通过 SDK 提供的一些工其打包成 Android使用的 apk 文件,然后用 SDK 中的模拟器(Emulator)来模拟和测试在 Android上运行情况和效果。Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器。Tomcat 是 Apache(Apache Software Foundation)的 Jakarta 项目中的一个项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和 JSP 规范总是能在 Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定
13、,而且免费,因而深受 Java者的喜爱并得到了部分开发商的认可,成为目前比较流行的Web 应用服务器。Servlet 是 java 编程语言中的一个类,servlet 用于在 Web应用中进行请求和响应服务。当客户端发送请求智服务器时,服务器可以将请求信息转发给 Servlet,并在处理响应的业务处理之后返回给客户端相应的结果。当启动 Web 服务器或者客户端第一次向服务区发送请求时,可以自动装入 Servlet。 然后,Servlet 继续运行知道其他客户机发送请求。Servlet 可以对任何类型的请求产生响应,但通常被用来扩展 Web 服务器的应用程序。1.由于受传输速度的限制,单片机和上
14、面的波形显示不能同步,拟采用分时段采样的方式来实现波形,而上的波形的测量范围是 0Hz500Hz,超过了 500Hz 的信号波型就会变形。2 根据实际示波器的原理,对采样到的电压的数值,采用了循环队列的数据结构来装,每当进来一个数据,当队列满了,就从队头删除一个数据,这样就能实现波形的变换了。3 由于缺乏硬件测量频率,采用了一个卡尔曼滤波和中值定理和梯度拟合原理结合的算法,对电压的最大值和频率进量。五、电路图及有关设计文件5.1、STM32 最小系统模块功能:作为系统的主控模块和上位机的接收模块,处理信号并发出指令指导各模块的协调运行。板子总体设计图(原理图&PCB)5.2、放大电路5.3、C
15、H376六、测试方法、仪器和数据6.1 系统测试的目的:1、 测试模块功能的准确性和稳定性。2、 整体系统整体的性能是否达到设计要求,发现问题并找到可行的解决方法。3、 进行电路的改进。6.2 系统测试的方法:1、系统各模块测试阶段:此阶段主要着眼于局部,验证各模块功能是否符合设计要求,检查各电路是否正确连接,是否正常工作。通过观察现象,找出问题,进行模块就纠错或优化。2、系统整体性能测试阶段。此阶段主要系统总体是否符合设计要求,每个功能是否能完整实现,检查系统之间的协调性和可靠性。通过观察小车运行状况,找出或错误的地方,进行修改和优化。3、在方面的调试方法主要是使用 J-link 进行调试,
16、设置断点或者在中甚至一些代码实现小车系统的停转来一步步分析小车正在运行的程序从而一步步分析是程序的哪里出现了问题。4、硬件上主要是使用数字万用表和示波器来测量各参数的正确性,减少断线、虚焊和短路的各种问题。使用示波器来测量接收信号的强弱,通过这些调试来使得整个硬件能够正确运行。测试仪器、数字万用表:主要作用:A、用来判断电压的大小,从而判断该电路所连元件的工作电压是否正常;B、用来判断偏置电压的大小C、用来判断所焊电路是否已经出现虚焊,并且检查是短路还是断路,防止因为电路问题等硬件问题导致放大电路的,引起胡乱修改程序的无用功;6.3.2、数字示波器主要作用:A、在制作焊,短路,断路放大电路的过
17、程中,由于整个电路在一块板子上,虚都有,这个时候数字示波器就起了很大作用,通过对电路一步一步地追踪,逐步发现问题所在。6.3.3、函数信号发生器主要作用:对放大电路的调试与验证。不过由于的发生器接触不良,实在是太难为人了。6.3.4、J-link 调试器;主要作用:A、程序,减少因为串口擦写导致的错误;B、调试程序,通过分析各变量发现是程序问题还是硬件问题。6.3.5、Keil主要作用:调试;A、编译程序B、观察寄存器、变量、函数的数据是否正常,防止传参错误等低级错误的出现。七、测试数据及分析7.1 硬件电路测试数据X1X2X5输入最大值输入最小值输出最大值输出最小值理论最大值理论最小值280
18、mv-260mv300mv-280mv280mv-260mv540mv-520mv560mv-540mv540mv-520mv输入最大值输入最小值输出最大值输出最小值理论最大值理论最小值280mv-260mv140mv-120mv112mv-104mv540mv-520mv240mv-220mv216mv-208mv780mv-760mv340mv-320mv312mv-304mv1040mv-1020mv440mv-420mv416mv-408mv输入最大值输入最小值输出最大值输出最小值理论最大值理论最小值360mv-360mv100mv-80mv72mv-72mv500mv-500mv12
19、0mv-100mv120mv-100mv760mv-760mv180mv-160mv152mv-152mv1.04V-1.02V200mv-220mv208mv-204mvX1/5从以上结果可以看出,硬件电路的理论值与实际输出值误差在 0 到 40mv 内,但也不能排除函数信号发生器的干扰,本电路在转换速率上满足要求,频率在低于 3Mhz 都可以用数字示波器测出数据。输入最大值输入最小值输出最大值输出最小值理论最大值理论最小值254mv-254mv12mv-10mv10.16mv-10.16mv980mv-960mv40mv-40mv39.2mv-38.4mv780mv-760mv820mv-
20、800mv780mv-760mv1040mv-1020mv1080mv-1060mv1040mv-1020mv附录程序Main 函数/*uCOSII + STM32V3.4工程模板MAIN 文件2013-05-01*/#include includes.h #include stm32f10 x.h #include bsp.h #include app_cfg.h#include ili93xx_drive.h #include adc.h#include usart.h #include sys.h #include usart.h#include ili93xx_drive.h #inc
21、lude mmc_sd.h #include ff.h#include stdio.h #include string.h #include picdecoder.h #include touch.h #include adc.h #include timer.h#includefile_sys.h#define QueueSize 200enum HZHz200 = 1,Hz100 = 2,Hz50 = 3,Hz20 = 4,Hz10 = 5,Hz1 = 6 ;u16 tableQueueSize; u16 table1QueueSize; u8 front=0;u8 front1=0;u8
22、 rear=QueueSize-1; u8 rear1=QueueSize-1; u8 touch_key = 0;u8 Cursor_X=24; u8 Cursor_Y=60;cycle=1;u8 ADC_sFunctionalS FunctionalSling=QueueSize;e AutoSet=ENABLE;e ADC_Stop=DISABLE;u8 ADC_Ch=0;u8 VoivFlag=0; u8 SecdivFlag=0; u8 VoltOffset=134; u8 LCD_start=0; u8 Table_high0=0; u8 Table_high1=0; u8 V_m
23、ax0=0;u8 V_min0=0; u8 V_max1=0; u8 V_min1=0; u8 Vpp0=0;u8 Vpp1=0;FlagS FlagSFlagSus Table_se=SET; us LCD_se=SET;us Allow_LCD_se=SET;u8 Flag_Delay=0;u16 Frequent1 = 50 ,Frequent2=50; table_all50;table_all150;u8 Flag_OK=0,Flag_OK1=0; u8 Cycly_Count=10;Vpp_H=0,Vpp_L=0,Vpp_H1=0;u8 HzLevel=0;u8 Flag_stea
24、dy=1; /稳定显示波形标志位sicOS_STK App_TaskStartStkAPP_TASK_START_STK_SIZE; / TaskStart 任务堆栈sicvoidApp_TaskStart(void* p_arg);/TaskStart 函数/sicOS_STK App_TaskLEDStkAPP_TASK_LED_STK_SIZE; / TaskLED 任务堆栈sicOS_STK App_LCDStkAPP_TASK_LCD_STK_SIZE; / TaskLED 任务堆栈sicOS_STK App_AtkAPP_TASK_ADC_STK_SIZE; / TaskLED 任
25、务堆栈/sicOS_STK App_ADC_PROTaskLED 任务堆栈S_StkAPP_TASK_ADC_PROS_STK_SIZE; /s ssic icicvoid App_TaskLED(void* p_arg); void App_LCD(void* p_arg);void App_ADC(void* p_arg);/sicvoid App_ADC_PROS(void* p_arg);u8 Get_AD0(u16 Hz);u8 Get_AD1(u16 Hz);/sicOS_STK TASK_FLOOR_CHECKStkTASK_FLOOR_CHECK_STK_SIZE; / 目标楼
26、层检测 任务堆栈/sicOS_STK TASK_MOTO_CTRLStkTASK_MOTO_CTRL_STK_SIZE;控制 任务堆栈/ 电机/sicOS_STK TASK_DISPLAYStkTASK_DISPLAY_STK_SIZE;务堆栈/ 厢外显示 任/sicOS_STKStk_STK_SIZE;/ 通信 任务堆栈/*main()*/main(void)OSInit();SysClock_Init();/* 初始化系统外设、 CPU 时钟,仅此而已 */* 建立系统的第一个任务 */ OSTaskCreateExt(App_TaskStart, (void *) 0, (OS_STK
27、*)&App_TaskStartStkAPP_TASK_START_STK_SIZE - 1, APP_TASK_START_PRIO, APP_TASK_START_PRIO, (OS_STK *) &App_TaskStartStk0,APP_TASK_START_STK_SIZE , (void *) 0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);OSStart(); /* 开始任务调度 */ return (0);/*系统的第一个任务,负责开 OS 时钟,建立其他任务*/sicvoid App_TaskStart(void* p_arg)u
28、8 temp,err;p_arg = p_arg;/* 初始化 OS 时钟 */ OS_CPU_SysTickInit();/* 统计任务 */#if (OS_TASK_S_EN 0) OSSInit();#endif/SysDataInit();BSP_Init();/* 初始化外设*/建立 LED 任务OSTaskCreateExt(App_TaskLED, (void *) 0, (OS_STK *)/&App_TaskLEDStkAPP_TASK_LED_STK_SIZE - 1, APP_TASK_LED_PRIO,/APP_TASK_LED_PRIO, (OS_STK *) &Ap
29、p_TaskLEDStk0,APP_TASK_LED_STK_SIZE , (void *) 0, OS_TASK_OPT_STK_CHK |OS_TASK_OPT_STK_CLR/);/SysDeviceInit();OSTaskCreateExt(App_LCD, (void *) 0, (OS_STK *) &App_LCDStkAPP_TASK_LCD_STK_SIZE - 1, APP_TASK_LCD_PRIO,APP_TASK_LCD_PRIO, (OS_STK *) &App_LCDStk0, APP_TASK_LCD_STK_SIZE , (void *) 0, OS_TAS
30、K_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);OSTaskCreateExt(App_ADC, (void *) 0, (OS_STK *)&App_AtkAPP_TASK_ADC_STK_SIZE - 1, APP_TASK_ADC_PRIO,APP_TASK_ADC_PRIO, (OS_STK *) &App_Atk0,APP_TASK_ADC_STK_SIZE , (void *) 0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/OSTaskCreateExt(App_ADC_PROS, (void *) 0, (
31、OS_STK *)&App_ADC_PROS_StkAPP_TASK_ADC_PROS_STK_SIZE - 1,APP_TASK_ADC_PROS_PRIO,/&App_ADC_PROAPP_TASK_ADC_PROS_PRIO, (OS_STK *)S_Stk0, APP_TASK_ADC_PROS_STK_SIZE , (void *) 0,OS_TASK_OPT_STK_CHK |OS_TASK_OPT_STK_CLR/);while (1)OSTimeDly(50);/*LED 线程,LED 闪烁*/sicvoid App_TaskLED(void* p_arg)p_arg = p_
32、arg;while (1)OSTimeDlyHMSM(0,0,2,0);GPIO_SetBits(GPIOD, GPIO_Pin_2); OSTimeDlyHMSM(0,0,2,0);GPIO_ResetBits(GPIOD, GPIO_Pin_2);sicvoid App_LCD(void* p_arg)/u8 x=0;UU8s;8TarName64;u8 i=0,j=0;u8 SecdivDis=0 xff; u8 VoivDis=0 xff; u8 LCD_multi=2; u8 LCD_cycle=120; u8 LCD_Volt=1;u8 LCD_DispFlag=0; u8 Ch1
33、_disFlag=1; u8 Ch2_disFlag=1; u8LCD_flag=0;u8 Cursor_Xtemp=Cursor_X; u8 Cursor_Ytemp=Cursor_Y; u16 table_temp120;u16 table_temp1120; FATFS fs;p_arg = p_arg; delay_ms(1500); f_mount(0, &fs); while(font_init()while(update_font()/从 SD 卡更新LCD_ShowString(60,90,FAT SYS ERROR.delay_ms(200);/);Adc_Init();Ti
34、merx_Init(4999,(36-1) ; /5000us=5ms由(10-1)到 ()TIM_Cmd(TIM3, DISABLE);初始中断频率为 200Hzarr 值LCD_Clear(GRAY);PO_COLOR=WHITE;LCD_DrawRectangle(4,34,245,235); LCD_Fill(5,35,244,234,BLACK);LCD_grid();PO_COLOR=RED;LCD_ShowString(0,0,H&Z Oscilloscope, 1);PO_COLOR=WHITE;for(i=0;i6;i+)LCD_DrawRectangle(250,3+40*
35、i,315,38+40*i); LCD_Fill(251,4+40*i,314,37+40*i,CYAN);PO_COLOR=BLACK;LCD_ShowString(253,13,A U T O, 1); LCD_ShowString(253,53,CH1, 1);LCD_ShowString(253,93, V/DIV, 1);LCD_ShowString(253,133, s/DIV, 1);LCD_ShowString(253,173,STOP, 1);LCD_ShowString(253,213, PrtSc, 1); for(i=0;iQueueSize;i+)table_temp
36、i=VoltOffset; table_temp1i=VoltOffset;while (1)/*while (1)if(Flag_OK=0)*/*以下为显示部分*/while(Allow_LCD_se!=SET)OSTimeDlyHMSM(0,0,0,5);LCD_se=SET;if(Ch1_disFlag)PO_COLOR=BLACK;for(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_tempj-1,5+LCD_multi*j,table_tempj);Ch1_disFlag=0;if(Ch2_disFlag)PO_COLOR=BLACK;fo
37、r(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_temp1j-1,5+LCD_multi*j,table_temp1j);Ch2_disFlag=0;if(AutoSet=ENABLE)if(LCD_DispFlag)PO_COLOR=CYAN;LCD_ShowString(253,93,50mV/DIV, 1);LCD_ShowString(253,93, 3V/DIV, 1);LCD_ShowString(253,93, 1V/DIV, 1);LCD_ShowString(253,93,0.5V/DIV, 1);LCD_ShowString(25
38、3,93,0.1V/DIV, 1);LCD_ShowString(253,133,5ms/DIV, 1);LCD_ShowString(253,133,10ms/DIV, 1);LCD_ShowString(253,133,20ms/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93, V/DIV, 1);LCD_ShowString(253,133, s/DIV, 1); LCD_cycle=120;LCD_multi=2; LCD_DispFlag=0;elseif(!LCD_DispFlag)PO_COLOR=CYAN;LCD_ShowString(
39、253,93, V/DIV, 1);LCD_ShowString(253,133, s/DIV, 1);if(VoivFlag!=VoivDis|LCD_DispFlag=0)switch(VoivFlag)case 0:LCD_Volt=1;PO_COLOR=CYAN;LCD_ShowString(253,93,50mV/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93, 3V/DIV, 1);break; case 1:LCD_Volt=3;PO_COLOR=CYAN;LCD_ShowString(253,93, 3V/DIV, 1);PO_COLO
40、R=BLACK;LCD_ShowString(253,93, 1V/DIV, 1);break; case 2:LCD_Volt=6;PO_COLOR=CYAN;LCD_ShowString(253,93, 1V/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93,0.5V/DIV, 1);break;case 3:LCD_Volt=30;PO_COLOR=CYAN;LCD_ShowString(253,93,0.5V/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93,0.1V/DIV, 1);break;case
41、4:LCD_Volt=60;PO_COLOR=CYAN;LCD_ShowString(253,93,0.1V/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93,50mV/DIV, 1); break;default : break;VoivDis=VoivFlag;if(SecdivFlag!=SecdivDis|LCD_DispFlag=0)switch(SecdivFlag)case 0:LCD_cycle=120;LCD_multi=2;PO_COLOR=CYAN;LCD_ShowString(253,133,5ms/DIV, 1);PO_COLO
42、R=BLACK;LCD_ShowString(253,133,20ms/DIV, 1); break;case 1:LCD_cycle=60;LCD_multi=4;PO_COLOR=CYAN;LCD_ShowString(253,133,20ms/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,133,10ms/DIV, 1); break;case 2:LCD_cycle=30;LCD_multi=8;PO_COLOR=CYAN;LCD_ShowString(253,133,10ms/DIV, 1);PO_COLOR=BLACK;LCD_ShowStri
43、ng(253,133,5ms/DIV, 1); break;default :break;SecdivDis=SecdivFlag;LCD_DispFlag =1;PO_COLOR=BLACK;LCD_Show2Num(0,16,LCD_cycle, 2, 16,0);LCD_Show2Num(32, 16, HzLevel, 2, 16,0);LCD_Show2Num(64, 16, Frequent1/10000, 2, 16,0);LCD_Show2Num(80, 16, Frequent1/100, 2, 16,0);LCD_Show2Num(96, 16, Frequent1%100
44、, 2, 16,0);LCD_ShowString(112,16,Hz, 0);LCD_Show2Num(128, 0, V_max0/100, 2, 16,0);LCD_Show2Num(144, 0, V_max0%100, 2, 16,0);LCD_Show2Num(165, 0, V_min0/100, 2, 16,0);LCD_Show2Num(181, 0, V_min0%100, 2, 16,0);LCD_Show2Num(130, 16, Vpp0/100, 2, 16,0);LCD_Show2Num(146, 16, Vpp0%100, 2, 16,0);PO_COLOR=B
45、LACK;for(i=0;i40;i+)LCD_DrawPo LCD_DrawPo LCD_DrawPofor(i=0;i33;i+)LCD_DrawPo LCD_DrawPo LCD_DrawPoLCD_grid();(5+6*i,Cursor_Ytemp);(6+6*i,Cursor_Ytemp); (7+6*i,Cursor_Ytemp);(Cursor_Xtemp,35+6*i); (Cursor_Xtemp,36+6*i);(Cursor_Xtemp,37+6*i);PO_COLOR=MAGENTA;Cursor_Xtemp=Cursor_X; Cursor_Ytemp=Cursor
46、_Y; for(i=0;i40;i+)LCD_DrawPoLCD_DrawPo LCD_DrawPo(5+6*i,Cursor_Y);(6+6*i,Cursor_Y); (7+6*i,Cursor_Y);for(i=0;i33;i+)LCD_DrawPo LCD_DrawPo LCD_DrawPo(Cursor_X,35+6*i); (Cursor_X,36+6*i);(Cursor_X,37+6*i);/*OSTimeDlyHMSM(0,0,0,20);switch (ADC_Ch)case 0:if(Table_se=SET)LCD_start=Table_high0; for(i=LCD
47、_start,j=0;j=ADC_sling)table_tempj=LCD_Volt*tablei+j-ADC_s if(table_tempj(VoltOffset-35)table_tempj=35;elseling/120;table_tempj=VoltOffset-LCD_Volt*tablei+j-ADC_sling/120;elsetable_tempj=LCD_Volt*tablei+j/120; if(table_tempj(VoltOffset-35)table_tempj=35;elsetable_tempj=VoltOffset-LCD_Volt*tablei+j/1
48、20;PO_COLOR=YELLOW;for(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_tempj-1,5+LCD_multi*j,table_tempj);Ch1_disFlag=1; LCD_se=RESET;OSTimeDlyHMSM(0,0,0,50);break;case 1:for(i=LCD_start,j=0;j=ADC_sling)table_temp1j=LCD_Volt*table1i+j-ADC_s if(table_temp1j(VoltOffset-35)table_temp1j=35;elseling/120;tabl
49、e_temp1j=VoltOffset-LCD_Volt*table1i+j-ADC_sling/120;elsetable_temp1j=LCD_Volt*table1i+j/120; if(table_temp1j(VoltOffset-35)table_temp1j=35;elsetable_temp1j=VoltOffset-LCD_Volt*table1i+j/120;PO_COLREEN;for(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_temp1j-1,5+LCD_multi*j,table_temp1j);Ch2_disFlag=1
50、; LCD_se=RESET;OSTimeDlyHMSM(0,0,0,50);break; case 2:break; default :break;LCD_se=SET;/*以下截屏*/if(touch_key=6)while (Allow_LCD_se!=SET) OSTimeDlyHMSM(0,0,0,5);LCD_ShowString(0,16,Capturing., 0);CH376_RST = 1;delay_ms( 20 );CH376_RST = 0;delay_ms( 100 );/*复位 */*复位 */* 延时 100 毫秒 */s = mInitCH376Host( )
51、;/* 初始化 CH376 */while ( CH376DiskConnect( ) != USB_SUCS )/* 检查 U 盘是否连接,等待 U 盘,对于 SD 卡,可以由单片机直接查询 SDdelay_ms( 100 );的插拔状态引脚 */delay_ms( 200 );/ 对于检测到 USB 设备的,最多等待 100*50mS,主要针对有些 MP3 太慢,对于检测到 USB 设备for ( i = 0; i = DEF_DISK_MOUNTED & i = 5 ) /* 有的 U 盘总是返回未准备好,不过可以忽略,只要其建立连接 MOUNTED 且尝试 5*50mS */break
52、;strcpy( (char *)TarName, B.BMP ); /* s = CH376FileCreatePath( TarName );目录路径,输入缓冲区必须在 RAM 中 */bmp_encode(0,0,320,240); touch_key=0;目标文件名 */*新建多级目录下的文件,支持多级sicvoid App_ADC(void* p_arg)i;u8 LED_flag=1; u8 LCD_flag=0; u16 adcx;u16 adcx1; u8 count; u8 len;u16 times=0; float temp; uart_init(9600);OSTime
53、DlyHMSM(0,0,5,0);/p_arg = p_arg; while (1)for( i = 0 ; i ARR=(2-1); /1us中断频率 1000kHz20k-33kif(Get_AD0(2)Flag_OK=1; HzLevel=0; break;elseHzLevel=1; break;case 1:TIM3-ARR=(3-1); /1.5us中断频率 500kHz13.4k-22kif(Get_AD0(3)Flag_OK=1; HzLevel=1; break;elseHzLevel=2; break;case 2:TIM3-ARR=(4-1); /2us 中断频率 kHz
54、10k-16kif(Get_AD0(4)Flag_OK=1;HzLevel=2;break;elseHzLevel=3;break;case 3:TIM3-ARR=(5-1); /2.5us中断频率 kHz8k-13.2if(Get_AD0(5)Flag_OK=1; HzLevel=3; break;elseHzLevel=4; break;case 4:TIM3-ARR=(6-1); /3us中断频率 kHz6.7k- 11kif(Get_AD0(6)Flag_OK=1; HzLevel=4; break;elseHzLevel=5; break;case 5:TIM3-ARR=(7-1);
55、 /3.5us 中断频率 100kHz5.7k-9.4kif(Get_AD0(7)Flag_OK=1; HzLevel=5;break;elseHzLevel=6;break;case 6:TIM3-ARR=(8-1); /4us中断频率 100kHz5k-8.2kif(Get_AD0(8)Flag_OK=1; HzLevel=6; break;elseHzLevel=7; break;case 7:TIM3-ARR=(9-1); /4.5us中断频率 100kHz4.5k-7.3kif(Get_AD0(9)Flag_OK=1; HzLevel=7; break;elseHzLevel=8;
56、break;case 8:TIM3-ARR=(10-1); /5us 中断频率 100kHz4k-6.6kif(Get_AD0(10)Flag_OK=1; HzLevel=8; break;elseHzLevel=9; break;case 9:TIM3-ARR=(15-1); /7.5us中断频率 100kHz2.7k-4.4kif(Get_AD0(15)Flag_OK=1; HzLevel=9; break;elseHzLevel=10; break;case 10:TIM3-ARR=(20-1); /10us中断频率 100kHz2k-3.3kif(Get_AD0(20)Flag_OK=
57、1; HzLevel=10; break;elseHzLevel=11;break;case 11:TIM3-ARR=(25-1); /12.5us中断频率 80kHz1.6k -2.7kif(Get_AD0(25)Flag_OK=1; HzLevel=11; break;elseHzLevel=27; break;case 27:TIM3-ARR=(30-1); /15us中断频率 10kHz1.4k-2.2kif(Get_AD0(30)Flag_OK=1; HzLevel=27; break;elseHzLevel=28; break;case 28:TIM3-ARR=(40-1); /2
58、0us中断频率 10kHz1k-1.6kif(Get_AD0(40)Flag_OK=1; HzLevel=28; break;elseHzLevel=12;break;case 12:TIM3-ARR=(50-1); /25us中断频率 10kHz0.8k-1.3kif(Get_AD0(50)Flag_OK=1; HzLevel=12; break;elseHzLevel=13; break;case 13:TIM3-ARR=(75-1); /37.5us中断频率 10kHz534-880if(Get_AD0(75)Flag_OK=1; HzLevel=13; break;elseHzLeve
59、l=14; break;case Hz200 :/case 14:TIM3-ARR=(100-1); /50us中断频率 10kHz400-660if(Get_AD0(100)Flag_OK=1;HzLevel=14;break;elseHzLevel=15;break;case 15:TIM3-ARR=(125-1); /62.5us中断频率 10kHz320-528if(Get_AD0(125)Flag_OK=1; HzLevel=15; break;elseHzLevel=16; break;case 16:TIM3-ARR=(150-1); /75us中断频率 10kHz267-440
60、if(Get_AD0(150)Flag_OK=1; HzLevel=16; break;elseHzLevel=17; break;case 17:TIM3-ARR=(175-1); /87.5us 中断频率 10kHz229-377if(Get_AD0(175)Flag_OK=1; HzLevel=17;break;elseHzLevel=18;break;/case Hz100 :case 18:TIM3-ARR=(200-1); /100us中断频率 5kHz200-330if(Get_AD0(200)Flag_OK=1; HzLevel=18; break;elseHzLevel=19
温馨提示
- 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年阿拉善职业技术学院单招职业适应性测试模拟试题及答案解析
- 2025年高二语文上学期期末复习之理解性默写二70道题汇编(含答案)
- 《化妆舞会》参考课件
- 360借款合同范本
- 2025高中物理学业水平考试知识点归纳总结(必修部分)
- 乳腺癌的常规护理
- 人教版六年级上册语文词语专项练习题及答案
- 《楚门的世界》电影赏析
- 刑法学智慧树知到答案2024年上海财经大学
- 密码学原理与实践第三版答案
- 美国黄石国家公园地质奇观与野生动物
- Python期末测试试卷(A卷)(解析版)
评论
0/150
提交评论