完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用一下程序调试舵机的使用,其中P1.0-P1.4是数码管的位选,P0口是数码管的段选,P2.0是舵机的控制信号,P3.7和P3.6分别是角度加减的按键,但现在使用一下程序时,虽然舵机可以正常的旋转,但是转速很慢,而且数码管不停地闪烁,按键也没有发挥应有的作用,请大神指教#include
#define uint unsigned int #define uchar unsigned char uchar count,jd; ***it pwm=P2^0; ***it jia=P3^7; ***it jian=P3^6; uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x88,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=125;y>0;y--); } void timer0_init() { TMOD=0x01; IE=0x82; TH0=0xfe; TL0=0x33; TR0=1; } void timer0() interrupt 1 { TH0=0xfe; TL0=0x33; if(count pwm=1; } else pwm=0; count=(count+1); count=count%40; } void keyscan() { if(jia==0) { delay(10); if(jia==0) { jd++; count=0; if(jd==6) { jd=5; while(jia==0); } } } if(jian==0) { delay(10); if(jian==0) { jd--; count=0; if(jd==0) { jd=1; while(jian==0); } } } } void display() //数码管显示函数 { uchar bai,shi,ge; switch(jd) //根据角度标识显示相应的数值 { case 1: bai=0; shi=0; ge=0; break; case 2: bai=0; shi=4; ge=5; break; case 3: bai=0; shi=9; ge=0; break; case 4: bai=1; shi=3; ge=5; break; case 5: bai=1; shi=8; ge=0; break; } P1=0xfe; P0=table[bai]; delay(5); P1=0xfd; P0=table[shi]; delay(5); P1=0xfb; P0=table[ge]; delay(5); } void main() { jd=1; count=0; timer0_init(); while(1) { keyscan(); display(); } } |
|
相关推荐
1个回答
|
|
数码管是动态扫描的, 你的按键按下,等待按键放开这个时间比较长,导致数码管扫描频率过慢,造成闪烁
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之变量
472 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之本地脚本的编写和执行
654 浏览 0 评论
【xG24 Matter开发套件试用体验】深入了解Silicon Labs xG24 Matter开发套件
789 浏览 0 评论
702 浏览 0 评论
727 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10955 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-2 15:20 , Processed in 0.703230 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号