基于STM32双机串口交互

该实验使用KEIL5和Proteus8.12进行32位单片机间的串口通信仿真,模拟车机主控与驱动板数据交换。通过按键调整数据,模拟数值浮动,并在LCD1602上显示SOC百分比和行驶公里数。代码中实现串口初始化、按键操作及数据显示功能。
摘要由CSDN通过智能技术生成
  • 本次实验开发环境KEIL5,仿真环境Proteus 8.12版本,如有版本过低可能失败,主要实验内容两个32单片机进行交互数据传输,模拟车机主控与驱动板传感器发送数据,用按键手动调整数据,模拟数据浮动,并显示车机屏幕,实验器材,两块32单片机,按键,电源,电阻,led灯,LCD1602,虚拟串口,串口终端。仿真视频bandicam 2023 02 07 17 55 47 334_视频

int main(void)
{        
         vu8 key=0;  
        u8 t;
        u8 len;        
        u16 times=0;
  u16 SOC=100;
         u16 KM=300;
         u8 a,b,c;
         u8 d,e,f;
         
        Stm32_Clock_Init(9); //系统时钟设置
//        delay_init();                     //延时函数初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
        uart_init(9600);         //串口初始化为9600
        LED_Init();                           //初始化与LED连接的硬件接口
// KEY_Init();
         LCD1602_Init();
         LCD1602_ShowStr(2,0,"SOC                                 %",10);
         LCD1602_ShowStr(2,1,"Range     km",12);


        for(t=0;t<10;t++)
        {
                Array[t]=t;
        }


        while(1)
        {




if(USART_RX_BUF[0]==0x00)
{//加


                hxf_delay_s(2);
                LED5=!LED5;
                SOC+=1;
                KM+=3;
if(SOC>100){SOC=100;}
if(KM>300){KM=300;}
        a=SOC/100;
        b=SOC%100/10;
        c=SOC%10;
        LCD_ShowNum(7,0,a);        
        LCD_ShowNum(8,0,b);
        LCD_ShowNum(9,0,c);


        d=KM/100;
        e=KM%100/10;
        f=KM%10;
        LCD_ShowNum(9,1,d);        
        LCD_ShowNum(10,1,e);
        LCD_ShowNum(11,1,f);


hxf_delay_s(2);
                USART_SendData(USART1, 0x00);
hxf_delay_s(2);
                USART_SendData(USART1, 0x01);
hxf_delay_s(2);
                USART_SendData(USART1, 0x02);
hxf_delay_s(2);
                USART_SendData(USART1, 0x03);
hxf_delay_s(2);
                USART_SendData(USART1, 0xaa);
}
if(USART_RX_BUF[0]==0x02)
{//减
                hxf_delay_s(2);
                LED3=!LED3;
if(SOC>0){SOC-=1;}
if(KM>0){KM-=3;}
        a=SOC/100;
        b=SOC%100/10;
        c=SOC%10;
        LCD_ShowNum(7,0,a);        
        LCD_ShowNum(8,0,b);
        LCD_ShowNum(9,0,c);


        d=KM/100;
        e=KM%100/10;
        f=KM%10;
        LCD_ShowNum(9,1,d);        
        LCD_ShowNum(10,1,e);
        LCD_ShowNum(11,1,f);


hxf_delay_s(2);
                USART_SendData(USART1, 0x02);
hxf_delay_s(2);
                USART_SendData(USART1, 0x01);
hxf_delay_s(2);
                USART_SendData(USART1, 0x02);
hxf_delay_s(2);
                USART_SendData(USART1, 0x03);
hxf_delay_s(2);
                USART_SendData(USART1, 0xaa);
}

基于STM32双机串口交互仿真

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值