熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2021-5-16 19:30
正文摘要:單片機(jī)源程序如下: #include <reg52.h> #define uchar unsigned char #define uint unsigned int void displaym(); sbit en=P2^5; // ... |
|
本帖最后由 名字不是重點(diǎn) 于 2021-5-17 10:39 編輯 1: zheng=1; //初始化電機(jī)正轉(zhuǎn)動(dòng) fan=0; 這2 個(gè)互斥,可以只設(shè)一個(gè)就行了。 2: write_data(zhuansu%10000%1000%100%10+0x30); 這個(gè)可以優(yōu)化為: write_data(zhuansu%10+0x30); 相同的還有 write_data(zhuansu%10000%1000%100/10+0x30)==>write_data(zhuansu%100/10+0x30) 。 等等 連續(xù)取模的,可只取最后一個(gè)。 3: void int2()interrupt 1 中不要做display(); 建議做法是if(flag==200)插入一個(gè)標(biāo)志update,在main()的while(1)中判斷update,再?zèng)Q定是否刷顯轉(zhuǎn)速。 4: 按鍵掃描都是P1口,建議一次讀入P1的值,再用switch來做分支處理。 認(rèn)真找找,應(yīng)該還有很多地方能做優(yōu)化的。 |
glinfei 發(fā)表于 2021-5-17 09:00 按你的電路圖和代碼,zhuansu這個(gè)變量是計(jì)數(shù)輪子轉(zhuǎn)了多少圈,這個(gè)值*6.28*輪子半徑就近似小車移動(dòng)的距離 |
suit8515 發(fā)表于 2021-5-16 20:48 zhuansu這個(gè)變量保存的僅僅是計(jì)數(shù),不能直接知道轉(zhuǎn)數(shù),要計(jì)算一段時(shí)間的zhuansu變量的差值,推算轉(zhuǎn)數(shù), |
suit8515 發(fā)表于 2021-5-16 20:48 這是全局變量,在哪都可以調(diào)用。多學(xué)習(xí)下,否則到哪都是問題,都要問人,次數(shù)多了,人家就不愿意了。 |
hhdsdy 發(fā)表于 2021-5-16 20:20 那我如果想要在主函數(shù)的while循環(huán)中調(diào)用zhuansu該怎么調(diào)用啊,我直接在里面用zhaunsu表示不行 ![]() |
懶惰不看程序![]() 。程序已注明:外部中斷1脈沖計(jì)數(shù)記錄電機(jī)的轉(zhuǎn)速 電機(jī)轉(zhuǎn)一圈zhuansu加1 |
| 基礎(chǔ)太差,電路圖顯示霍爾接在P3.3引腳,而P3.3是INT1,對(duì)應(yīng)的就是第253行的void int1()interrupt 2 //外部中斷1脈沖技術(shù)記錄電機(jī)的轉(zhuǎn)速 電機(jī)轉(zhuǎn)一圈zhuansu加一 的整段程序 |
| 霍爾傳感器 是中斷輸入,中斷號(hào)是2,建議觀看 人人學(xué)會(huì)單片機(jī)的視頻教程 徹底學(xué)好STC單片機(jī)中斷 |
Powered by 單片機(jī)教程網(wǎng)