solidworks工程文件分享:
单片机源程序如下:
- //////////////////////////////智成工作室出品////////////////////////////////
- #include <STC12C5A60S2.H>
- #include "intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- #define XIAO 65186 //这里定义定时器的
- #define DA XIAO-2000 //两个极限值的
- uint jd=1000; //转到的角度可以从100到2000,100以下电机就转不到位置了,有烧电机的风险。
- uchar jishu=0; //计数
- sbit duoji = P1^2; //接舵机的
- void Timer0Init(void)
- {
- uchar j=0;
- AUXR &= 0x7F; //定时器时钟12T模式
- TMOD &= 0xF0; //设置定时器模式
- TMOD |= 0x01; //设置定时器模式
- j=XIAO-jd;
- TL0 = j; //设置定时初值
- TH0 = j>>8; //设置定时初值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- ET0 = 1;
- }
- void Timer0Interrupt(void) interrupt 1
- {
- uint j=0;
- j=XIAO-jd;//高电平的时间
- if(duoji==0) //低电平的时候就把他设成高,且把定时器初值设成高电平的时间
- {
- TL0 = j; //设置定时初值
- TH0 = j>>8; //设置定时初值
- duoji=1;
- }else
- { //高电平的时候就把他设成低,且把定时器初值设成低电平的时间
- j=65536-j; //低电平的时间
- TL0 = j; //设置定时初值
- TH0 = j>>8; //设置定时初值
- duoji=0;
- }
- }
- void Delay100ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- i = 5;
- j = 52;
- k = 195;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void Delay500ms()
- {
- uchar i=0;
- for(i=0;i<5;i++)
- {
- Delay100ms();
- }
- }
- void Delay2s()
- {
- uchar i=0;
- for(i=0;i<20;i++)
- {
- Delay100ms();
- }
- }
- void main(void)
- {
- while(1)
- {
- jd=100; //在主程序中只要改变这个变量就可以控制舵机转到指定位置
- Delay2s(); //程序中尽量不要用延时,我这是为了演示
- jd=1900;
- Delay2s(); //程序中尽量不要用延时,我这是为了演示
- }
-
- }
复制代码
所有资料51hei提供下载:
机械手快换机构模块设计.zip
(6.57 MB, 下载次数: 12)
|