注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 |
![]() |
首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 |
全部内容 | 本站公告 | 购物咨询 | 付款确认 | 购物反馈 | 网站建议 | 贵宾交流 | 商品评论 | 文章评论 | 发新留言 |
标题: | 〖yorton〗继电器不动作,代码如下(5426)………… 购物咨询 | ||
发送时间: | 2008/11/4 11:40:21 | 更新时间: | 2008/11/14 22:58:31 |
留言内容: |
198元单片机实验板.以下是我驱动继电器的代码,为什么指示灯亮,但是继电器不动作??(我用从51电子购买的指针万用表测量,指示灯亮时常开外接端不通)
#include sbit JDQ= P2^1; void Delay() { unsigned int i,j; for(i=0;i<65535;i++); } void main() { while(1) { JDQ = 0; Delay(); JDQ = 1; Delay(); } } 2008-11-4 11:43:15 [yorton]〖119.129.197.49〗:用这个程序驱动蜂鸣器可以,但是两个继电器都不行,不知道为什么 2008-11-4 13:19:09 [51dz]〖58.61.55.214〗:程序思路是对的,代码也不错,估计是因为你的延时不够长,继电器来不及动作.你将延时延长到1秒以上,必要时用外接电源供电. 2008-11-4 18:11:41 [yorton]〖119.129.197.49〗:恳求站长在百忙之中给我一个可以驱动继电器的程序,谢谢! 2008-11-5 19:43:50 [trousers]〖58.24.3.155〗:对于198元STC实验板,驱动继电器只需把对应的端口置0即可。 2008-11-6 15:22:40 [yorton]〖119.129.239.228〗:兄弟,我的程序已经置零了,而且延时远大于1秒,就是继电器不动作,站长也不给个说法,51dz,真是让人心急啊 2008-11-6 16:03:09 [51dz]〖58.61.55.95〗:你说说你是怎样计算时间的,例如晶振是多少,哪句程序分别是什么意思? 2008-11-6 17:21:05 [yorton]〖119.129.239.228〗:采用keil默认的40M晶振,单步运行,sec时间是1.21261100秒 2008-11-6 20:45:43 [51dz]〖58.61.55.95〗:问你东,你答西,可见你不尊重本站。从你的延时代码中看,只做65534次空操作,如果按实际使用的12M晶振的话,每个循环最多才几微秒,因此延时时间是很短的。建议你检查其它问题。 2008-11-7 19:32:02 [yorton]〖119.129.239.228〗:站长同志,这个延时已经远远大于1秒了,分明是电压的问题,你竟然说是程序的问题,不可思议.设计和售出产品之后,不能及时准确的解决问题,更是不可思议 2008-11-7 21:34:18 [51dz]〖58.61.54.187〗:C语言我不是很懂,你用的什么编译器和编译器设置我就更不懂了,这个延时程序编译出来远远超过1秒我也是不懂并且不知道会这样的,我只是自己想当然分析结果而已,因为我是用汇编的,我各方面的能力水平是没法和你相比的,仅管我首次回复就表明了必要时用外接电源,那只能说明我还是在尽能力帮你解决问题,但天公不作美,无法帮你解决问题,实在是无能为力,不便之处,还请谅解! 2008-11-8 2:52:35 [51dz]〖58.61.54.187〗:用KEIL软件仿真了一下,这个C写的延时程序的确可以延时到1.213秒,真的难以相信。一个双字节数(最大65536)从0加1到最大数溢出,用汇编写的程序只需要0.165秒。看样子C语言还是值得好好研究的。总之,不能帮楼主解决问题请谅解! mm: call mmm cpl p2.1 jmp mm mmm: mov r2,#0 ;低字节,如果用DJNZ做65535次循环的话,时间可能会更短。 mov r3,#0 ;高字节 mm0: inc r2 ;…………这里加用户需要循环执行的代码,加两句nop后,延时也才0.225秒。 mm1: cjne r2,#0,mm2 inc r3 mm2: cjne r3,#255,mm0 cjne r2,#255,mm0 ret 2008-11-9 11:45:06 [yorton]〖119.129.195.48〗:感谢站长在百忙之中帮忙解决问题,在KEIL中40M我测试的延时时间1.212417s 站长是以为不可逾越的高手,我要多学习了 2008-11-10 21:41:11 [yorton]〖116.23.57.239〗:我又排到前面来了,哈哈 2008-11-11 21:20:31 [yorton]〖116.23.58.241〗:靠前,再靠前 2008-11-12 21:27:01 [trousers]〖58.24.3.185〗:原来楼主的真正目的是灌水啊!其实让端口置低后进入死循环就能确认是否真的是电路坏了。 2008-11-14 22:39:35 [yorton]〖116.23.252.121〗:#includereg51.h sbit P1_0=P1^0 ; sbit P1_7=P1^7 ; sbit P0_6=P0^6 ; sbit P0_7=P0^7 ; sbit P0_5=P0^5; sbit P0_4=P0^4 ; unsigned char code table[]= { 0x05,0xdd,0x46,0x54, 0x9c,0x34,0x24,0x5d, 0x04,0x14,0x0c,0xa4, 0x27,0xc4,0x26,0x2e }; 2008-11-14 22:40:36 [yorton]〖116.23.252.121〗:unsigned char temp; unsigned char key; unsigned char i,j; void main(void) { while(1) { P0=0xff; P0_4=0; temp=P0; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i0;i--) for(j=200;j0;j--); temp=P0; temp=temp & 0x0f; if (temp!=0x0f) { temp=P0; temp=temp & 0x0f; switch(temp) { case 0x0e: key=7; 2008-11-14 22:41:43 [yorton]〖116.23.252.121〗: break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key=10; break; } 2008-11-14 22:43:39 [yorton]〖116.23.252.121〗: temp=P0; P1_0=P1_0; P1=table[key]; temp=temp & 0x0f; while(temp!=0x0f) { temp=P0; temp=temp & 0x0f; } } } P0=0xff; P0_5=0; temp=P0; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i0;i--) for(j=200;j0;j--); temp=P0; temp=temp & 0x0f; if (temp!=0x0f) { temp=P0; temp=temp & 0x0f; switch(temp) { case 0x0e: key=4; break; case 0x0d: key=5; 2008-11-14 22:44:07 [yorton]〖116.23.252.121〗: break; case 0x0b: key=6; break; case 0x07: key=11; break; } temp=P0; P1_0=P1_0; P1=table[key]; temp=temp & 0x0f; while(temp!=0x0f) { temp=P0; temp=temp & 0x0f; } } } P0=0xff; P0_6=0; temp=P0; temp=temp & 0x0f; if (temp!=0x0f) { for(i=50;i0;i--) for(j=200;j0;j--); 2008-11-14 22:44:37 [yorton]〖116.23.252.121〗: temp=P0; temp=temp & 0x0f; if (temp!=0x0f) { temp=P0; temp=temp & 0x0f; switch(temp) { case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=12; break; } temp=P0; P1_0=P1_0; P1=table[key]; temp=temp & 0x0f; while(temp!=0x0f) { temp=P0; temp=temp & 0x0f; } } } P0=0xff; P0_7=0; temp=P0; temp=temp & 0x0f; 2008-11-14 22:58:31 [yorton]〖116.23.252.121〗: break; case 0x0b: key=14; break; case 0x07: key=15; break; } temp=P0; P1_0=P1_0; P1=table[key]; temp=temp & 0x0f; while(temp!=0x0f) { temp=P0; temp=temp & 0x0f; } } } } } 矩阵键盘与数码管按键显示 |
本站实事求是保留用户意见和问题!拒绝广告和灌水!但系统只显示最近2年或者最近2万次留言(约5000标题)!过期留言自动删除!重要内容请自行备份!不便之处请谅解! |
本站协议 |
版权信息 |
关于我们 |
本站地图 |
营业执照 |
发票说明 |
付款方式 |
联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102 E-mail:51dz$163.com($改为@);Tel:(0755)27947428 工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389 |