求助51单片机LCD1602数字显示的问题
程序代码:
#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码了吗?