![]() |
#2
ID不见了2016-06-28 19:02
|

#include<stc15.h>
#include<intrins.h>
#include<gpio.h>
#define uchar unsigned char
#define uint unsigned int
#include<lcd1602.h>
//uint m,f,s; //秒、分、时
uint m1,m2; //秒的个位、十位
uint f1,f2;
uint s1,s2;
uint aa;
uchar dis1[]={0x30,0x30,0x3a,0x30,0x30,0x3a,0x30,0x30};
uint i;
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
void Delayxms(uint x)
{
uint i;
for(i=0;i<x;i++)
{
Delay1ms();
}
}
void init()
{
TMOD=0x01; //计数器T0计数
TH0=(65536-50000)/256; //设置T0 50ms定时的初始值
TL0=(65536-50000)%256;
EA=1; //开放CPU中断
ET0=1; //允许外部中断
TR0=1; //定时器开始计时
aa=0;
m1=0;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256; //每50MS产生一次中断,给寄存器装初值并累加aa
TL0=(65536-50000)%256;
aa++;
}
void time_add()
{
/*m1=0,m2=0,f1=0,f2=0,s1=0,s2=0;
lcd_data(0x30+0x30+0x3a+0x30+0x30+0x3a+0x30+0x30);*/
if(aa==20)
{
aa=0;
m1++;
if(m1>9)
{
m1=0;
m2++;
if(m2>5)
{
m2=0;
f1++;
if(f1>9)
{
f1=0;
f2++;
if(f2>5)
{
f2=0;
s1++;
if(s1>9)
{
s1=0;
s2++;
if(s2>5)
{
m1=0;
m2=0;
f1=0;
f2=0;
s1=0;
s2=0;
}
}
}
}
}
}
}
}
void main()
{
gpio();
lcd_init(); //初始化
Delayxms(20);
m1=0,m2=0,f1=0,f2=0,s1=0,s2=0;
init(); //定时器
while(1)
{
time_add();
dis1[7]=m1+'0';
dis1[6]=m2+'0';
dis1[4]=f1+'0';
dis1[3]=f2+'0';
dis1[1]=s1+'0';
dis1[0]=s2+'0';
i=0;
while(i<8)
{
lcd_start(4+i);
lcd_data(dis1[i]);
i++;
}
}
}
请问红色部分的代码是怎么回事?是加上'0'就能将数字转换成ASCII码了吗?