STC89C52RC型號的51單片機中觸摸開關控制9g舵機,親測可用,有疑問可以找我呦
制作出來的實物圖如下:
e7730b06c357de06f4e619689a40ed2.jpg (3.48 MB, 下載次數: 29)
下載附件
實物圖
2022-2-11 13:53 上傳
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
f5e81dd5f759e758d5a34a83176c0ae.png (513.52 KB, 下載次數: 33)
下載附件
演示程序圖
2022-2-11 13:58 上傳
單片機源程序如下:
- #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;
- }
- }
復制代碼
51hei.png (6.32 KB, 下載次數: 31)
下載附件
2022-2-11 21:27 上傳
hex文件下載(uv2版本的工程):
51單片機控制舵機.zip
(3.9 MB, 下載次數: 20)
2022-2-11 14:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|