微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 为甚麽灯点不亮呢

为甚麽灯点不亮呢

时间:10-02 整理:3721RD 点击:
程序#include<reg52.h>#define uchar unsigned char
sbit x1=P0^0;
sbit x2=P0^1;
sbit x3=P0^2;
sbit x4=P0^3;
sbit y1=P2^4;
sbit y2=P2^5;
sbit y3=P2^6;
sbit y4=P2^7;
void delay2ms()
{
  uchar i;
  TMOD=0x10;
  for(i=0;i<8;i++)
        {  TH1=256-250;
          TL1=256-250;
          TR1=1;
          while(!TF1)
          TF1=0;
        }
}
void main()
{
  x1=0x04;
  y1=0xaf;
  delay2ms();

  x2=0x0f;
  y2=0x1f;
  delay2ms();

  x3=0x04;
  y3=0xaf;
  delay2ms();

  x4=0x0b;
  y4=0xaf;
  delay2ms();

仿真图

仿真图


那些x,y都是1位            

你用的是位定义,直接负高低电平就行了!

路过,看看,看看

#include<reg52.h>
#define uchar unsigned char
sbit x=P0;
sbit y=P2;
void delay2ms()
{
  uchar i;
  TMOD=0x10;
  for(i=0;i<8;i++)
        {  TH1=256-250;
          TL1=256-250;
          TR1=1;
          while(!TF1)
          TF1=0;
        }
}
void main()
{
  x=0x00;
  y=0xff;
  x=0x04;
  y=0xaf;
  delay2ms();
  x=0x0f;
  y=0x1f;
  delay2ms();
  x=0x04;
  y=0xaf;
  delay2ms();
  x=0x0b;
  y=0xaf;
  delay2ms();

}

仿真图


为神魔还是不行

呵呵,不好意思,我刚在学习,具体怎么赋值呢

简单的延时就不需要定时器了吧,况且你那定时器总中断EA都没开

不需要写吧,我们书上都没有,我觉得他就是计满溢出吧,到底是怎样的,能不能具体帮我分析一下呢,非常感谢

还在学习中。起步阶段...

我编译通过了,没有仿真,我改了两条语句,注意查看注释

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. sbit x1=P0^0;
  4. sbit x2=P0^1;
  5. sbit x3=P0^2;
  6. sbit x4=P0^3;
  7. sbit y1=P2^4;
  8. sbit y2=P2^5;
  9. sbit y3=P2^6;
  10. sbit y4=P2^7;
  11. void delay2ms()
  12. {
  13.   uchar i;
  14.   TMOD=0x10;
  15.   for(i=0;i<8;i++)
  16.         {  
  17.            TH1=256-250;
  18.           TL1=256-250;
  19.           TR1=1;
  20.           while(!TF1);          //少了一个分号。通过while语句不断检测定时器是否溢出,一旦溢出执行下一跳语句
  21.           TF1=0;
  22.         }
  23. }
  24. void main()
  25. {
  26.   x1=1;
  27.   y1=0;                          //x1,y1已经是一位数据了,赋值时只需赋1或0就可以了。
  28.   delay2ms();


  29.   x2=0;
  30.   y2=1;
  31.   delay2ms();


  32.   x3=1;
  33.   y3=0;
  34.   delay2ms();


  35.   x4=0;
  36.   y4=1;
  37.   delay2ms();
  38. }

复制代码

LED灯不用连接上拉电阻? 还有 控制LED等亮灭的赋值方法就是送1或者0

楼上的编程提示就很好啊,你再试试。加油

我刚试了,灯真的亮点,可是我想做的是通过led点阵显示一个“大”字,用位定义好像有点难

4*4能出现大字吗

呵呵,显示个类似字形

你定义的  xy都是  位定义  你却用0x04这类的   这一下就是八位  你确定编译能过?

使用IO口不用位定义,直接负值就行了啊!如:P0=0xaa;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top