|
1金钱
请帮我看看这个码表,数码段的数字不显示 ,怎么弄都是显示8.
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
//#include "intrins.h"
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
#define LCDwei P2
#define LCDduan P1
sbit kaishi = P3^1; //定义开始键
sbit jishi = P3^0; //定义计时键
sbit huixian = P3^2; //定义回显键
sbit fuwei = P3^3; //定义复位键
u16 time_ms; //定义变量秒
u16 time_s; //定义变量分
u16 time_min; //定义变量小时
u8 code shumaduan[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x00,};
u8 code shumawei[] = {0x00,0x04,0x08,0x0c,
0x10,0x14,0x18,0x1c};
void delay(u8 i)
{
while(i--);
}
void tim0()
{
TMOD |= 0x01;
TH0 = 0Xd8; //10ms的初值
TL0 = 0xf0; //10ms的初值
ET0 = 1;
EA = 1;
//TR0 = 1;
}
void xianshi(u8 ledwei,u8 ledduan)
{
LCDwei = shumawei[ledwei];
delay(10);
LCDduan = shumaduan[ledduan];
delay(10);
LCDduan = shumaduan[16];
}
void display(u8 wei,u8 num)
{
u8 x,y;
x = num/10; //分离十位
y = num%10; //分离个位
if(wei==1)
{
xianshi(1,x);
delay(20);
xianshi(0,y);
delay(20);
}
if(wei==2)
{
xianshi(4,x);
delay(20);
xianshi(3,y);
delay(20);
}
if(wei==3)
{
xianshi(7,x);
delay(20);
xianshi(6,y);
delay(20);
}
}
void main()
{
tim0();
while(1)
{
display(1,12);
}
}
void time0() interrupt 1
{
TH0 = 0Xd8;
TL0 = 0xf0;
time_ms++;
if(time_ms++>=100)
{
time_ms = 0;
time_s++;
if(time_s>=60)
{
time_s = 0;
time_min++;
if(time_min>=60)
{
time_min = 0;
}
}
}
}
我知道答案
本帖寻求最佳答案回答被采纳后将获得系统奖励 10 金钱 , 目前已有 1人回答
|
|