找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2128|回复: 15
打印 上一主题 下一主题
收起左侧

求助帖 关于单片机的简单程序问题,我死活想不通

[复制链接]
跳转到指定楼层
楼主
这段程序,led bee 和wind heat reve 五个同样的定义 ,同样在P1口,程序也放在一起,led bee能够正确的输出0或1,wind heat reve也就是P1.5 P1.6 P1.7这三个端口的输出电压始终是0.17V

1.png (27.73 KB, 下载次数: 23)

1

1

2.png (31.11 KB, 下载次数: 27)

2

2
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:145053 发表于 2018-9-20 11:20 | 只看该作者
看芯片规格书,结合硬件分析
回复

使用道具 举报

板凳
ID:310519 发表于 2018-9-20 11:58 | 只看该作者
可能是被外部元件拉低了,断开连接试试看。
回复

使用道具 举报

地板
ID:309627 发表于 2018-9-20 13:32 | 只看该作者
diy1997 发表于 2018-9-20 11:58
可能是被外部元件拉低了,断开连接试试看。

不是硬件的原因,硬件测试都ok,软件我在每个wind=1/0下面都加了heat=0/1就能够输出高电平了,但是新的问题出现了,这个判断只进行一次就没了,风扇转一下就停了,其他一切正常
回复

使用道具 举报

5#
ID:309627 发表于 2018-9-20 13:34 | 只看该作者
while (1)                                                 //主循环
  {
  SS=ReadADC(0);
  SS=(float)SS*100/256;   //数据转换

        LCD_Write_String(0,0,"T1:");                        //显示实时孵化温度
        LCD_Write_String(9,0,"T2:");                        //显示设定温度参数
  LCD_Write_String(5,0,".");
        LCD_Write_String(6,0,"C");
        LCD_Write_String(14,0,".");
        LCD_Write_String(15,0,"C");
               
        TempData1[0]=SS/10;
  TempData1[1]=SS%10;

        sprintf(temp1,"%d",(int)TempData1[0]);
        LCD_Write_String(3,0,temp1);
        sprintf(temp1,"%d",(int)TempData1[1]);
        LCD_Write_String(4,0,temp1);
         
        TempData2[0]=CK/10;
        TempData2[1]=CK%10;
               
        sprintf(temp2,"%d",(int)TempData2[0]);
  LCD_Write_String(12,0,temp2);
        sprintf(temp2,"%d",(int)TempData2[1]);
  LCD_Write_String(13,0,temp2);
       
        /*------------------------------------------------
                    报警及温度控制
------------------------------------------------*/

  if( SS >= CK )  //检测的温度高于设定值
                                             
     {
                         if(SS>=40)
                         {
      wind=1;
                                 heat=0;
                                 led=0;
                        bee=0;                        //报警       
                                         //散热
     }      
      else
                        {  
                                wind=1;
                                heat=0;
                                led=1;
                           bee=1;
                               
                        }
                }
                 
        if( SS < CK )         
    {
                        if(SS<=35)
                        {
                         heat=1;
                                wind=0;
                                led=0;
                        bee=0;                        //报警
                                 //加热
                  }
                        else
                        {       
                                heat=1;
                                wind=0;
                                led=1;
                          bee=1;
                               
                        }
                }


        }
这是循环部分的代码
回复

使用道具 举报

6#
ID:343102 发表于 2018-9-20 15:16 | 只看该作者
看负载电流是否超出单片机允许最大值
回复

使用道具 举报

7#
ID:67356 发表于 2018-9-20 16:27 | 只看该作者
P1.5 P1.6 P1.7这三个端口,外围电路截图看看,看上去是三极管导通后的电压
回复

使用道具 举报

8#
ID:309627 发表于 2018-9-20 20:04 | 只看该作者
jmkl128 发表于 2018-9-20 16:27
P1.5 P1.6 P1.7这三个端口,外围电路截图看看,看上去是三极管导通后的电压

这样,单片机的P1.5  P1.6   P1.7直接借这个ULN2003

3.png (62.58 KB, 下载次数: 27)

3.png
回复

使用道具 举报

9#
ID:388197 发表于 2018-9-20 21:34 | 只看该作者
原理图来看没问题,你试试配置下IO口成推挽输出看看.
回复

使用道具 举报

10#
ID:309627 发表于 2018-9-21 14:24 | 只看该作者
破案了,软件上有一点小问题,主要还是我用的小马达,启动时电流太大,电压源会猛降,小马达驱动不起来,用个继电器就ok了
回复

使用道具 举报

11#
ID:96682 发表于 2018-9-22 01:25 | 只看该作者
ULN2003驱动能力有限,换大点的驱动模块,电源功率也要足够大才能稳
回复

使用道具 举报

12#
ID:150693 发表于 2018-9-22 06:18 | 只看该作者
在没有接任何负载的情况下测试一下,应该是虚焊
回复

使用道具 举报

13#
ID:115473 发表于 2018-9-22 08:22 | 只看该作者
注意IO 要有个拉高电阻。
回复

使用道具 举报

14#
ID:401288 发表于 2018-9-22 13:22 | 只看该作者
你好像没有写循环
回复

使用道具 举报

15#
ID:309627 发表于 2018-9-24 00:01 | 只看该作者
1276366627 发表于 2018-9-22 13:22
你好像没有写循环

我没把程序放完整,我的错
回复

使用道具 举报

16#
ID:309627 发表于 2018-9-24 00:01 | 只看该作者
风158 发表于 2018-9-20 15:16
看负载电流是否超出单片机允许最大值

谢谢老哥的建议
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表