专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机输出矩阵波实验

作者:佚名   来源:本站原创   点击数:  更新时间:2009年11月28日   【字体:

  这个程序的本意是输出一个矩阵波,但是如果用单片机实验板来运行的话就会发现似乎P1^1(即为第二个led管一直在发光),其实并不是程序有问题使得它一直在亮,而使通段的频率对人眼睛来说太快了,根据视觉暂留,所以会觉得led一直在亮。我开始也是有此怀疑的,可以在程序里面修改使得通段的频率变低,就可以看出来其实是一直在工作的。在注释符号后面的程序就是更改后的;

#include<reg52.h>   
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^1;            //uint i=0;
void main()
{
  TMOD=0x01;
  TH0=(65536-50000)%256;
  TL0=(65536-5000)/256;
  EA=1;

  ET0=1;
  TR0=1;
  while(1)
    {
     while(TF0==0)       //if(TF0==0) i++;
       {                             //if(i==10)
    D1=~D1;                  //{  D1=~D1; }
       }
 }
}
void timer0() interrupt 1
{
    TH0=(65536-5000)/256;
    TL0=(65536-50000)%256;
}


更改后的程序变成了但计时器溢出十次,中断运行,即二十个溢出为此矩阵波的一个周期。

关闭窗口

相关文章