/*************************************************
实验名称:数码管实验一
实验目的:利用动态扫描方法在六位数码管上显示出稳定
的654321
*************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DUAN = P2^6;
sbit WEI = P2^7;
uchar code duan_table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code wei_table[]=
{0xfe,0xfd,0xfb,
0xf7,0xef,0xdf};
void delay_1ms(int);
void main()
{
int i,j;
j =0;
while(1)
{
for(i = 7;i > 1; i--)
{
/*P0 = duan_table[i-1];
DUAN = 1;
DUAN = 0;
P0 = 0xff;
P0 = wei_table[j++];
WEI = 1;
WEI = 0;
delay_1ms(1);
以上代码将会产生余晖,改用以下代码消除余晖*/
DUAN = 1;
P0 = duan_table[i-1];
DUAN = 0;
P0 = 0xff;//消除余晖
WEI = 1;
P0 = wei_table[j++];
WEI = 0;
delay_1ms(1);
}
if(j == 6)
j = 0;
}
}
void delay_1ms(int x)
{
int i, j;
for(i = 0; i < x; i++)
for(j = 0; j < 110; j++);
}
/**************************************************
实验名称:数码管实验二
实验目的:利用动态扫描方法和定时器1在数码管的前三位
显示出秒表,精确到1%秒,即后两位显示1%秒,
一直循环下去。(TH/TL填装9216)
**************************************************/
#include<reg52.h>
#define uchar unsigned char