📄 debug.c
字号:
#include"DEBUG.H"
//////////////////////////////////////////////////////////////////////////////////////
///////////////延时函数///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
void delay() //less than 1ms
{
uchar i;
for(i=0;i<100;i++)
_nop_();
}
void delay_160ms() //160ms
{
uchar i,j;
for(i=0;i<255;i++)
{
for(j=0;j<255;j++)
{
_nop_();
}
}
}
//延时500ms秒
void delay_500ms()
{
uchar i;
for(i=0;i<2;i++)
delay_160ms();
}
//延时1S
void delay_1s() //1s
{
uint i;
for(i=0;i<45000;i++)
{
_nop_();
_nop_();
}
}
////////////////////////////////////////////////////////////////////////////////////////
/////////////液晶相关函数//////////////////////////////////////e/////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
//write command to LCM//
void write_cmd( uchar cmdData)
{
uint idata i;
SID=1;
for(i=0;i<5;i++) //5个1
{
SCLK=0;SCLK=1;
}
SCLK=0;SID=0;SCLK=1; //RW
SCLK=0;SCLK=1; //RS
SCLK=0;SCLK=1; //0
SCLK=0;SID=cmdData&0x80;SCLK=1;
SCLK=0;SID=cmdData&0x40;SCLK=1;
SCLK=0;SID=cmdData&0x20;SCLK=1;
SCLK=0;SID=cmdData&0x10;SCLK=1;
SCLK=0;SID=0;SCLK=1; //四个0
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SID=cmdData&0x08;SCLK=1;
SCLK=0;SID=cmdData&0x04;SCLK=1;
SCLK=0;SID=cmdData&0x02;SCLK=1;
SCLK=0;SID=cmdData&0x01;SCLK=1;
SCLK=0;SID=0;SCLK=1; //四个0
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;
delay();
}
//write data to LCD//
void write_data( char datData)
{
uint idata i;
SID=1; //五个 1
for(i=0;i<5;i++)
{
SCLK=0;SCLK=1;
}
SCLK=0;SID=0;SCLK=1; //RW
SCLK=0;SID=1;SCLK=1; //RS
SCLK=0;SID=0;SCLK=1;
SCLK=0;SID=datData&0x80;SCLK=1;
SCLK=0;SID=datData&0x40;SCLK=1;
SCLK=0;SID=datData&0x20;SCLK=1;
SCLK=0;SID=datData&0x10;SCLK=1;
SCLK=0;SID=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SID=datData&0x08;SCLK=1;
SCLK=0;SID=datData&0x04;SCLK=1;
SCLK=0;SID=datData&0x02;SCLK=1;
SCLK=0;SID=datData&0x01;SCLK=1;
SCLK=0;SID=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;SCLK=1;
SCLK=0;
//reset();
delay();
}
//液晶初始化函数
void init_LCD()
{
write_cmd(0x30); //功能设定:八位控制界面,基本指令集
write_cmd(0x0c); //显示状态开关:整体显示
write_cmd(0x01); //清除显示
write_cmd(0x06); //进入点设定:光标的移动方向(光标右移位址计数器加一)
write_cmd(0x01); //clear lcm screen
}
//print string to LCD///////
void put_string( uchar display_start_addr,char *str_source)
{
char idata i;
write_cmd(display_start_addr);
delay();
for( i=0;*str_source!='\0';i++)
{
write_data(*str_source);
delay();
str_source++;
}
}
//show vegetalbe type screen
void type_screen()
{
put_string(0x90," "); //显示定位
switch(vege_page_index)
{
case 0:put_string(0x80,"01白萝卜02菠菜 05大白菜06大葱 03菜花 04长茄子");break;
case 1:put_string(0x80,"07大蒜 08冬瓜 11荷兰豆12红尖椒09豆角 10佛手 ");break;
case 2:put_string(0x80,"13胡萝卜14黄豆芽17鸡腿菇18尖椒 15黄瓜 16茴香 ");break;
case 3:put_string(0x80,"19茭白 20芥菜 23空心菜24苦瓜 21金针菇22韭菜 ");break;
case 4:put_string(0x80,"25莲藕菜26绿豆芽29木耳 30南瓜 27绿尖椒28毛豆 ");break;
case 5:put_string(0x80,"31平菇 32茄子 35山药 36生菜 33芹菜 34青椒 ");break;
case 6:put_string(0x80,"37生姜 38丝瓜 41茼蒿 42土豆 39蒜苗 40蒜薹 ");break;
case 7:put_string(0x80,"43莴笋 44西红柿47西洋芹48香菜 45西葫芦46西兰花");break;
case 8:put_string(0x80,"49香椿 50香菇 53洋白菜54洋葱头51小白菜52小葱 ");break;
case 9:put_string(0x80,"55油菜 56油麦菜 57圆茄子58竹笋 ");break;
default: break; //put_string(0x80,"page does not exist"); break;
}
put_string(0x98,"选择代号:");
write_cmd(0x9d); //显示地址设为第4行第6列
put_string(0x9d,vege_type) ; //显示当前所选择的蔬菜类型
}
//蔬菜价格界面显示
void price_screen()
{
char idata a[3]={0xa3,0xaf,'\0'} ; ////////////中文字符'/'的中文字库编码
write_cmd(0x01); //全部清除显示
put_string(0x90," "); //用于显示定位,如果没有这句就经常不会正常显示
if(vege_type[0]=='0')
switch(vege_type[1])
{
case'1':put_string(0x90,"输入白萝卜价格:"); break;
case'2':put_string(0x90,"输入菠菜价格:") ; break;
case'3':put_string(0x90,"输入菜花价格:") ; break;
case'4':put_string(0x90,"输入长茄子价格:"); break;
case'5':put_string(0x90,"输入大白菜价格:"); break;
case'6':put_string(0x90,"输入大葱价格:") ; break;
case'7':put_string(0x90,"输入大蒜价格:") ; break;
case'8':put_string(0x90,"输入冬瓜价格:") ; break;
case'9':put_string(0x90,"输入豆角价格:") ; break;
default: break;
}
else if(vege_type[0]=='1')
switch(vege_type[1])
{
case'0':put_string(0x90,"输入佛手价格:") ; break;
case'1':put_string(0x90,"输入荷兰豆价格:"); break;
case'2':put_string(0x90,"输入红尖椒价格:"); break;
case'3':put_string(0x90,"输入胡萝卜价格:"); break;
case'4':put_string(0x90,"输入黄豆牙价格:"); break;
case'5':put_string(0x90,"输入黄瓜价格:") ; break;
case'6':put_string(0x90,"输入茴香价格:") ; break;
case'7':put_string(0x90,"输入鸡腿菇价格:"); break;
case'8':put_string(0x90,"输入尖椒价格:") ; break;
case'9':put_string(0x90,"输入茭白价格:") ; break;
default: break;
}
else if(vege_type[0]=='2')
switch(vege_type[1])
{
case'0':put_string(0x90,"输入芥菜价格:") ; break;
case'1':put_string(0x90,"输入金针菇价格:"); break;
case'2':put_string(0x90,"输入韭菜价格:") ; break;
case'3':put_string(0x90,"输入空心菜价格:"); break;
case'4':put_string(0x90,"输入苦瓜价格:") ; break;
case'5':put_string(0x90,"输入莲藕菜价格:"); break;
case'6':put_string(0x90,"输入绿豆牙价格:"); break;
case'7':put_string(0x90,"输入绿尖椒价格:"); break;
case'8':put_string(0x90,"输入毛豆价格:") ; break;
case'9':put_string(0x90,"输入木耳价格:") ; break;
default: break;
}
else if(vege_type[0]=='3')
switch(vege_type[1])
{
case'0':put_string(0x90,"输入南瓜价格:"); break;
case'1':put_string(0x90,"输入平菇价格:"); break;
case'2':put_string(0x90,"输入茄子价格:"); break;
case'3':put_string(0x90,"输入芹菜价格:"); break;
case'4':put_string(0x90,"输入青椒价格:"); break;
case'5':put_string(0x90,"输入山药价格:"); break;
case'6':put_string(0x90,"输入生菜价格:"); break;
case'7':put_string(0x90,"输入生姜价格:"); break;
case'8':put_string(0x90,"输入丝瓜价格:"); break;
case'9':put_string(0x90,"输入蒜苗价格:"); break;
default: break;
}
else if(vege_type[0]=='4')
switch(vege_type[1])
{
case'0':put_string(0x90,"输入蒜薹价格:") ; break;
case'1':put_string(0x90,"输入茼蒿价格:") ; break;
case'2':put_string(0x90,"输入土豆价格:") ; break;
case'3':put_string(0x90,"输入莴笋价格:") ; break;
case'4':put_string(0x90,"输入西红柿价格:"); break;
case'5':put_string(0x90,"输入西葫芦价格:"); break;
case'6':put_string(0x90,"输入西兰花价格:"); break;
case'7':put_string(0x90,"输入西洋芹价格:"); break;
case'8':put_string(0x90,"输入香菜价格:") ; break;
case'9':put_string(0x90,"输入香椿价格:") ; break;
default: break;
}
else if(vege_type[0]=='5')
switch(vege_type[1])
{
case'0':put_string(0x90,"输入香菇价格:") ; break;
case'1':put_string(0x90,"输入小白菜价格:"); break;
case'2':put_string(0x90,"输入小葱价格:") ; break;
case'3':put_string(0x90,"输入洋白菜价格:"); break;
case'4':put_string(0x90,"输入洋葱头价格:"); break;
case'5':put_string(0x90,"输入油菜价格:") ; break;
case'6':put_string(0x90,"输入油麦菜价格:"); break;
case'7':put_string(0x90,"输入圆茄子价格:"); break;
case'8':put_string(0x90,"输入竹笋价格:") ; break;
default: break;
}
write_cmd(0x9a);
put_string(0x9a,"(元 公斤)");
put_string(0x9c,a); ////第4行第5列显示中文字符'/'
}
//显示己存信息
void info_screen()
{
char idata i;
write_cmd(0x01); //清除当前显示
put_string(0x80," ");
put_string(0x80,"发送以下信息吗?");
// receive_SMS(); //receive SMS,judge the center_phone change
for(i=info_page_index*3; (i<info_page_index*3+3)&&(i<info_count);i++)
put_string(0x88+8*(i-info_page_index*3),info_string(i)) ;
}
//返回第x条信息对应的字符串
char *info_string(char x)
{
char idata i ,j=-1 ,info[8], type[9]; //, price[6];
static char idata total[17];
//读取第x条蔬菜信息存到info[]数组
for(i=0;i<strlen(sms_deliver.PDUData);i++)
{
if(sms_deliver.PDUData[i]==',')
j++;
if(j==x)
break;
}
i++; //i为第x条信息的第一个字符的索引号
j=0;
while(sms_deliver.PDUData[i]!=','&&sms_deliver.PDUData[i]!='\0')
{
info[j]=sms_deliver.PDUData[i];
j++; i++;
}
info[j]='\0';
if(info[0]=='0')
switch(info[1])
{
case'1':strcpy(type,"白萝卜:") ; break;
case'2':strcpy(type,"菠菜: ") ; break;
case'3':strcpy(type,"菜花: ") ; break;
case'4':strcpy(type,"长茄子:") ; break;
case'5':strcpy(type,"大白菜:") ; break;
case'6':strcpy(type,"大葱: ") ; break;
case'7':strcpy(type,"大蒜: ") ; break;
case'8':strcpy(type,"冬瓜: ") ; break;
case'9':strcpy(type,"豆角: ") ; break;
default: break;
}
else if(info[0]=='1')
switch(info[1])
{
case'0':strcpy(type,"佛手: ") ; break;
case'1':strcpy(type,"荷兰豆:") ; break;
case'2':strcpy(type,"红尖椒:") ; break;
case'3':strcpy(type,"胡萝卜:") ; break;
case'4':strcpy(type,"黄豆牙:") ; break;
case'5':strcpy(type,"黄瓜: ") ; break;
case'6':strcpy(type,"茴香: ") ; break;
case'7':strcpy(type,"鸡腿菇:") ; break;
case'8':strcpy(type,"尖椒: ") ; break;
case'9':strcpy(type,"茭白: ") ; break;
default: break;
}
else if(info[0]=='2')
switch(info[1])
{
case'0':strcpy(type,"芥菜: ") ; break;
case'1':strcpy(type,"金针菇:") ; break;
case'2':strcpy(type,"韭菜: ") ; break;
case'3':strcpy(type,"空心菜:") ; break;
case'4':strcpy(type,"苦瓜: ") ; break;
case'5':strcpy(type,"莲藕菜:") ; break;
case'6':strcpy(type,"绿豆牙:") ; break;
case'7':strcpy(type,"绿尖椒:") ; break;
case'8':strcpy(type,"毛豆: ") ; break;
case'9':strcpy(type,"木耳: ") ; break;
default: break;
}
else if(info[0]=='3')
switch(info[1])
{
case'0':strcpy(type,"南瓜: "); break;
case'1':strcpy(type,"平菇: "); break;
case'2':strcpy(type,"茄子: "); break;
case'3':strcpy(type,"芹菜: "); break;
case'4':strcpy(type,"青椒: "); break;
case'5':strcpy(type,"山药: "); break;
case'6':strcpy(type,"生菜: "); break;
case'7':strcpy(type,"生姜: "); break;
case'8':strcpy(type,"丝瓜: "); break;
case'9':strcpy(type,"蒜苗: "); break;
default: break;
}
else if(info[0]=='4')
switch(info[1])
{
case'0':strcpy(type,"蒜薹: ") ; break;
case'1':strcpy(type,"茼蒿: ") ; break;
case'2':strcpy(type,"土豆: ") ; break;
case'3':strcpy(type,"莴笋: ") ; break;
case'4':strcpy(type,"西红柿:") ; break;
case'5':strcpy(type,"西葫芦:") ; break;
case'6':strcpy(type,"西兰花:") ; break;
case'7':strcpy(type,"西洋芹:") ; break;
case'8':strcpy(type,"香菜: ") ; break;
case'9':strcpy(type,"香椿: ") ; break;
default: break;
}
else if(info[0]=='5')
switch(info[1])
{
case'0':strcpy(type,"香菇: ") ; break;
case'1':strcpy(type,"小白菜:") ; break;
case'2':strcpy(type,"小葱: ") ; break;
case'3':strcpy(type,"洋白菜:") ; break;
case'4':strcpy(type,"洋葱头:") ; break;
case'5':strcpy(type,"油菜: ") ; break;
case'6':strcpy(type,"油麦菜:") ; break;
case'7':strcpy(type,"圆茄子:") ; break;
case'8':strcpy(type,"竹笋: ") ; break;
default: break;
}
strcpy(total,type);
total[8]=' ';
//拷贝蔬菜价格到数组total[]中
for(j=2;j<strlen(info);j++)
total[7+j]=info[j];
for(j+=7; j<14; j++ )
total[j]=' '; //空余的数组字节置空格
total[14]=0xd4; total[15]=0xaa; //'元'的中文字库码为0xd4aa
total[16]='\0';
return(total);
}
///////////////////////////////////////////////////////////////////////////////////////
/////////////按键相关函数//////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
//数字键的响应函数
void key_num(char x)
{
char c=0x30+x; //数字x转换成ASC字符
if(display_type==0) //蔬菜品种界面
{
if(vege_type[0]=='\0'&&vege_type[1]=='\0') //尚未设定蔬菜品种
vege_type[0]=c; //把x变换成字符保存到蔬菜品种第0位
else if(vege_type[0]!='\0'&&vege_type[1]=='\0')
vege_type[1]=c; //保存到第1位
put_string(0x9d,vege_type); // 在第4行第6列处显示蔬菜种类代号
return;
}
if(display_type==1)
{
if(vege_price[0]=='\0') vege_price[0]=c; //保存蔬菜价格
else if(vege_price[1]=='\0') vege_price[1]=c;
else if(vege_price[1]=='.'&&vege_price[2]=='\0') vege_price[2]=c;
else if( (vege_price[1]=='.'||vege_price[2]=='.')&&vege_price[3]=='\0' ) vege_price[3]=c;
else if(vege_price[2]=='.'&&vege_price[4]=='\0') vege_price[4]=c;
vege_price[5]='\0';
put_string(0x8a,vege_price); //显示输入的价格
}
}
// . 键的响应函数
void key_dot()
{
if(display_type==1)
if(vege_price[0]!='\0')
if(vege_price[1]!='.'&&vege_price[2]!='.')
{
if(vege_price[1]=='\0') vege_price[1]='.';
else if(vege_price[2]=='\0') vege_price[2]='.' ;
put_string(0x8a,vege_price); //显示价格
}
return;
}
//取消键的响应函数
void key_cancel()
{
uchar idata i ;
char chu[3]={0xb3,0xfd,'\0'}; //'除'字的中文字库为0xB3FD
if(display_type==0)
{
if(vege_type[1]!='\0')
vege_type[1]='\0';
else if(vege_type[0]!='\0')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -