精华内容
下载资源
问答
  • 接收16位串口数据(高位在前),显示波形,可以配置采样频率和显示周期
  • stm32f407与串口屏结合显示波形
  • 通过STM8单片机串口输出三组数据,然后通过串口波形显示软件实时显示单片机输出的数据。这种方法可以在ADC数据采集的时候实时显示数据波形,方便调试。
  • 一、指针控件 1、注意z+数字开头的为指针控件 2、改变指针控件的val值可以改变指针的角度 二、曲线波形控件

    一、指针控件

    1、注意z+数字开头的为指针控件

    2、改变指针控件的val值可以改变指针的角度

     

    二、曲线波形控件

    1、注意s+数字开头的为指针控件

    2、使用add指令来向曲线波形控件添加数据

    add指令详情

    3、注意第二个参数是曲线控件的id号 

     

    曲线波形控件编程

    首先我们点击空白处,在前初始化事件中配置随机数产生的范围,范围是0到255,因为这个值是一个1字节的数据,1字节数据也就是0-255

    新建一个定时器,配置如下

    定时器中的代码如下

    点击调试,即可在调试页面看到波形

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 1、先将串口屏与上位机连接(串口连接,TX接RX ,RX接TX),打开上位机软件,新建工程,选择串口屏的型号和显示方向。然后点击左侧工具箱中的曲线/波形,调整s0的大小,选择你喜欢的配色。 然后就可以开始下载这个...

    USART串口通信在串口屏上输出正弦曲线

    硬件

    STM32F103C8T6核心板
    TJC3224T024_011串口屏

    软件

    上位机(电脑) USARTHMIsetup.exe

    流程

    1、先将串口屏与上位机连接(串口连接,TX接RX ,RX接TX),打开上位机软件,新建工程,选择串口屏的型号和显示方向。然后点击左侧工具箱中的曲线/波形,调整s0的大小,选择你喜欢的配色。
    在这里插入图片描述
    然后就可以开始下载这个曲线控件了在这里插入图片描述
    2、配置好串口屏之后,我们就可以给单片机写代码了。

    	1.首先要获得正弦曲线的 x,y数据
    
    	int n,y;
    	float k;
    	while(1){
    				
    				for(n=0;n<=9999999;n++)
    				{
    					k=sin(0.05*n);
    					y=40*k+120;
    					}
    

    乘0.05,以及乘40+120都是为了让正弦曲线在串口屏上更好看,你也可以根据你串口屏的尺寸适当的选择对正弦值进行处理。

     2. USART发送指令
    

    然后就可以根据串口屏提供的指令集,通过单片机的USART给串口屏发送指令了,注意指令必须是字符串类型,所以上面得到的y是int类型,所以我们需要调用或自己写一个int->string 的函数。以下是itoa函数,比较好用。

    void itoa(int num,char str[] )
    {
    int sign = num,i = 0,j = 0;
    char temp[11];
    if(sign<0)
    {
    	num = -num;
    }
    do
    {
    temp[i] = num%10+'0';       
    num/=10;
    i++;
    }while(num>0);
    if(sign<0)
    {
    temp[i++] = '-';
    }
    temp[i] = '\0';
    i--;
    while(i>=0)
    {
    str[j] = temp[i];
    j++;
    i--;
    }
    str[j] = '\0';
    }
    

    发送指令的主函数:

    int main(void)
    { 	int n,y,m;
    	float k;
    	char str1[10];
        USART_Config();
        DEBUG_USART_IRQHandler();
    	while(1){			
    		for(n=0;n<=9999999;n++)
    			{
    			k=sin(0.05*n);
    			y=40*k+120;
    			itoa(y,str1);
    			Usart_SendString(USART1,"add 1,0, ");
    			Usart_SendString(USART1,str1);
    			Usart_SendByte(USART1,0xff);
    			Usart_SendByte(USART1,0xff);
    			Usart_SendByte(USART1,0xff);	
    			delay_ms(10);
    			}
    

    其中 “add 1,0, ”是我们根据我们的曲线控件的ID和通道给出的。(串口屏上最多可以添加4个曲线控件,一个曲线控件上又可以同时存在多个曲线,所以会有ID和通道)。
    结尾跟了三个0xff 是每条指令的终止符。

    最后再把单片机USART的输出口连接到串口屏的RX,上电,就可以在串口屏上看到完美的发光曲线了.

    最后再贴上USART初始化函数和SendByte函数。

    void USART_Config(void)
     {
     GPIO_InitTypeDef GPIO_InitStructure;
     USART_InitTypeDef USART_InitStructure;
    
     RCC_APB2PeriphClockCmd((RCC_APB2Periph_GPIOA), ENABLE);
    
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOA, &GPIO_InitStructure);
    
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
     GPIO_Init(GPIOA, &GPIO_InitStructure);
    
     USART_InitStructure.USART_BaudRate = 9600;
    
     USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    
     USART_InitStructure.USART_StopBits = USART_StopBits_1;
    
     USART_InitStructure.USART_Parity = USART_Parity_No ;
    
     USART_InitStructure.USART_HardwareFlowControl =
     USART_HardwareFlowControl_None;
    
     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    
     USART_Init(USART1, &USART_InitStructure);
    /*-------------------------------------------------------*/
     NVIC_Configuration();
    
     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
    
    /*-------------------------------------------------------*/
     USART_Cmd(USART1, ENABLE);
     }
    
    void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)
     {
    
     USART_SendData(pUSARTx,ch);
    
     while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
     }
    

    工程文件压缩包已上传,可免费下载!

    展开全文
  • 同时采集STM8单片机3个ADC通道的数据,通过串口将采集到的数据发送出去,并在串口助手上显示采集的数据波形
  • STM32实现串口通信和波形显示 1在keil中创建工程 2代码 ;RCC寄存器地址映像 RCC_BASE EQU 0x40021000 RCC_CR EQU (RCC_BASE + 0x00) RCC_CFGR EQU (RCC_BASE + 0x04) RCC_CIR EQU (RCC_BASE + 0x08) RCC_APB2RSTR ...

    STM32实现串口通信和波形显示

    1在keil中创建工程

    2代码

    ;RCC寄存器地址映像
    RCC_BASE EQU 0x40021000
    RCC_CR EQU (RCC_BASE + 0x00)
    RCC_CFGR EQU (RCC_BASE + 0x04)
    RCC_CIR EQU (RCC_BASE + 0x08)
    RCC_APB2RSTR EQU (RCC_BASE + 0x0C)
    RCC_APB1RSTR EQU (RCC_BASE + 0x10)
    RCC_AHBENR EQU (RCC_BASE + 0x14)
    RCC_APB2ENR EQU (RCC_BASE + 0x18)
    RCC_APB1ENR EQU (RCC_BASE + 0x1C)
    RCC_BDCR EQU (RCC_BASE + 0x20)
    RCC_CSR EQU (RCC_BASE + 0x24)

    ;AFIO寄存器地址映像
    AFIO_BASE EQU 0x40010000
    AFIO_EVCR EQU (AFIO_BASE + 0x00)
    AFIO_MAPR EQU (AFIO_BASE + 0x04)
    AFIO_EXTICR1 EQU (AFIO_BASE + 0x08)
    AFIO_EXTICR2 EQU (AFIO_BASE + 0x0C)
    AFIO_EXTICR3 EQU (AFIO_BASE + 0x10)
    AFIO_EXTICR4 EQU (AFIO_BASE + 0x14)

    ;GPIOA寄存器地址映像
    GPIOA_BASE EQU 0x40010800
    GPIOA_CRL EQU (GPIOA_BASE + 0x00)
    GPIOA_CRH EQU (GPIOA_BASE + 0x04)
    GPIOA_IDR EQU (GPIOA_BASE + 0x08)
    GPIOA_ODR EQU (GPIOA_BASE + 0x0C)
    GPIOA_BSRR EQU (GPIOA_BASE + 0x10)
    GPIOA_BRR EQU (GPIOA_BASE + 0x14)
    GPIOA_LCKR EQU (GPIOA_BASE + 0x18)

    ;GPIO C口控制
    GPIOC_BASE EQU 0x40011000
    GPIOC_CRL EQU (GPIOC_BASE + 0x00)
    GPIOC_CRH EQU (GPIOC_BASE + 0x04)
    GPIOC_IDR EQU (GPIOC_BASE + 0x08)
    GPIOC_ODR EQU (GPIOC_BASE + 0x0C)
    GPIOC_BSRR EQU (GPIOC_BASE + 0x10)
    GPIOC_BRR EQU (GPIOC_BASE + 0x14)
    GPIOC_LCKR EQU (GPIOC_BASE + 0x18)

    ;串口1控制
    USART1_BASE EQU 0x40013800
    USART1_SR EQU (USART1_BASE + 0x00)
    USART1_DR EQU (USART1_BASE + 0x04)
    USART1_BRR EQU (USART1_BASE + 0x08)
    USART1_CR1 EQU (USART1_BASE + 0x0c)
    USART1_CR2 EQU (USART1_BASE + 0x10)
    USART1_CR3 EQU (USART1_BASE + 0x14)
    USART1_GTPR EQU (USART1_BASE + 0x18)

    ;NVIC寄存器地址
    NVIC_BASE EQU 0xE000E000
    NVIC_SETEN EQU (NVIC_BASE + 0x0010)
    ;SETENA寄存器阵列的起始地址
    NVIC_IRQPRI EQU (NVIC_BASE + 0x0400)
    ;中断优先级寄存器阵列的起始地址
    NVIC_VECTTBL EQU (NVIC_BASE + 0x0D08)
    ;向量表偏移寄存器的地址
    NVIC_AIRCR EQU (NVIC_BASE + 0x0D0C)
    ;应用程序中断及复位控制寄存器的地址
    SETENA0 EQU 0xE000E100
    SETENA1 EQU 0xE000E104

    ;SysTick寄存器地址
    SysTick_BASE EQU 0xE000E010
    SYSTICKCSR EQU (SysTick_BASE + 0x00)
    SYSTICKRVR EQU (SysTick_BASE + 0x04)

    ;FLASH缓冲寄存器地址映像
    FLASH_ACR EQU 0x40022000

    ;SCB_BASE EQU (SCS_BASE + 0x0D00)

    MSP_TOP EQU 0x20005000
    ;主堆栈起始值
    PSP_TOP EQU 0x20004E00
    ;进程堆栈起始值

    BitAlias_BASE EQU 0x22000000
    ;位带别名区起始地址
    Flag1 EQU 0x20000200
    b_flas EQU (BitAlias_BASE + (0x20032) + (04))
    ;位地址
    b_05s EQU (BitAlias_BASE + (0x20032) + (14))
    ;位地址
    DlyI EQU 0x20000204
    DlyJ EQU 0x20000208
    DlyK EQU 0x2000020C
    SysTim EQU 0x20000210

    ;常数定义
    Bit0 EQU 0x00000001
    Bit1 EQU 0x00000002
    Bit2 EQU 0x00000004
    Bit3 EQU 0x00000008
    Bit4 EQU 0x00000010
    Bit5 EQU 0x00000020
    Bit6 EQU 0x00000040
    Bit7 EQU 0x00000080
    Bit8 EQU 0x00000100
    Bit9 EQU 0x00000200
    Bit10 EQU 0x00000400
    Bit11 EQU 0x00000800
    Bit12 EQU 0x00001000
    Bit13 EQU 0x00002000
    Bit14 EQU 0x00004000
    Bit15 EQU 0x00008000
    Bit16 EQU 0x00010000
    Bit17 EQU 0x00020000
    Bit18 EQU 0x00040000
    Bit19 EQU 0x00080000
    Bit20 EQU 0x00100000
    Bit21 EQU 0x00200000
    Bit22 EQU 0x00400000
    Bit23 EQU 0x00800000
    Bit24 EQU 0x01000000
    Bit25 EQU 0x02000000
    Bit26 EQU 0x04000000
    Bit27 EQU 0x08000000
    Bit28 EQU 0x10000000
    Bit29 EQU 0x20000000
    Bit30 EQU 0x40000000
    Bit31 EQU 0x80000000

    ;向量表
    AREA RESET, DATA, READONLY
    DCD MSP_TOP ;初始化主堆栈
    DCD Start ;复位向量
    DCD NMI_Handler ;NMI Handler
    DCD HardFault_Handler ;Hard Fault Handler
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD 0
    DCD SysTick_Handler ;SysTick Handler
    SPACE 20 ;预留空间20字节


    ;代码段
    ​ AREA |.text|, CODE, READONLY
    ​ ;主程序开始
    ​ ENTRY
    ​ ;指示程序从这里开始执行
    Start
    ​ ;时钟系统设置
    ​ ldr r0, =RCC_CR
    ​ ldr r1, [r0]
    ​ orr r1, #Bit16
    ​ str r1, [r0]
    ​ ;开启外部晶振使能
    ​ ;启动外部8M晶振

    ClkOk
    ​ ldr r1, [r0]
    ​ ands r1, #Bit17
    ​ beq ClkOk
    ​ ;等待外部晶振就绪
    ​ ldr r1,[r0]
    ​ orr r1,#Bit17
    ​ str r1,[r0]
    ​ ;FLASH缓冲器
    ​ ldr r0, =FLASH_ACR
    ​ mov r1, #0x00000032
    ​ str r1, [r0]

    ;设置PLL锁相环倍率为7,HSE输入不分频
    ldr r0, =RCC_CFGR
    ldr r1, [r0]
    orr r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14)
    orr r1, #Bit10
    str r1, [r0]
    ;启动PLL锁相环
    ldr r0, =RCC_CR
    ldr r1, [r0]
    orr r1, #Bit24
    str r1, [r0]
    PllOk
    ldr r1, [r0]
    ands r1, #Bit25
    beq PllOk
    ;选择PLL时钟作为系统时钟
    ldr r0, =RCC_CFGR
    ldr r1, [r0]
    orr r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14)
    orr r1, #Bit10
    orr r1, #Bit1
    str r1, [r0]
    ;其它RCC相关设置
    ldr r0, =RCC_APB2ENR
    mov r1, #(Bit14 :OR: Bit4 :OR: Bit2)
    str r1, [r0]

    ;IO端口设置 
    ldr    r0, =GPIOC_CRL 
    ldr    r1, [r0] 
    orr    r1, #(Bit28 :OR: Bit29)          
    ;PC.7输出模式,最大速度50MHz  
    and    r1, #(~Bit30 & ~Bit31)   
    ;PC.7通用推挽输出模式 
    str    r1, [r0] 
            
    ;PA9串口0发射脚 
    ldr    r0, =GPIOA_CRH 
    ldr    r1, [r0] 
    orr    r1, #(Bit4 :OR: Bit5)          
    ;PA.9输出模式,最大速度50MHz  
    orr    r1, #Bit7 
    and    r1, #~Bit6 
    ;10:复用功能推挽输出模式 
    str    r1, [r0]    
    
    
    ldr    r0, =USART1_BRR   
    mov    r1, #0x271 
    str    r1, [r0] 
    ;配置波特率-> 115200 
                   
    ldr    r0, =USART1_CR1   
    mov    r1, #0x200c 
    str    r1, [r0] 
    ;USART模块总使能 发送与接收使能 
    ;71 02 00 00   2c 20 00 00 
             
    ;AFIO 参数设置             
    ;Systick 参数设置 
    ldr    r0, =SYSTICKRVR           
    ;Systick装初值 
    mov    r1, #9000 
    str    r1, [r0] 
    ldr    r0, =SYSTICKCSR           
    ;设定,启动Systick 
    mov    r1, #0x03 
    str    r1, [r0] 
            
    ;NVIC                     
    ;ldr   r0, =SETENA0 
    ;mov   r1, 0x00800000 
    ;str   r1, [r0] 
    ;ldr   r0, =SETENA1 
    ;mov   r1, #0x00000100 
    ;str   r1, [r0] 
              
    ;切换成用户级线程序模式 
    ldr    r0, =PSP_TOP                   
    ;初始化线程堆栈 
    msr    psp, r0 
    mov    r0, #3 
    msr    control, r0 
              
    ;初始化SRAM寄存器 
    mov    r1, #0 
    ldr    r0, =Flag1 
    str    r1, [r0] 
    ldr    r0, =DlyI 
    str    r1, [r0] 
    ldr    r0, =DlyJ 
    str    r1, [r0] 
    ldr    r0, =DlyK 
    str    r1, [r0] 
    ldr    r0, =SysTim 
    str    r1, [r0] 
    

    ;主循环
    main
    ldr r0, =Flag1
    ldr r1, [r0]
    tst r1, #Bit1
    ;SysTick产生0.5s,置位bit 1
    beq main ;0.5s标志还没有置位

    ;0.5s标志已经置位 
    ldr    r0, =b_05s                
    ;位带操作清零0.5s标志 
    mov    r1, #0 
    str    r1, [r0] 
    bl     LedFlas 
    
    
    mov    r0, #'H' 
    bl     send_a_char
    
    mov    r0, #'e' 
    bl     send_a_char
    
    mov    r0, #'l' 
    bl     send_a_char
    
    mov    r0, #'l' 
    bl     send_a_char
    
    mov    r0, #'o' 
    bl     send_a_char
    
    mov    r0, #' ' 
    bl     send_a_char
    
    mov    r0, #'w' 
    bl     send_a_char
    
    mov    r0, #'i' 
    bl     send_a_char
    
    mov    r0, #'n' 
    bl     send_a_char
    
    mov    r0, #'d' 
    bl     send_a_char
    
    mov    r0, #'o' 
    bl     send_a_char
    
    mov    r0, #'w' 
    bl     send_a_char
    
    mov    r0, #'s' 
    bl     send_a_char
    
    mov    r0, #'\n' 
    bl     send_a_char
    
    b      main
    



    ;子程序 串口1发送一个字符
    send_a_char
    ​ push {r0 - r3}
    ​ ldr r2, =USART1_DR
    ​ str r0, [r2]
    b1
    ​ ldr r2, =USART1_SR
    ​ ldr r2, [r2]
    ​ tst r2, #0x40
    ​ beq b1
    ​ ;发送完成(Transmission complete)等待
    ​ pop {r0 - r3}
    ​ bx lr


    ;子程序 led闪烁
    LedFlas
    ​ push {r0 - r3}
    ​ ldr r0, =Flag1
    ​ ldr r1, [r0]
    ​ tst r1, #Bit0
    ​ ;bit0 闪烁标志位
    ​ beq ONLED ;为0 打开led灯
    ​ ;为1 关闭led灯
    ​ ldr r0, =b_flas
    ​ mov r1, #0
    ​ str r1, [r0]
    ​ ;闪烁标志位置为0,下一状态为打开灯
    ​ ;PC.7输出0
    ​ ldr r0, =GPIOC_BRR
    ​ ldr r1, [r0]
    ​ orr r1, #Bit7
    ​ str r1, [r0]
    ​ b LedEx
    ONLED
    ​ ;为0 打开led灯
    ​ ldr r0, =b_flas
    ​ mov r1, #1
    ​ str r1, [r0]
    ​ ;闪烁标志位置为1,下一状态为关闭灯
    ​ ;PC.7输出1
    ​ ldr r0, =GPIOC_BSRR
    ​ ldr r1, [r0]
    ​ orr r1, #Bit7
    ​ str r1, [r0]
    LedEx
    ​ pop {r0 - r3}
    ​ bx lr

    ;异常程序
    NMI_Handler
    ​ bx lr

    HardFault_Handler
    bx lr

    SysTick_Handler
    ldr r0, =SysTim
    ldr r1, [r0]
    add r1, #1
    str r1, [r0]
    cmp r1, #500
    bcc TickExit
    mov r1, #0
    str r1, [r0]
    ldr r0, =b_05s
    ;大于等于500次 清零时钟滴答计数器 设置0.5s标志位
    ;位带操作置1
    mov r1, #1
    str r1, [r0]
    TickExit
    bx lr

    ALIGN            
    ;通过用零或空指令NOP填充,来使当前位置与一个指定的边界对齐 
    END
    

    3将代码烧录进芯片中,实现结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DIjxcvoG-1635489572498)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211029143203534.png)]

    4在keil中查看波形

    代码为HAL库生成的代码led灯点亮点灭

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aojNSsRd-1635489572500)(C:\Users\无\AppData\Roaming\Typora\typora-user-images\image-20211029142258252.png)]

    由图可知道周期为3s,波形反映正确

    5总结

    本次实验对stm32的串口通信有了一定了解

    展开全文
  • 串口波形显示

    热门讨论 2011-11-20 22:58:02
    串口波形显示 3.0 希望对大家有帮助
  • 串口采集数据显示波形,显示频率,幅度,绝对的好
  • serif'] = ['SimHei'] #显示中文 mpl.rcParams['axes.unicode_minus']=False #显示负号 try: #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等 portx="COM6" #波特率,标准值之一:50,75,110,...

    1. Python3.7 代码

    #-*- coding: utf-8 -*-
     
    import serial
    import matplotlib.pyplot as plt
    import numpy as np
    import time
    import re
    import pdb
    import datetime
    import time
    from scipy.fftpack import fft,ifft
    from matplotlib.pylab import mpl
    
    mpl.rcParams['font.sans-serif'] = ['SimHei']   #显示中文
    mpl.rcParams['axes.unicode_minus']=False       #显示负号
    
    try:
    
    	#端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
    	portx="COM6"
    	#波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
    	bps=115200    #14400
    	#超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
    	timex=0.5
    	# 打开串口,并得到串口对象
    	serialport=serial.Serial(portx,bps,timeout=timex)
    	if serialport.isOpen():
    		print("open success")
    		print("串口详情参数:", serialport)
    		print(serialport.port)#获取到当前打开的串口名
    		print(serialport.baudrate)#获取波特率
    		#serialport.close()
    	else:
    		print("open failed")
    
    
        
    	plt.ion()	# interactive mode
    	fig = plt.figure(1)
    
    	t = [0]
    	y = [0]
    	f = [0]
    
    	Fs = 10000              #ADC采样频率
    	N = 1024        	#采样点数
    	BYTES_NUM = N * 2        #数据字节数
    
    	xmin1 = 0
    	xmax1 = 1200
    	ymin1 = 0
    	ymax1 = 4200      
    	plt.subplot(2,1,1)       
    	plt.xlabel('t')
    	plt.ylabel('AD')
    	plt.xlim(xmin1, xmax1)                 
    	plt.ylim(ymin1, ymax1)
    	plt.grid(True) # 添加网格
    		
    	xmin2 = -100
    	xmax2 = Fs / 2 + 10
    	ymin2 = 0
    	ymax2 = 200      
    	ax2 = plt.subplot(2,1,2)
    	plt.xlabel('Freq/Hz')
    	plt.ylabel('单边振幅谱(归一化)')
    	plt.xlim(xmin2, xmax2)                 
    	plt.ylim(ymin2, ymax2)
    	plt.grid(True) # 添加网格
    
    	count = 0
    	while True:
    		count = serialport.inWaiting()
    		if count == BYTES_NUM:
    			i = 0
    			#1 处理数据
    			while count > 0:
    				data = serialport.read(2)               #读2个字节,AD为16bit
    				data16 = int.from_bytes(data, byteorder='big', signed = False)
    				if count == BYTES_NUM:
    					i = 0
    					t = [0]
    					y = [data16]
    				else:								
    					t.append(i)
    					y.append(data16)
    				i = i+1
    				count = count - 2
    
    			
    			plt.subplot(2,1,1)       
    			plt.cla()
    			plt.xlabel('t')
    			plt.ylabel('AD')
    			plt.xlim(xmin1, xmax1)                 
    			plt.ylim(ymin1, ymax1)
    			plt.grid(True) # 添加网格
    			plt.plot(t, y, '-g')
    			print(len(y))
    			print(y[0],y[1],y[2],y[N-3],y[N-2],y[N-1])
    
    			#2 FFT处理
    			fft_y=fft(y)                          #快速傅里叶变换
    			abs_y=np.abs(fft_y)                # 取复数的绝对值,即复数的模(双边频谱)
    			normalization_y=abs_y/N            #归一化处理(双边频谱)                              
    			normalization_half_y = normalization_y[range(int(N/2))]      #由于对称性,只取一半区间(单边频谱)
    			k = np.arange(N)
    			fx = k * Fs / N
    			half_fx = fx[range(int(N/2))]
    			print(len(abs_y))
    			print(abs_y[0],abs_y[1],abs_y[2],abs_y[N-3],abs_y[N-2],abs_y[N-1])
    			
    			plt.subplot(2,1,2)
    			plt.cla()
    			plt.xlabel('Freq/Hz')
    			plt.ylabel('单边振幅谱(归一化)')
    			plt.xlim(xmin2, xmax2)                 
    			plt.ylim(ymin2, ymax2)
    			plt.grid(True) # 添加网格
    			plt.plot(half_fx,normalization_half_y,'-c')
    
    				
    			#plt.draw()
    			plt.show()
    			#t1 = datetime.datetime.now()
    			plt.pause(0.001)                                #0.001  实际延时0.1s,
    			#t2 = datetime.datetime.now()
    			#print(i,t2-t0)
    			#time.sleep(3)
           
    except Exception as e:
    	print("---异常---:",e)
    
    1. 仿真图
      在这里插入图片描述
    展开全文
  • 上一博文中讲解了使用历史曲线控件显示如温度、压力类的缓变信号曲线,那么对于频率稍高的如电网电压正弦信号、锯齿波等,使用曲线控件比较合适,二者相差一个字,其实使用起来基本也相差不大。 1 曲线控件属性 ...
  • 迪文串口屏编程软件,串口屏在工业控制显示中使用的非常多,偶然的寄回接触到了,小的项目很好用,串口数据传输,支持波形绘图。对实时性要求不是很高的推荐使用。
  • usart hmi + 串口屏显示

    千次阅读 2019-08-02 14:37:23
    准备国赛,这两天学了下陶晶驰串口屏。 开始两天有点迷糊,官方资料也没有好好看完,就毫无章法吧,静下心来把官方文档看了,就基本上完成了工作,做了个简单速度仪表盘,虽然还不算完美,至少也算入门了。 【官方...
  • 1) 通过实验掌握 CC2530 芯片串口配置与使用 2) 集到内部温度传感器信息通过串口发送到上位机
  • 开源一款基于Qt的串口波形显示上位机 & 以“笔”会友写在前面简要介绍基本界面功能简介开源地址最后的说明 写在前面 大家好!我是大学里一枚菜鸡在读本科生。这是我第一次在CSDN上发博客,我想开源一个我近几日...
  • LABVIEW串口(包括波形显示效果),该工具使用LABVIEW做的串口显示,充分利用了LABVIEW强大的图形显示功能,可以将串口发来的数据在波形图上进行显示
  • 实际开发中,像采集一些缓变信号,如温度、压力等,需要显示其在一段时间内的数据曲线变化情况,这个时候使用历史曲线控制是比较合适的,对于采集一些快速变化信号,后面会讲解曲线控件,此处,我们先看下历史曲线...
  • LabVIEW实现接受串口数据并绘制波形的上位机

    千次阅读 多人点赞 2019-10-29 22:57:18
    最近学LabVIEW的时候,用LabVIEW搭建了一个可以接受串口数据并显示波形的上位机,在这里分享一下。 有需要的朋友可以在下面这个链接下载: 『上位机链接』 串口连接到电脑上后,会在设备中显示出来 『设备图』 我们...
  • 5V的串口屏,5英寸以下的小尺寸串口屏才能用USB口供电,7英寸的功耗大,用USB供电可能会导致串口屏闪烁或反反复复复位现象
  • STM32与串口屏交互(USART HMI)

    千次阅读 多人点赞 2021-08-05 18:44:11
    STM32与串口屏交互(USART HMI)一、前期准备二、串口屏上位机使用方法以及界面设计三、STM...串口屏可作为输出设备(显示)以及输入设备(按键),开发难度小,操作简单,软件要求低且拥有专门的上位机辅助开发。 一、
  • 基于STM32F103+ADS1292的心率实时显示串口助手),心电图波形(需要用到匿名上位机),采样频率为500hz,可实时显示心率。源代码有大量注解,通俗易懂.
  • STM32实战十 USART串口波形

    千次阅读 2019-10-14 16:38:50
    开始用示波器查看USART串口波形(直接测量IO口),不容易搞清楚其意义,反复研究,了解一二,总结如下: 由上图看出,无信号是高电平,发送三个字节,0x09 0x02 0x00,每个字节1帧,每帧由三部份组成: 1、一个低...
  • 基于stm32的串口屏教程。用过的人都说好,哈哈哈,减少了我们很多不太必要的麻烦步骤。 程序资料包CSDN下载地址:https://download.csdn.net/download/qq_38351824/12111050 微信公众号下载地址:①关注Tech云 ②...
  • 本篇博客记录使用串口屏的一些注意事项,我使用的是陶晶驰家的串口屏 常用指令 page x:切换到页面x 常用系统变量 baud:当前波特率值(修改后掉电丢失) bauds:掉电后保存,下次上电后继续有效 bkcmd:设置串口...
  • 基于fpga的4.3寸tft显示字符,使用vivado2017.4版本打开
  • 处理完成后将信号通过与STM32串口连接的蓝牙模块传输到上位机中,同时信号波形显示在与STM32连接的OLED显示模块上并计算出此时人体的心率数据,当上位机接收到信号后对信号进行SG平滑滤波,最终处理完的信号可以通过...
  • 上篇文章介绍了串口的设置,以下介绍初步画图。 前言 感觉绘图才是QT等面向对象编程的最好特例。做完之后能感觉到这点是和在单片机或者ARM上逻辑编程最大的区别。 绘图步骤: (1)采用QT自带chart函数绘图。...
  • 我们最终的目的是将整个系统(如电机伺服控制系统)中的某些参数(来自系统的其他模块的数据)传递给串口模块,由串口模块进行数据整合(整合成特殊格式,HMI的指令格式所要求的),然后再发送至HMI进行数据的显示,...
  • 通过串口调试助手设定电压值(十六进制),用ADC采集显示串口助手上
  • Tiva单片机——简易示波器(UART串口屏)一、整体介绍二、代码的分段解读1、头函数2、宏定义及变量定义3、外设初始化4、波形触发设计5、电压标定设计6、频率测定(最高到达1MHz)7、界面设计(UART串口屏)7.1、开机...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,180
精华内容 472
关键字:

串口屏显示波形