标题:
求一个动态数码管显示0-7从左到右来回显示的程序 用定时器中断
[打印本页]
作者:
a89588038
时间:
2018-8-1 09:45
标题:
求一个动态数码管显示0-7从左到右来回显示的程序 用定时器中断
请教大神
这是个数码管显示0-7的程序,怎么改为动态数码管显示0-7从左到右来回显示的程序 用定时器中断。
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void Timer0Init()
{
TMOD|=0X01;
TH0=0XFC;
TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
Timer0Init();
while(1)
{
}
}
void Timer0() interrupt 1
{ u8 i;
static u16 j;
TH0=0XFC;
TL0=0X18;
// j++;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
P0=smgduan[i];
for (j=20;j>0;j--);
P0=0x00;
}
}
作者:
a89588038
时间:
2018-8-18 15:37
已经研究出来,在板上可以跑起来,分享给大家,有哪里写的不好的帮我指出来
作者:
a89588038
时间:
2018-8-18 15:38
已经研究出来,在板上可以跑起来,分享给大家,有哪里写的不好的帮我指出来
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u16 i)
{
while(i--);
}
void DigDisplay()
{
u8 i;
int j;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
P0=smgduan[i];
delay(65535);
P0=0x00;
}
for(j=7;j>=0;j--)
{
switch(j)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
P0=smgduan[j];
delay(65535);
P0=0x00;
}
}
void main()
{
while(1)
{
DigDisplay();
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1