STC89C52RC型號的51單片機中觸摸開關控制9g舵機,親測可用,有疑問可以找我呦
制作出來的實物圖如下:
實物圖
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
演示程序圖
單片機源程序如下:
- #include<reg52.h>
- #define unchar unsigned char
- unsigned char count; //0.5ms次數標識
- unsigned char jd=0;
- sbit pwm1 = P1^0;
- unsigned char flag=1;
- unsigned char flag1=1;
- sbit key1=P2^0;
- void Time0_Init() //定時器初始化
- {
- TMOD = 0x01; //定時器0工作在方式1
- TH0 = (65535-500)/256;
- TL0 = (65535-500)%256; //12MZ晶振,0.5ms
- EA=1; //總中斷打開
- ET0=1; //定時器中斷打開
- TR0=1; //定時器開關打開
- }
- void Time0_Int() interrupt 1
- {
- static int t=0;
- t++;
- TH0 = (65535-500)/256; //重新賦值
- TL0 = (65535-500)%256;
- if(count< jd) //判斷0.5ms次數是否小于角度標識
- {
- pwm1=1; //確實小于,PWM輸出高電平
- }
- else
- {
- pwm1=0; //大于則輸出低電平
- }
- count++; //0.5ms次數加1
- if(count>=40)
- count=0;
-
-
- }
- unsigned char count; //0.5ms次數標識
- void keyscan() //按鍵掃描
- {
- if(key1==0&&flag1)
- {
-
- flag=!flag;
- flag1=0;
- }else if(key1) flag1=1;
-
- }
- void main()
- {
-
- count=0;
- Time0_Init();
- while(1)
- {
- keyscan();
- if(flag)
- {
- jd=4;
-
- }
- else
- jd=1;
- }
- }
復制代碼
hex文件下載(uv2版本的工程):
51單片機控制舵機.zip
(3.9 MB, 下載次數: 20)
2022-2-11 14:01 上傳
點擊文件名下載附件
|