最近由于要參加電子設計大賽,想拿點東西練練手,隨便玩玩,花了一天時間做個帆板控制系統,雖然做的一般,但也是個經驗,有興趣的可以看看,有程序,仿真,實物圖都在此,全套資料可下載參考:
P70724-112723.jpg (4.37 MB, 下載次數: 129)
下載附件
2017-7-24 11:30 上傳
P70724-112957.jpg (4.1 MB, 下載次數: 88)
下載附件
2017-7-24 11:30 上傳
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
QQ截圖20170724113157.png (37.04 KB, 下載次數: 148)
下載附件
2017-7-24 11:32 上傳
下面是一個帆板的參考論文:
0.png (269.79 KB, 下載次數: 111)
下載附件
2017-7-24 17:01 上傳
0.png (43.72 KB, 下載次數: 116)
下載附件
2017-7-24 17:00 上傳
單片機源程序如下:
- #include"main.h"
- uint V_0832 =0,key_value;
- uint i=0,angle_test=48,angle=48;
- uint tab[4]={0}; //定義數組,以保存設置角度值
- /***************電機相關定義**********************/
- sbit en1=P3^7; /* L298的Input 1 */
- sbit s1=P3^5; /* L298的Input 1 */
- sbit s2=P3^6; /* L298的Input 2 */
- uchar t=0; /* 中斷計數器 */
- uchar m1=90; /* 電機1速度值 */
- uchar tmp1; /* 電機當前速度值 */
- /***************電機結束*********************/
- void Init_interrupt()
- {
- TMOD=0x12; /* 設定T0的工作模式為2 */
- TH0=0x9B; /* 裝入定時器的初值155 0.1ms*/
- TL0=0x9B;
- TH1=(65536-155)/256;
- TL1=(65536-155)%256;
- EA=1; /* 開中斷 */
- ET1=1;
- ET0=1; /* 定時器0允許中斷 */
- TR0=1; /* 啟動定時器0 */
- TR1=1;
- }
- void main()
- {
- Init_interrupt();
- init_1602();
- s1=1; //電機設置
- s2=0;
- while(1)
- {
- // V_0832 = (uint)(ad0832read(1,0)*1.3);
- V_0832 = (uint)(Get_AD_Result()*1.41);
- write_sfm3(1,10,V_0832);
- key_value=key16();
- if(key_value < 10) //如果輸入的鍵值是數字鍵
- {
- tab[i]=key_value;
- angle_test=angle_test*10+tab[i];
- i++; //每輸入一位密碼,位數自增1.
- if(i == 4) //密碼輸入位數控制在6位
- {
- i = 0;
- angle_test=0;
- }
- }
- angle=angle_test;
- write_sfm3(2,10,angle);
-
- }
- }
- void timer0() interrupt 1 /* T0中斷服務程序 0.1ms一次中斷*/
- {
- if(t==0) /* 1個PWM周期完成后才會接受新數值 */
- {
- tmp1=m1;
- }
- if(t<tmp1) en1=1; else en1=0; /* 產生電機1的PWM信號 */
- t++;
- if(t>=100) t=0; /* 1個PWM信號由100次中斷產生 100HZ */
- }
- void timer1() interrupt 3 /* T0中斷服務程序 0.1ms一次中斷*/
- {
- TH1=(65536-155)/256;
- TL1=(65536-155)%256;
- if(V_0832<angle-2)
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
電賽測試.zip
(1.56 MB, 下載次數: 112)
2017-7-24 11:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|