找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6442|回复: 6
收起左侧

流水灯和数显同时工作的干扰问题

[复制链接]
ID:23261 发表于 2010-4-27 14:42 | 显示全部楼层 |阅读模式

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit pw=P1^4;//发光管的使能端
sbit wei=P2^7;//数码管的位选端
sbit duan=P2^6;//数码管的段选端
uchar temp,aa,num; //
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//数码管数显编码表
void delay(uint z);//延时

void main()
{
 pw=0; //开启发光管使能端
 num=0; //附于初始值为0
 aa=0; //附于始值为0
 TMOD=0X01; //设定计时/计数器模式控制暂存器值
 TH0=(65536-50000)/256; //中断初值,高8位
 TL0=(65536-50000)%256; //中断初值,低8位
 EA=1;  //开启总中断
 ET0=1;  //开启定时中断
 TR0=1;  //启动定时
 temp=0xfe; //附值发光管第一个灯亮11111110
 P0=temp;
 duan=1;  //开启段选
 P0=table[0]; //段选显示数值初值为0
 duan=0;   //关闭段选,锁存
 wei=1;  //让位选处于直通状态
 P0=0x100; //位选位数值,数码管位数,二制为100000000,0的才能亮,这样八个数码管都亮
 wei=0;  //锁存,保持上一步的状态
 
 while(1) //死循环下级程序.
 { 
  delay(1000); //流水灯速度 
  temp=_crol_(temp,1); //向左移位
  P0=temp; 
  
 }

}
void delay(uint z) //流水灯延时函数
{
 uint x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);

}
void timer0() interrupt 1 //中断函数
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 aa++;
  if(aa==20) //数显速度
   {
    aa=0;
    num++;
    if(num==16) //数显值到最高位F时返回初值0;
     num=0;
    duan=1;
    P0=table[num];
    duan=0;
   }
}

回复

使用道具 举报

ID:23261 发表于 2010-4-27 14:47 | 显示全部楼层
这个流水灯会被数码管干扰得很厉害,因为用的是三极管,而不是锁存器74HC573,不懂如何在同工作下消除干扰.
回复

使用道具 举报

ID:22246 发表于 2010-4-27 23:53 | 显示全部楼层

你把

pw=0; //开启发光管使能端

 

这一行删掉就不行了吗? 

 

 你开启了发光管,他当然会随着数码管的变化而变化,因为都是接的P0 口,你只要把发光管关闭就行了 删掉那一行 或者是改为pw=1;

 

 

回复

使用道具 举报

ID:23261 发表于 2010-5-1 10:11 | 显示全部楼层
首先很感谢你的回复,这个程序本身就是要让流水灯和数显同时工作,如果pw关了就相当于关掉了发光管的电源.呵呵~
回复

使用道具 举报

ID:1 发表于 2010-5-1 15:15 | 显示全部楼层

你所说的干扰是一种什么现象呢?我给你分析一下

回复

使用道具 举报

ID:23625 发表于 2010-5-14 12:53 | 显示全部楼层
由于你的发光管跟数码管都共用的,当你段选、位选结束以后,你的P0=0x100; 下面才开始while循环去实现发光管位移。要不你在位选结束后面加个延时试试看,如果不行,试试把temp=oxfe; P0=temp; 放到位选结束的后面,因为这样的话 temp 重新赋值给P0来点亮发光管,然后进入循环,进行流水灯。这样应该就行了.... 因为我手头上没有单片机板,没有具体试过。希望能对你有帮助
回复

使用道具 举报

ID:23852 发表于 2010-5-15 22:27 | 显示全部楼层
你用两个定时器试试
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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