微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 数码管的段选问题?流水灯的问题?

数码管的段选问题?流水灯的问题?

时间:10-02 整理:3721RD 点击:
#include <reg52.h>
#include <intrins.h>
typedef unsigned char uint8 ;
typedef unsigned int  uint16;
sbit BZ=P3^3;
/*
void delay(uint16 k) // k=1时,延时1.321ms
{
uint16 i,j;
for(i=0;i<k;i++)
  for(j=0;j<257;j++);
}
void delay_us(uint8 t)     //1~255   US    12MHZ
{
uint8 s;
for(s=0;s<t;s++)
_nop_();
}
*/
void delay_ms(uint16 m)  //1~65535 MS 12MHZ
{
uint16 d,g;
for(d=0;d<m;d++)
{
   for(g=0;g<1000;g++)
   _nop_();
}
  
}
void BZ_P(bit tt,uint8 d,uint16 z) // NO/OFF;N;delay
{
uint8 s;
if(tt==1)
{
  for(s=0;s<d;s++)
  {
   BZ=~BZ;
   delay_ms(z);
   
  }
}

}
void LED_L(bit q,bit i,uint16 ww,uint16 jj)
{
LED_Left(q,ww);
LED_Right(i,jj);
}
void LED_Left(bit cc,uint16 aa)    //ON/OFF,ON/OFF,delay;delay
{
uint8 n,tm;
//cc=0;
if(cc==1)
{
  tm=0x80;
  for(n=0;n<8;n++)
  {
   P1=~tm;
   BZ_P(1,4,50);
   delay_ms(aa);
   tm>>=1;
  }
}
}
void LED_Right(bit dd,uint16 bb)
{
uint8 n,tm;
//dd=0;
if(dd==1)
{
  tm=0x01;
  for(n=0;n<8;n++)
  {
   P1=~tm;
   BZ_P(1,6,40);
   delay_ms(bb);
   tm<<=1;
  }
}
   
}   
/*void LED_L2(bit ff,dd,uint16 a,b)    //ON/OFF,ON/OFF,delay;delay
{
uint8 m;
if(ff==1)
{
  for(m=8;m>0;m--)
  {
   P1=~(1<<m-1);
   BZ_P(0,3,100);
   delay(a);
  }

}

else if(dd==1)
{
   for(m=0;m<8;m++)
  {
   P1=~(1<<m);
   BZ_P(1,1,500);
   delay(b);
}
}
void main()
{
while(1)
{
  LED_L(0,1,100,10);
   
}
}

实现开/关左右流水灯+延时的功能,为什么就编译不过去呢?
还有就是数码管的段操作
bai=temp/100;
   shi=temp%100/10;
   ge=temp%10;
这是3为数码管的推算,如果要是6,8位数码管,该怎么推算呢?
请教高手!

没人顶啊

学习

俺是在请教问题啊

太麻烦了啊

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

网站地图

Top