📄 lcd.c
字号:
#include <REGX52.H>
#include "LCD1602.h"
#include "Key2.h"
#include "CeLiang.h"
#include "delay.h"
void IntToStr(uint t, uchar *str, uchar n)
{ uchar a[5]; uchar i2, j;
a[0]=(t/10000)%10; //取得整数值到数组
a[1]=(t/1000)%10;
a[2]=(t/100)%10;
a[3]=(t/10)%10;
a[4]=(t/1)%10;
for(i2=0; i2<5; i2++) //转成ASCII码
a[i2]=a[i2]+'0';
for(i2=0; a[i2]=='0' && i2<=3; i2++);
for(j=5-n; j<i2; j++) //填充空格
{ *str=' '; str++; }
for(; i2<5; i2++)
{ *str=a[i2]; str++; } //加入有效的数字
*str='\0';
}
main()
{ data uchar i,j,k,key;
data uchar TempBuffer[10]; //LCD字符显示缓存
max=0;
LCD_Initial(); //LCD初始化
/*延时2s*/
for(i=100;i>0;--i)
delay_1ms(20);
/*提示输入脉冲的测量次数*/
GotoXY(0,0);
Print(" Input Measure ");
GotoXY(0,1);
Print(" Number(10-64): ");
/*此while循环为测量次数输入模块*/
while(1)
{ key=keyScan();
switch(key)
{ case(11):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+1;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(12):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+2;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(13):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+3;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(21):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+4;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(22):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+5;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(23):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+6;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(31):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+7;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(32):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+8;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(33):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+9;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
case(42):
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
max=max*10+0;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
break;
}//switch
if(max>64)
{ max=64;
IntToStr(max,&TempBuffer[0],3);
GotoXY(0,0);
Print(&TempBuffer[0]);
}
if(max>9)break;
}//while
/*输入测量次数模块结束*/
/*显示输入的数2s*/
for(i=100;i>0;--i)
delay_1ms(20);
for(i=0;i<=max;++i)
{ time[i].second=0;
time[i].m_second=0;
}
GotoXY(0,0);
Print(" Please press 1 ");
GotoXY(0,1);
Print(" to start ");
key=0;
/*下面为测量脉冲过程*/
while(keyScan()!=11);
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
GotoXY(0,0);
Print(" LOADING..... ");
int0_initial();
while(puls_num<max);//测量结束
/*测量脉冲结束,下面为结果计算和显示*/
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
GotoXY(0,1);
Print(" Measrue end! ");
/*显示输入的数2s*/
for(i=100;i>0;i--)
delay_1ms(20);
GotoXY(0,0);
Print(" Please press 2 ");
GotoXY(0,1);
Print(" To show ");
while(keyScan()!=12);
/*显示模块,按"->"键增加,按"<-"键减少*/
i=max-1;
while(1)
{ LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
if(time[i].m_second/100>0)k=3; //三位数
else if(time[i].m_second/10>0)k=2; //二位数
else k=1; //一位数
if(time[i].second/100>0)j=3; //三位数
else if(time[i].second/10>0)j=2; //二位数
else j=1; //一位数
GotoXY(0,0);
Print(" Times:");
IntToStr(i,&TempBuffer[0],j);
GotoXY(7,0);
Print(&TempBuffer[0]);
GotoXY(2,1);
Print("Data:");
GotoXY(7+j,1);
Print(".");
IntToStr(time[i].second,&TempBuffer[0],j);
GotoXY(7,1);
Print(&TempBuffer[0]);
IntToStr(time[i].m_second,&TempBuffer[0],k);
GotoXY(8+j,1);
Print(&TempBuffer[0]);
GotoXY(8+j+k,1);
Print("ms");
while(1)
{ key=keyScan();
if(key==41&&i>1)
{ i=i-1;break;}
if(key==43&&i<max-1)
{ i=i+1;break;}
}
}//while
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -