注意:访问本站需要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