📄 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 &amt;
0x80;
SCLK = 1;
SCLK = 0;
SID = cmdData &amt;
0x40;
SCLK = 1;
SCLK = 0;
SID = cmdData &amt;
0x20;
SCLK = 1;
SCLK = 0;
SID = cmdData &amt;
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 &amt;
0x08;
SCLK = 1;
SCLK = 0;
SID = cmdData &amt;
0x04;
SCLK = 1;
SCLK = 0;
SID = cmdData &amt;
0x02;
SCLK = 1;
SCLK = 0;
SID = cmdData &amt;
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 &amt;
0x80;
SCLK = 1;
SCLK = 0;
SID = datData &amt;
0x40;
SCLK = 1;
SCLK = 0;
SID = datData &amt;
0x20;
SCLK = 1;
SCLK = 0;
SID = datData &amt;
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 &amt;
0x08;
SCLK = 1;
SCLK = 0;
SID = datData &amt;
0x04;
SCLK = 1;
SCLK = 0;
SID = datData &amt;
0x02;
SCLK = 1;
SCLK = 0;
SID = datData &amt;
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, "输入洋白菜价格:");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -