本次實驗開發環境KEIL5,仿真環境Proteus 8.12版本,如有版本過低可能失敗,主要實驗內容兩個32單片機進行交互數據傳輸,模擬車機主控與驅動板傳感器發送數據,用按鍵手動調整數據,模擬數據浮動,并顯示車機屏幕,實驗器材,兩塊32單片機,按鍵,電源,電阻,led燈,LCD1602,虛擬串口,串口終端。仿真視頻http://www.56.com/u43/v_MTgxOTkzNTM2.html
1.jpg (41.73 KB, 下載次數: 47)
下載附件
2023-2-7 22:42 上傳
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);
}
Proteus8.12仿真和程序:
stm32串口雙機模擬汽車電量里程.7z
(294.4 KB, 下載次數: 90)
2023-2-7 22:42 上傳
點擊文件名下載附件
仿真程序收發 下載積分: 黑幣 -5
|