這是我做的一個追蹤系統(tǒng)
包含兩部分測量顯示部分和電機驅動部分
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
用proteus畫的仿真原理圖,還有仿真結果。
八位開關模擬八位二進制編碼盤角度精度360/2^8=1.40625度
顯示電路選用數(shù)碼管動態(tài)掃描顯示,顯示角度-180~+180度
000000000000000000000000000000000
電機驅動用于接收單片機正負旋轉信號,驅動電機正反轉
單片機源程序如下:
- #include "reg51.h"
- sbit M1=P2^6;
- sbit M2=P2^7;
- sbit P20=P2^0;
- sbit P21=P2^1;
- sbit P22=P2^2;
- sbit P23=P2^3;
- sbit P24=P2^4;
- unsigned int table[10]={
- 0xC0, //"0"
- 0xF9, //"1"
- 0xA4, //"2"
- 0xB0, //"3"
- 0x99, //"4"
- 0x92, //"5"
- 0x82, //"6"
- 0xF8, //"7"
- 0x80, //"8"
- 0x90, //"9"
- };
- float Angle,jiaodu;
- void Sys_Init() //端口初始電平
- {
- P0=0XFF;
- P1=0XFF;
- P2=0Xe0;
- }
- float Read_Data() //從P1口讀四位二進制碼,轉化為角度值
- {
- unsigned int y=0;
- float x=0.0;
- y=0XFF^P1;
- x=y*1.4;
- return x;
- }
- void Delay10ms() //延時函數(shù)
- {
- unsigned char i, j;
- i = 20;
- j = 113;
- do
- {
- while (--j);
- } while (--i);
- }
- void Display() //顯示函數(shù)
- {
- unsigned int i;
- unsigned B,C,D,E;
- // A=Angle/1000; //千位
- if(jiaodu>180)
- Angle=360.0-jiaodu;
- else Angle=jiaodu;
- B=(((int)Angle)%1000)/100; //百位
- C=((int)Angle)%100/10; //十位
- D=((int)Angle)%10; //個位
- E=((int)(jiaodu*10))%10; //十分位
- for(i=0;i<5;i++)
- {
- switch(i)
- {
- case 0:
- P20=1; //位選端打開
- if(jiaodu>180)
- P0=0xBF; //向P0口輸數(shù)據(jù)
- else P0=0xC0;
- Delay10ms(); //延時
- P20=0; //位選端關閉
- break;
- case 1:
- P21=1;
- P0=table[B];
- Delay10ms();
- P21=0;
- break;
- case 2:
- P22=1;
- P0=table[C];
- Delay10ms();
- P22=0;
- break;
- case 3:
- P23=1;
- P0=table[D];
- Delay10ms();
- P23=0;
- break;
- case 4:
- P24=1;
- P0=table[E];
- Delay10ms();
- P24=0;
- break;
- default:
- break;
- }
- }
- }
- void Motor_Ctrl() //步進電機脈沖
- {
- if(jiaodu<=180) //角度小于180度P26輸出一個脈沖
- {
- M1=0;
- M2=1;
- Delay10ms();
- M1=1;
- }
- else if(jiaodu>180) //角度大于180度P27輸出脈沖
- {
- M1=1;
- M2=0;
- Delay10ms();
- M2=1;
- }
- else
- {
- M1=1;
- M2=1;
- }
- }
- void main() //主函數(shù)
- {
- Sys_Init();
- while(1)
- {
- jiaodu=Read_Data();
- Motor_Ctrl();
- Display();
- }
- }
復制代碼
全部資料51hei下載地址:
課程設計.zip
(30.2 KB, 下載次數(shù): 96)
2019-4-8 15:01 上傳
點擊文件名下載附件
|