找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6382|回复: 24
收起左侧

为什么单片机没有命令,数码管和led会都亮?

  [复制链接]
ID:253022 发表于 2017-12-6 11:50 | 显示全部楼层 |阅读模式
      //新手求问 微信图片_20171206115004.jpg            

     自己的本意是打算做一组交通灯,所以先把led的控制代码写好,顺手测试一下。可是为什么我一开始只让4个led灯亮,可是刚打开时8个led灯和数码管都亮了?是程序哪里出了问题




            #include <reg52.h>
   sbit led1_1=P1^0;
   sbit led1_2=P1^1;
   sbit led1_3=P1^2;
   sbit led1_4=P1^3;                                 //          定义led灯
   sbit led2_1=P1^4;
   sbit led2_2=P1^5;
   sbit led2_3=P1^6;
   sbit led2_4=P1^7;                               //位定义
   sbit shumaguan1_1=P2^0;
   sbit shumaguan1_2=P2^1;
   sbit shumaguan2_1=P2^3;
   sbit shumaguan2_2=P2^4;   //对数码管的位定义

                                                                                                                        
    void led_display()
    {
         led1_1=1;
         led1_2=1;
         led1_3=1;
         led1_3=1;

    }                           //      led亮的函数


   

    void iint()                              //初始化函数
    {
      TMOD=0x11;
      TH0=(65536-50000)/256;
      TL0=(65536-50000)%256;
      EA=1;
      ET0=1;
      TR0=1;
    }         
   
      
     void main()
     {
               iint();
              led_display();
     }        
     
     
              void T0_time() interrupt 1               //定时中断函数
    {         
               static count=1;
               TH0=(65536-50000)/256;
               TL0=(65536-50000)%256;
               count++;
               if(count==20)
               {
                count=0;
                led1_1=~led1_1;
                led1_2=~led1_2;
                led1_3=~led1_3;
                led1_4=~led1_4;
               }

                           
    }         

回复

使用道具 举报

ID:123289 发表于 2017-12-6 12:13 | 显示全部楼层
只要它得到适当的电流就会亮,管你这个机那个鸡。
回复

使用道具 举报

ID:253022 发表于 2017-12-6 13:18 | 显示全部楼层
yzwzfyz 发表于 2017-12-6 12:13
只要它得到适当的电流就会亮,管你这个机那个鸡。

老师你好!我是刚学单片机的不是很懂。不是只有令led=1;led才会亮吗?
回复

使用道具 举报

ID:213173 发表于 2017-12-6 13:30 | 显示全部楼层
单片机复位后IO口都是呈高电平。没有操作改变其状态将一直保持不变。
回复

使用道具 举报

ID:231046 发表于 2017-12-6 13:45 | 显示全部楼层
IO 状态没有初始化状态吧,
回复

使用道具 举报

ID:258167 发表于 2017-12-6 14:27 | 显示全部楼层
IO 状态没有初始化状态吧
回复

使用道具 举报

ID:157238 发表于 2017-12-6 15:13 | 显示全部楼层
IO口在没进行操作时默认输出为高,而你的led是共地连接的,所以形成通路,led中有电流流过
回复

使用道具 举报

ID:253022 发表于 2017-12-6 16:43 | 显示全部楼层
le51 发表于 2017-12-6 15:13
IO口在没进行操作时默认输出为高,而你的led是共地连接的,所以形成通路,led中有电流流过

那要怎么解决好呢?是修改程序还是修改一下电路,请麻烦点明一下!!
回复

使用道具 举报

ID:257664 发表于 2017-12-6 16:54 | 显示全部楼层
IO状态没有初始化,再仔细检查一下程序,
回复

使用道具 举报

ID:258243 发表于 2017-12-6 17:05 | 显示全部楼层
IO口呈高电平
回复

使用道具 举报

ID:258282 发表于 2017-12-6 17:59 | 显示全部楼层
周鑫鑫鑫666 发表于 2017-12-6 16:43
那要怎么解决好呢?是修改程序还是修改一下电路,请麻烦点明一下!!

在main函数里先把P1口拉低就可以了

评分

参与人数 1黑币 +2 收起 理由
周鑫鑫鑫666 + 2

查看全部评分

回复

使用道具 举报

ID:258226 发表于 2017-12-6 18:14 | 显示全部楼层
完全正常吧,一般在上电的时候会有一个默认初始化过程,比如你上电后不进行任何操作也会输出IO高电平,所以你需要先把相应IO拉低才算是初始化完成。IO如果是输出状态总得有个电平值吧,你看看上电后你不用的IO引脚是什么状态,一下就清楚了。
回复

使用道具 举报

ID:7485 发表于 2017-12-6 19:12 | 显示全部楼层
单片机上电启动时,首先初始化各IO口。

评分

参与人数 1黑币 +2 收起 理由
周鑫鑫鑫666 + 2

查看全部评分

回复

使用道具 举报

ID:253022 发表于 2017-12-6 19:15 | 显示全部楼层
谢谢大家!我理解了!我刚刚把在程序中把IO口拉低后就好了!蟹蟹你们!
回复

使用道具 举报

ID:258304 发表于 2017-12-6 19:17 | 显示全部楼层
先了解你这个是共阴极还是共阳极
回复

使用道具 举报

ID:157238 发表于 2017-12-7 10:05 | 显示全部楼层
周鑫鑫鑫666 发表于 2017-12-6 16:43
那要怎么解决好呢?是修改程序还是修改一下电路,请麻烦点明一下!!

修改电路让LED灯换成共阳连接把数码管换成共阳数码管也可以,或者修改程序让led灯或者数码管高电平点亮
回复

使用道具 举报

ID:258425 发表于 2017-12-7 11:52 | 显示全部楼层
这个不用管,有电流就会亮
回复

使用道具 举报

ID:258644 发表于 2017-12-7 15:04 | 显示全部楼层
上电后IO应该初始化为低电平
回复

使用道具 举报

ID:258700 发表于 2017-12-7 16:28 | 显示全部楼层
好!!!!!!!!!!!
回复

使用道具 举报

ID:258733 发表于 2017-12-7 17:43 | 显示全部楼层
IO口是高电平
回复

使用道具 举报

ID:789542 发表于 2020-6-25 16:10 | 显示全部楼层
没有初始化
回复

使用道具 举报

ID:789140 发表于 2020-6-27 17:45 | 显示全部楼层
你的数码管都是共地,给高电平就会全部点亮,而上电复位后默认输出高电平,你可以看引脚对应的方框,红色是高电平,蓝色是低电平,黄色是短路

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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