1079|15

114

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

红绿灯玩具,关于点灯的问题,大家帮忙看看 [复制链接]

 

 

原来红绿灯的问题,有时候能够正常工作,有时候就跑飞,本来怀疑是IC插座的问题,把51直接焊到板子上问题依旧。

 

把程序弄到一个最简单,发现点灯也不正常(长灭,常亮,有时候又能闪),大家帮忙看看。

另外还有一个问题就是我用EP51烧程序,10次只有1次能够烧写成功,不知道咋回事。

 

 

 

最简单代码如下(实在想不出来还有什么问题):

#include <reg52.h>

unsigned char counter_1s;
#define LED_ON      0
#define LED_OFF     1
sbit led_run = P1^3;


void delay(int ms);

void initT0()
{
    TMOD = 0x01;
    TH0 = 0xD8;
    TL0 = 0xF0;
    
    EA = 1; // Enable Switch 
    ET0 = 1; // T0 inter
    TR0 = 1;
}

void main( void )   
{
    initT0();
    P0 = 0;
    P1 = 0;
    P2 = 0;
    counter_1s = 0;
    delay(1000);

    while(1)
    {
    }
}   

void delay(int ms)
{
  int i,j;
  for(i = 0; i<ms; ++i)
    for(j = 0; j<110; ++j);
}

void interrupt_t0() interrupt 1
{
    // 10ms
    TH0 = 0xD8;
    TL0 = 0xF0;
  
    counter_1s++;
    if(counter_1s == 100)
    {
        counter_1s = 0;
        led_run = ~led_run;
    }
}

 

此帖出自51单片机论坛

最新回复

建议从网上找一个好的程序,排查是否是硬件问题还是程序问题?   详情 回复 发表于 2023-12-19 19:00
点赞 关注
 

回复
举报

2万

帖子

0

TA的资源

超级版主

沙发
 

石英晶体正常起振了么?

RST引脚悬空,复位正确么?

程序是否从头开始正常执行?

此帖出自51单片机论坛

点评

晶振起震了,示波器量了 RST没用到,所以省了 应该是执行了,不然也不会有时候可以  详情 回复 发表于 2023-12-13 08:26
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
maychang 发表于 2023-12-12 19:46 石英晶体正常起振了么? RST引脚悬空,复位正确么? 程序是否从头开始正常执行?

晶振起震了,示波器量了

RST没用到,所以省了

应该是执行了,不然也不会有时候可以

此帖出自51单片机论坛

点评

【RST没用到,所以省了】 51单片机,复位电路一般不能省掉。RST悬空,单片机可能根本无法开始执行程序。至于【有时候可以】,不足为训。【有时候可以】,当然程序得到了执行,那【有时候跑飞】,显然没有得到正常  详情 回复 发表于 2023-12-13 08:56
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

4
 
韵湖葱白 发表于 2023-12-13 08:26 晶振起震了,示波器量了 RST没用到,所以省了 应该是执行了,不然也不会有时候可以

【RST没用到,所以省了】

51单片机,复位电路一般不能省掉。RST悬空,单片机可能根本无法开始执行程序。至于【有时候可以】,不足为训。【有时候可以】,当然程序得到了执行,那【有时候跑飞】,显然没有得到正常执行。

此帖出自51单片机论坛
 
 
 

回复

1万

帖子

141

TA的资源

版主

5
 

把电路给全。

此帖出自51单片机论坛

点评

[attachimg]764391[/attachimg]   复位电路电路板上飞线了    详情 回复 发表于 2023-12-16 14:47
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

6
 

 

此帖出自51单片机论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(中级)

7
 

石英晶体正常起振了么?

RST引脚悬空,复位正确么?

程序是否从头开始正常执行

51单片机,复位电路一般不能省掉。RST悬空,单片机可能根本无法开始执行程序。至于【有时候可以】,不足为训。【有时候可以】,当然程序得到了执行,那【有时候跑飞】,显然没有得到正常

女里学习,总结

此帖出自51单片机论坛

点评

起振正常,RST我手动飞线了  详情 回复 发表于 2023-12-16 11:39
程序是否从头开始正常执行  ---这个怎么确认,现在已经精简到点一个灯这个逻辑了。 群里的大佬说是点灯用IO口直接驱动,led接地比较合适  详情 回复 发表于 2023-12-16 11:38
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

8
 
haocede 发表于 2023-12-16 11:02 石英晶体正常起振了么? RST引脚悬空,复位正确么? 程序是否从头开始正常执行 51单片机,复位电 ...

程序是否从头开始正常执行 

---这个怎么确认,现在已经精简到点一个灯这个逻辑了。

群里的大佬说是点灯用IO口直接驱动,led接地比较合适

此帖出自51单片机论坛

点评

显然“群里的大佬”太菜。应尽量采用负逻辑驱动,即LED按你的图中接法更好,因为你所用MCU的灌电流能力强于拉电流能力。  详情 回复 发表于 2023-12-19 14:25
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

9
 
haocede 发表于 2023-12-16 11:02 石英晶体正常起振了么? RST引脚悬空,复位正确么? 程序是否从头开始正常执行 51单片机,复位电 ...

起振正常,RST我手动飞线了

此帖出自51单片机论坛
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

10
 
 
复位电路电路板上飞线了

 

此帖出自51单片机论坛

点评

你先写个简单程序,别的不用管,只驱动P1.3管脚上的LED,令其闪烁,进而令其闪烁特定的次数。先验证基本硬件平台,再掌握最简单的编程和烧录操作,一步步来。  详情 回复 发表于 2023-12-19 14:22
 
 
 

回复

1万

帖子

141

TA的资源

版主

11
 
韵湖葱白 发表于 2023-12-16 14:47   复位电路电路板上飞线了  

你先写个简单程序,别的不用管,只驱动P1.3管脚上的LED,令其闪烁,进而令其闪烁特定的次数。先验证基本硬件平台,再掌握最简单的编程和烧录操作,一步步来。

此帖出自51单片机论坛
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

1万

帖子

141

TA的资源

版主

12
 
韵湖葱白 发表于 2023-12-16 11:38 程序是否从头开始正常执行  ---这个怎么确认,现在已经精简到点一个灯这个逻辑了。 群里的大 ...

显然“群里的大佬”太菜。应尽量采用负逻辑驱动,即LED按你的图中接法更好,因为你所用MCU的灌电流能力强于拉电流能力。

此帖出自51单片机论坛

点评

  自信心崩盘,点灯失败。。。   #include <reg52.h> unsigned char counter_1s; #define LED_ON 0 #define LED_OFF 1 sbit led_run = P1^3; void delay(int ms);  详情 回复 发表于 2023-12-19 17:49
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

13
 
chunyang 发表于 2023-12-19 14:25 显然“群里的大佬”太菜。应尽量采用负逻辑驱动,即LED按你的图中接法更好,因为你所用MCU的灌 ...

 

自信心崩盘,点灯失败。。。

 

#include <reg52.h>

unsigned char counter_1s;
#define LED_ON      0
#define LED_OFF     1
sbit led_run = P1^3;


void delay(int ms);

void initT0()
{
    TMOD = 0x01;
    //TH0 = 0xD8;
    //TL0 = 0xF0;
    TH0 = 0xDC;
    TL0 = 0x00;
    
    EA = 1; // Enable Switch 
    ET0 = 1; // T0 inter
    TR0 = 1;
}

void main( void )   
{
    initT0();
    counter_1s = 0;

    while(1)
    {
    }
}   

void delay(int ms)
{
  int i,j;
  for(i = 0; i<ms; ++i)
    for(j = 0; j<110; ++j);
}

void interrupt_t0() interrupt 1
{
    // 10ms
    //TH0 = 0xD8;
    //TL0 = 0xF0;
    TH0 = 0xDC;
    TL0 = 0x00;
  
    counter_1s++;
    if(counter_1s == 100)
    {
        counter_1s = 0;
        led_run = ~led_run;
    }
}

 

 

 

 

 

 

此帖出自51单片机论坛
 
 
 

回复

19

帖子

2

TA的资源

一粒金砂(中级)

14
 

有没有可能是你电路板焊接问题?

此帖出自51单片机论坛
 
 
 

回复

19

帖子

2

TA的资源

一粒金砂(中级)

15
 

建议从网上找一个好的程序,排查是否是硬件问题还是程序问题?

此帖出自51单片机论坛
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

16
 

26074efc03bdb01bc031eb20793fafad

放弃51了,换了M0,香多了。

感谢各位支持。

此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表