现在我的这个菜单项目终于完成了,功能部分只有部分实现,颜色识别没有实现,另外就是录音和MP3播放,一来是没有模块,在一个端口不够了。
先上图
这个是程序调用的框图,简化版的非标准程序框图,只是让大家知道有几个函数在调用,当然了也不是全部的函数。
下一个是整体的模块硬件图
系统运行时的几个画面
再然后就是冗长的代码了
[pre lang="arduino" line="1" file="LCD"]#include "Wire.h"
//////////////////////// 传感器引脚定义 /////////////////////////////
#define ALCOHOL_AINPUT A6 //D20
#define ALCOHOL_DINPUT 21
#define COMBUST_AINPUT A6 //D20
#define COMBUST_DINPUT 21
#define MIC_AINPUT A6 //D20
#define MIC_DINPUT 21
#define COLOR_S0 20 // A6
#define COLOR_S1 21 // A7
#define COLOR_S2 0
#define COLOR_S3 1
#define COLOR_OUT 2
#define COLOR_LED 13
#define TEMPE_HUMI_IN 13
////////////////////////// 按键扫盲引脚 定义 /////////////
#define SHIFTKEYS 17 // A3
#define SCANROW_1 16 // A2
#define SCANROW_2 15 // A1
#define SCANROW_3 14 // A0
#define READCOL_1 4
#define READCOL_2 5
#define READCOL_3 6
#define READCOL_4 7
//////////// LCD 接口定义//////////////////////
#define PIN_RESET 12
#define PIN_SCE 11
#define PIN_DC 10
#define PIN_SDIN 9
#define PIN_SCLK 8
#define BACKLIGHT 3
///////////// LCD 状态控制 ///////////////////
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_CMD 0
//////////// LCD 屏幕大小 ////////////////////
#define LCD_X 84
#define LCD_Y 48
///////////////////// DS1307寄存器变量定义 /////
#define DS1307_ADDRESS 0x68
#define DS1307_STOP_START 0x00
#define DS1307_REG_SECOND 0x00
#define DS1307_REG_MINITUE 0x01
#define DS1307_REG_HOURS 0x02
#define DS1307_REG_WEEK 0x03
#define DS1307_REG_DATE 0x04
#define DS1307_REG_MONTH 0x05
#define DS1307_REG_YEAR 0x06
#define DS1307_REG_CTRL 0x07
#define DS1307_HOUR_12 0x40
#define DS1307_HOUR_24 0x00
#define DS1307_START 0x00
#define DS1307_STOP 0x80
///////////////// 时间寄存器选择 /////////////////////
#define YEAR 6
#define MONTH 5
#define DATE 4
#define WEEK 3
#define HOURS 2
#define MINITUES 1
#define SECOND 0
/////////////////英文 ASCII 字符定义///////////
static const byte ASCII[][5] =
{
{0x00, 0x00, 0x00, 0x00, 0x00} // 20 空格
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c &
,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0xff, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ←
,{0x00, 0x06, 0x09, 0x09, 0x06} // 7f →
};
/////////////////// 符号定义 ////////////////////////
static const byte SYMBOL[][8] =
{
{0x00,0x00,0x3E,0x1C,0x08,0x00,0x00,0x00},//
{0x00,0x00,0x3E,0x3E,0x00,0x3E,0x3E,0x00},//
{0x00,0x00,0x3E,0x3E,0x3E,0x3E,0x3E,0x00},//
{0x00,0x00,0x08,0x1C,0x3E,0x00,0x00,0x00},//
{0x00,0x00,0x3E,0x08,0x1C,0x3E,0x00,0x00},//
{0x00,0x00,0x3E,0x1C,0x08,0x3E,0x00,0x00},//
{0x00,0x00,0x08,0x1C,0x3E,0x1C,0x08,0x00},//
{0x00,0x18,0x20,0x6E,0x6E,0x20,0x18,0x00},//
{0x00,0x00,0x08,0x12,0x7A,0x0E,0x00,0x00},//
{0x00,0x04,0x0A,0x2A,0x54,0x50,0x20,0x00},//
{0x00,0x00,0x02,0x06,0x0E,0x06,0x02,0x00},//
{0x00,0x00,0x40,0x60,0xE0,0x60,0x40,0x00},//
{0x00,0xC3,0x42,0x42,0x42,0xC3,0x00,0x00},//
{0x00,0x00,0x00,0x00,0x0E,0x0A,0x0E,0x00},
};
////////////////////全局变量定义//////////////
byte menucount;
boolean keystatus;
byte frequencecount;
////////////////////// 传感器初始化 //////////
void alcoholInti()
{
pinMode(ALCOHOL_AINPUT,INPUT);
pinMode(ALCOHOL_DINPUT,INPUT);
}
void combustInti()
{
pinMode(COMBUST_AINPUT,INPUT);
pinMode(COMBUST_DINPUT,INPUT);
}
void noiseInti()
{
pinMode(MIC_AINPUT,INPUT);
pinMode(MIC_DINPUT,INPUT);
}
void colorInti()
{
pinMode(COLOR_S0 ,OUTPUT);
pinMode(COLOR_S1 ,OUTPUT);
pinMode(COLOR_S2 ,OUTPUT);
pinMode(COLOR_S3 ,OUTPUT);
pinMode(COLOR_OUT,INPUT);
pinMode(COLOR_LED,OUTPUT);
}
/////////////////// 中断函数,频率计数 //////////////////////
void frequence()
{
frequencecount ++;
}
///////////////// 酒精数据读取 ////////////////////////////////////////
byte alcoholRead()
{
int temp;
byte alcohol;
temp = analogRead(ALCOHOL_AINPUT);
alcohol = map(temp,0,1023,0,255) ; //
//delay(5);
return alcohol;
}
//////////////// 可燃气体数据读取 /////////////////////////////////////
byte combustibleRead()
{
int temp;
byte combustible;
temp = analogRead(COMBUST_AINPUT);
combustible = map(temp,0,1023,0,255);
//delay(5);
return combustible;
}
////////////////// 噪音数据读取 ////////////////////////////////////////
byte noiseRead()
{
int temp;
byte nosie;
temp = analogRead(MIC_AINPUT);
nosie = map(temp,0,1023,0,255);
//delay(5);
return nosie;
}
//////////////////////////////////颜色读取函数/////////////////////////////
byte colorRead()
{
}
////////////////////////////////////白平衡设置函数///////////////////////////
boolean color_WB_set()
{
}
///////////////////////////////////温湿度读取函数/////////////////////////////
byte tempe_humiRead(byte *re_ar)
{
byte tempvalue[5];
byte cnt = 7;
byte idx = 0;
for (int i=0; i< 5; i++) tempvalue = 0;
pinMode(TEMPE_HUMI_IN, OUTPUT);
digitalWrite(TEMPE_HUMI_IN, LOW);
delay(18);
digitalWrite(TEMPE_HUMI_IN, HIGH);
delayMicroseconds(40);
pinMode(TEMPE_HUMI_IN, INPUT);
unsigned int cyclecount = 10000;
while(digitalRead(TEMPE_HUMI_IN) == LOW)
if (cyclecount-- == 0) return -1;
cyclecount = 10000;
while(digitalRead(TEMPE_HUMI_IN) == HIGH)
if (cyclecount-- == 0) return -1;
for (int i=0; i<40; i++)
{
cyclecount = 10000;
while(digitalRead(TEMPE_HUMI_IN) == LOW)
if (cyclecount-- == 0) return -1;
unsigned long t = micros();
cyclecount = 10000;
while(digitalRead(TEMPE_HUMI_IN) == HIGH)
if (cyclecount-- == 0) return -1;
if ((micros() - t) > 40) tempvalue[idx] |= (1 << cnt);
if (cnt == 0) // 位计数
{
cnt = 7; // 数据传输从高到低
idx++; // 字节计数
}
else cnt--;
}
// tempvalue[1] 和tempvalue[3] 总是为零
re_ar[0] = tempvalue[0];
re_ar[1] = tempvalue[2];
uint8_t sum = tempvalue[0] + tempvalue[2];
if (tempvalue[4] != sum) return -2;
return 1;
}
/////////////////////写寄存器/////////////////////////////////////////
void registerSet(byte deviceAddress, byte registerAddress, byte registerValue)
{
Wire.beginTransmission(deviceAddress);
Wire.write(registerAddress);
Wire.write(registerValue);
Wire.endTransmission();
}
//////////////////// 读寄存器 ////////////////////////////////////////
void registerRead(byte deviceAddress, byte registerAddress, byte *registerValue,byte n)
{
byte temp[n];
Wire.beginTransmission(deviceAddress);
Wire.write(registerAddress);
Wire.endTransmission();
Wire.requestFrom(deviceAddress,n);
if(Wire.available() <= n);;
{
for( byte i = 0 ; i < n ; i++)
registerValue = Wire.read();
}
Wire.endTransmission();
}
//////////////////////获取时间 返回时间存储在 timevalue数组中 ////////////
void timeGet(byte deviceAddress, byte registerAddress,byte *timevalue)
{
byte rtc[7];
registerRead(deviceAddress,registerAddress,rtc,7);
timevalue[6] = ((rtc[6] & 0xF0 ) >> 4 ) + (rtc[6] & 0x0F ); //year
timevalue[5] = ((rtc[5] & 0x10 ) >> 4 ) + (rtc[5] & 0x0F ); //month
timevalue[4] = ((rtc[4] & 0x30 ) >> 4 ) + (rtc[4] & 0x0F ); //date
timevalue[3] = rtc[3] & 0x07; //week
timevalue[2] = ((rtc[2] & 0x30 ) >> 4 ) + (rtc[2] & 0x0F ); //hour
timevalue[1] = ((rtc[1] & 0x70 ) >> 4 ) + (rtc[1] & 0x0F ); //minitue
timevalue[0] = ((rtc[0] & 0x70 ) >> 4 ) + (rtc[0] & 0x0F ); //second
}
//////////////////// 时间设置,按照年月日,时分秒,星期 输入////////////////////
byte timeSet(byte yr,byte mh,byte da,byte hr,byte mt,byte se,byte we)
{
/////////确保时间日期输入不超范围////////////////////////////////////////////////////////
if ( yr < 0 || yr > 99 ) return 99;
if ( mh < 0 || mh > 12 ) return 12;
if ( da < 0 || da > 31 ) return 31;
if ( hr < 0 || hr > 23 ) return 24;
if ( mt < 0 || mt > 59 ) return 60;
if ( se < 0 || se > 59 ) return 60;
if ( we < 0 || we > 7 ) return 7;
else return -1;
//////////////////// 时间转化为BCD格式 (寄存器格式)////////////////
yr = (( yr / 10 ) << 4 ) + ( yr % 10 );
mh = (( mh / 10 ) << 4 ) + ( mh % 10 );
da = (( da / 10 ) << 4 ) + ( da % 10 );
hr = (( hr / 10 ) << 4 ) + ( hr % 10 );
hr = hr | DS1307_HOUR_24 ;
mt = (( mt / 10 ) << 4 ) + ( mt % 10 );
se = (( se / 10 ) << 4 ) + ( se % 10 );
we = we ;
///////////////////写寄存器数据,设置时间初始值/////////////////////////////////
registerSet(DS1307_ADDRESS,DS1307_STOP_START,DS1307_STOP); //时钟计数器停止
registerSet(DS1307_ADDRESS,DS1307_REG_SECOND,se); //设置秒
registerSet(DS1307_ADDRESS,DS1307_REG_MINITUE,mt); //设置分钟
registerSet(DS1307_ADDRESS,DS1307_REG_HOURS,hr); //设置时
registerSet(DS1307_ADDRESS,DS1307_REG_WEEK,we); //设置星期
registerSet(DS1307_ADDRESS,DS1307_REG_DATE,da); //设置日
registerSet(DS1307_ADDRESS,DS1307_REG_MONTH,mh); //设置月
registerSet(DS1307_ADDRESS,DS1307_REG_YEAR,yr); //设置年
registerSet(DS1307_ADDRESS,DS1307_REG_CTRL,0x13); //输出控制 (32hz)
registerSet(DS1307_ADDRESS,DS1307_STOP_START,DS1307_START); //时钟计数器开始
return 1;
}
void outputCtrl(byte Hz)
{
byte ctrl_value;
switch (Hz)
{
case 0 :
ctrl_value = 0x00;
break;
case 1 :
ctrl_value = 0x10;
break;
case 4 :
ctrl_value = 0x11;
break;
case 8 :
ctrl_value = 0x12;
break;
case 32:
ctrl_value = 0x13;
break;
default :
ctrl_value = 0x80;
break;
}
registerSet(DS1307_ADDRESS,DS1307_REG_CTRL,ctrl_value); //输出控制
}
////////////////// 将星期数字转化为字符串 ///////////////////////
char* weektoString(byte week)
{
char *weekstring[4];
switch(week)
{
case 1 :
weekstring[4] = "Mon " ;
return weekstring[4];
break;
case 2 :
weekstring[4] = "Thue" ;
return weekstring[4];
break;
case 3 :
weekstring[4] = "Wed " ;
return weekstring[4];
break;
case 4 :
weekstring[4] = "Turs" ;
return weekstring[4];
break;
case 5 :
weekstring[4] = "Fri " ;
return weekstring[4];
break;
case 6 :
weekstring[4] = "Sat " ;
return weekstring[4];
break;
case 7 :
weekstring[4] = "Sun " ;
return weekstring[4];
break;
default :
weekstring[4] = "Err ";
return weekstring[4];
break;
}
}
//////////////清屏////////////////////////////
void lcdClear(void)
{
for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
{
lcdWrite(LCD_D, 0x00);
}
}
//////////////////// 初始化屏幕 //////////////
void lcdInitialise(void)
{
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
pinMode(BACKLIGHT, OUTPUT);
digitalWrite(PIN_RESET, LOW);
digitalWrite(PIN_RESET, HIGH);
analogWrite( BACKLIGHT,150);
lcdWrite(LCD_CMD, 0x21); // LCD 扩展命令模式
lcdWrite(LCD_CMD, 0xBf); // LCD 偏置电压设定
lcdWrite(LCD_CMD, 0x04); // LCD 温度补偿设定
lcdWrite(LCD_CMD, 0x13); // LCD 对比度 设定
lcdWrite(LCD_CMD, 0x0C); // LCD 增量模式
lcdWrite(LCD_C, 0x20);
lcdWrite(LCD_C, 0x0C);
}
///////////// 英文字符串显示 ///////////////
void lcdString(char *characters)
{
while (*characters)
{
lcdCharacter(*characters++);
}
}
/////////////// 反色显示 //////////////////////
void lcdStringB(char *characters)
{
while (*characters)
{
lcdCharacterB(*characters++);
}
}
/////////////////// 上划线 ////////////////////
void lcdStringS(char *characters)
{
while (*characters)
{
lcdCharacterS(*characters++);
}
}
////////////////// 下划线 ////////////////////////
void lcdStringU(char *characters)
{
while (*characters)
{
lcdCharacterU(*characters++);
}
}
/////////////////显示英文字符//////////////////////
void lcdCharacter(char character)
{
lcdWrite(LCD_D, 0x00);
for (byte index = 0; index < 5; index++)
{
lcdWrite(LCD_D, ASCII[character - 0x20][index]);
}
//lcdWrite(LCD_D, 0x00);
}
//////////////////////////////////////////////////
void lcdCharacterB(char character)
{
byte temp;
lcdWrite(LCD_D, 0xFF);
for (byte index = 0; index < 5; index++)
{
temp = ASCII[character - 0x20][index];
lcdWrite(LCD_D, ~temp);
}
//lcdWrite(LCD_D, 0x00);
}
/////////////////////////////////////////////////////
void lcdCharacterS(char character)
{
byte temp;
lcdWrite(LCD_D, 0x01);
for (byte index = 0; index < 5; index++)
{
temp = ASCII[character - 0x20][index];
temp = temp | 0x01;
lcdWrite(LCD_D, temp);
}
//lcdWrite(LCD_D, 0x00);
}
///////////////////////////////////////////////////
void lcdCharacterU(char character)
{
byte temp;
lcdWrite(LCD_D, 0x80);
for (byte index = 0; index < 5; index++)
{
temp = ASCII[character - 0x20][index];
temp = temp | 0x80;
lcdWrite(LCD_D, temp);
}
//lcdWrite(LCD_D, 0x00);
}
///////////////////////////////////////////
void lcdSymbol(byte symbol)
{
lcdWrite(LCD_D, 0x00);
for (byte index = 0; index < 8; index++)
{
lcdWrite(LCD_D, SYMBOL[symbol][index]);
}
//lcdWrite(LCD_D, 0x00);
}
//////////////////////////////////////////////////
void lcdSymbolB(byte symbol)
{
byte temp;
lcdWrite(LCD_D, 0xFF);
for (byte index = 0; index < 8; index++)
{
temp = SYMBOL[symbol][index];
lcdWrite(LCD_D, ~temp);
}
//lcdWrite(LCD_D, 0x00);
}
//////////////// 屏幕写操作 //////////////
void lcdWrite(byte dc, byte data)
{
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
//////////////字符位置设定////////////////
void gotoXY(byte x, byte y)
{
lcdWrite( 0, 0x80 | x); // 列
lcdWrite( 0, 0x40 | y); // 行
}
//////////////字符串滚动///////////////
void stringScroll(String message)
{
byte scrollPosition = -10;
for (byte i = scrollPosition; i < scrollPosition + 11; i++)
{
if ((i >= message.length()) || (i < 0))
{
lcdCharacter(' ');
}
else
{
lcdCharacter(message.charAt(i));
}
}
scrollPosition++;
if ((scrollPosition >= message.length()) && (scrollPosition > 0))
{
scrollPosition = -10;
}
}
///////////////////////// 键盘初始化 /////////////////////////////
void keyInti()
{
pinMode(SCANROW_1,OUTPUT);
pinMode(SCANROW_2,OUTPUT);
pinMode(SCANROW_3,OUTPUT);
pinMode(READCOL_1,INPUT);
pinMode(READCOL_2,INPUT);
pinMode(READCOL_3,INPUT);
pinMode(READCOL_4,INPUT);
}
///////////////////// 按键读取 /////////////////////////
char keyRead()
{
byte scanarr[3],readarr[4];
byte i,j;
byte keytemp;
char keyvalue;
boolean flag;
scanarr[0] = SCANROW_1;
scanarr[1] = SCANROW_2;
scanarr[2] = SCANROW_3;
readarr[0] = READCOL_1;
readarr[1] = READCOL_2;
readarr[2] = READCOL_3;
readarr[3] = READCOL_4;
flag = false;
keyvalue = 0xFF;
for ( i = 0 ; i < 3 ; i++ )
{
digitalWrite(scanarr,HIGH);
delay(2);
for ( j = 0 ; j < 4 ; j++ )
{
//if ( digitalRead(readarr[j]) == LOW )
{
//delay(5);
if ( digitalRead(readarr[j]) == HIGH )
{
keytemp = 0x00;
bitWrite( keytemp , 6-i , 1 ) ;
//delay(2);
bitWrite( keytemp , 3-j , 1 ) ;
//delay(2);
flag = true;
//Serial.println(keytemp,HEX);
break;
}
}
}
digitalWrite(scanarr,LOW);
delay(2);
if ( digitalRead(SHIFTKEYS) )
{
delay(5);
bitWrite( keytemp , 7 , 1 ) ;
}
if ( flag) break;
}
switch( keytemp)
{
case 0x00 : keyvalue = 'K' ; break;
case 0x11 : keyvalue = 'O' ; break;
case 0x12 : keyvalue = 'F' ; break;
case 0x14 : keyvalue = 'N' ; break;
case 0x18 : keyvalue = 'P' ; break;
case 0x21 : keyvalue = 'U' ; break;
case 0x22 : keyvalue = 'M' ; break;
case 0x24 : keyvalue = 'D' ; break;
case 0x28 : keyvalue = 'T' ; break;
case 0x41 : keyvalue = 'E' ; break;
case 0x42 : keyvalue = 'B' ; break;
case 0x44 : keyvalue = 'C' ; break;
case 0x48 : keyvalue = 'R' ; break;
default : keyvalue = 'Q' ; break;
}
return keyvalue;
}
///////////////////// 菜单函数 ////////////////////////////
byte screen_play()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("PLAY");
gotoXY(0,1);
lcdSymbolB(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Mode");
gotoXY(75,1);
lcdSymbol(0);
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Reverb");
gotoXY(75,2);
lcdSymbol(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Equalizer");
gotoXY(75,3);
lcdSymbol(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 1;
}
byte screen_play_mode()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("PLAY");
gotoXY(0,1);
lcdSymbolB(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdStringB("Mode");
gotoXY(75,1);
lcdSymbolB(0);
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Reverb");
gotoXY(75,2);
lcdSymbol(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Equalizer");
gotoXY(75,3);
lcdSymbol(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 11;
}
byte screen_play_mode_allrepeat()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Mode");
gotoXY(0,1);
lcdStringB("All repeat");
gotoXY(0,2);
lcdString("Repeat");
gotoXY(0,3);
lcdString("Random");
gotoXY(8,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 111;
}
byte screen_play_mode_repeat()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Mode");
gotoXY(0,1);
lcdString("All repeat");
gotoXY(0,2);
lcdStringB("Repeat");
gotoXY(0,3);
lcdString("Random");
gotoXY(8,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 112;
}
byte screen_play_mode_random()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Mode");
gotoXY(0,1);
lcdString("All repeat");
gotoXY(0,2);
lcdString("Repeat");
gotoXY(0,3);
lcdStringB("Random");
gotoXY(8,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 113;
}
byte screen_play_reverb()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("PLAY");
gotoXY(0,1);
lcdSymbolB(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Mode");
gotoXY(75,1);
lcdSymbol(0);
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdStringB("Reverb");
gotoXY(75,2);
lcdSymbolB(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Equalizer");
gotoXY(75,3);
lcdSymbol(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 12;
}
byte screen_play_reverb_none()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Reverb");
gotoXY(0,1);
lcdStringB("None");
gotoXY(0,2);
lcdString("Studio");
gotoXY(0,3);
lcdString("Club");
gotoXY(0,4);
lcdString("Hall");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 121;
}
byte screen_play_reverb_studio()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Reverb");
gotoXY(0,1);
lcdString("None");
gotoXY(0,2);
lcdStringB("Studio");
gotoXY(0,3);
lcdString("Club");
gotoXY(0,4);
lcdString("Hall");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 122;
}
byte screen_play_reverb_club()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Reverb");
gotoXY(0,1);
lcdString("None");
gotoXY(0,2);
lcdString("Studio");
gotoXY(0,3);
lcdStringB("Club");
gotoXY(0,4);
lcdString("Hall");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 123;
}
byte screen_play_reverb_hall()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Reverb");
gotoXY(0,1);
lcdString("None");
gotoXY(0,2);
lcdString("Studio");
gotoXY(0,3);
lcdString("Club");
gotoXY(0,4);
lcdStringB("Hall");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 124;
}
byte screen_play_equa()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("PLAY");
gotoXY(0,1);
lcdSymbolB(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Mode");
gotoXY(75,1);
lcdSymbol(0);
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Reverb");
gotoXY(75,2);
lcdSymbol(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdStringB("Equalizer");
gotoXY(75,3);
lcdSymbolB(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 13;
}
byte screen_play_equa_none()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Equalizer");
gotoXY(0,1);
lcdStringB("None");
gotoXY(0,2);
lcdString("Classical");
gotoXY(0,3);
lcdString("Jazz");
gotoXY(0,4);
lcdString("Rock");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 131;
}
byte screen_play_equa_classical()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Equalizer");
gotoXY(0,1);
lcdString("None");
gotoXY(0,2);
lcdStringB("Classical");
gotoXY(0,3);
lcdString("Jazz");
gotoXY(8,4);
lcdString("Rock");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 132;
}
byte screen_play_equa_jazz()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Equalizer");
gotoXY(0,1);
lcdString("None");
gotoXY(0,2);
lcdString("Classical");
gotoXY(0,3);
lcdStringB("Jazz");
gotoXY(0,4);
lcdString("Rock");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 133;
}
byte screen_play_equa_rock()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("PLAY/Equalizer");
gotoXY(0,1);
lcdString("None");
gotoXY(0,2);
lcdString("Classical");
gotoXY(0,3);
lcdString("Jazz");
gotoXY(0,4);
lcdStringB("Rock");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 134;
}
byte screen_recorder()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("RECORDER");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Mode");
gotoXY(75,1);
lcdSymbol(0);
gotoXY(0,2);
lcdSymbolB(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Mic");
gotoXY(75,2);
lcdSymbol(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Display");
//gotoXY(75,3);
//lcdSymbol(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 2;
}
byte screen_recorder_mode()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("RECORDER");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdStringB("Mode");
gotoXY(75,1);
lcdSymbolB(0);
gotoXY(0,2);
lcdSymbolB(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Mic");
gotoXY(75,2);
lcdSymbol(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Display");
//gotoXY(75,3);
//lcdSymbol(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 21;
}
byte screen_recorder_mode_mp3()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode");
gotoXY(0,1);
lcdStringB("MP3");
//gotoXY(75,1);
//lcdSymbol(0);
gotoXY(0,2);
lcdString("WMA");
//gotoXY(75,2);
//lcdSymbol(0);
gotoXY(0,3);
lcdString("PCM");
//gotoXY(75,3);
//lcdSymbol(0);
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 211;
}
void screen_recorder_mode_mp3_320()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/MP3");
gotoXY(0,1);
lcdStringB("320kbps");
gotoXY(0,2);
lcdString("256kbps");
gotoXY(0,3);
lcdString("128kbps");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
void screen_recorder_mode_mp3_256()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/MP3");
gotoXY(0,1);
lcdString("320kbps");
gotoXY(0,2);
lcdStringB("256kbps");
gotoXY(0,3);
lcdString("128kbps");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
void screen_recorder_mode_mp3_128()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/MP3");
gotoXY(0,1);
lcdString("320kbps");
gotoXY(0,2);
lcdString("256kbps");
gotoXY(0,3);
lcdStringB("128kbps");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
byte screen_recorder_mode_wma()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode");
gotoXY(0,1);
lcdString("MP3");
//gotoXY(75,1);
//lcdSymbol(0);
gotoXY(0,2);
lcdStringB("WMA");
//gotoXY(75,2);
//lcdSymbol(0);
gotoXY(0,3);
lcdString("PCM");
//gotoXY(75,3);
//lcdSymbol(0);
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 212;
}
void screen_recorder_mode_wma_160()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/WMA");
gotoXY(0,1);
lcdStringB("160kbps");
gotoXY(0,2);
lcdString("128kbps");
gotoXY(0,3);
lcdString("64kbps");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
void screen_recorder_mode_wma_128()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/WMA");
gotoXY(0,1);
lcdString("160kbps");
gotoXY(0,2);
lcdStringB("128kbps");
gotoXY(0,3);
lcdString("64kbps");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
void screen_recorder_mode_wma_64()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/WMA");
gotoXY(0,1);
lcdString("160kbps");
gotoXY(0,2);
lcdString("128kbps");
gotoXY(0,3);
lcdStringB("64kbps");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
byte screen_recorder_mode_pcm()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode");
gotoXY(0,1);
lcdString("MP3");
//gotoXY(75,1);
//lcdSymbol(0);
gotoXY(0,2);
lcdString("WMA");
//gotoXY(75,2);
//lcdSymbol(0);
gotoXY(0,3);
lcdStringB("PCM");
//gotoXY(75,3);
//lcdSymbol(0);
gotoXY(8,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 213;
}
void screen_recorder_mode_pcm_high()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/PCM");
gotoXY(0,1);
lcdStringB("HIGH");
gotoXY(0,2);
lcdString("LOW");
gotoXY(0,3);
lcdString("");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
void screen_recorder_mode_pcm_low()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mode/PCM");
gotoXY(0,1);
lcdString("HIGH");
gotoXY(0,2);
lcdStringB("LOW");
gotoXY(0,3);
lcdString("");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
}
byte screen_recorder_mic()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("RECORDER");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Mode");
gotoXY(75,1);
lcdSymbol(0);
gotoXY(0,2);
lcdSymbolB(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdStringB("Mic");
gotoXY(75,2);
lcdSymbolB(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Display");
//gotoXY(75,3);
//lcdSymbol(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 22;
}
byte screen_recorder_mic_buildin()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mic");
gotoXY(0,1);
lcdStringB("BuildIn");
gotoXY(0,2);
lcdString("External");
gotoXY(0,3);
lcdString("");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 221;
}
byte screen_recorder_mic_external()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("RECORDER/Mic");
gotoXY(0,1);
lcdString("BuildIn");
gotoXY(0,2);
lcdStringB("External");
gotoXY(0,3);
lcdString("");
gotoXY(0,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 222;
}
byte screen_recorder_display()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("RECORDER");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Mode");
gotoXY(75,1);
lcdSymbol(0);
gotoXY(0,2);
lcdSymbolB(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Mic");
gotoXY(75,2);
lcdSymbol(0);
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdStringB("Display");
//gotoXY(75,3);
//lcdSymbolB(0);
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 23;
}
byte screen_tool()
{
for ( byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("TOOLS");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("alcohol");
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Combust");
gotoXY(0,3);
lcdSymbolB(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Color Test");
gotoXY(0,4);
lcdSymbol(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("Noise");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 3;
}
byte screen_tools_alcohol()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("TOOLS/alcohol");
gotoXY(0,1);
lcdStringB("alcohol");
gotoXY(0,2);
lcdString("Combust");
gotoXY(0,3);
lcdString("Color Test");
gotoXY(0,4);
lcdString("Noise");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 31;
}
byte screen_tools_combust()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("TOOLS/COMBUST");
gotoXY(0,1);
lcdString("alcohol");
gotoXY(0,2);
lcdStringB("Combust");
gotoXY(0,3);
lcdString("Color Test");
gotoXY(0,4);
lcdString("Noise");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 32;
}
byte screen_tools_color()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("TOOLS/COLOR");
gotoXY(0,1);
lcdString("alcohol");
gotoXY(0,2);
lcdString("Combust");
gotoXY(0,3);
lcdStringB("Color Test");
gotoXY(0,4);
lcdString("Noise");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 33;
}
byte screen_tools_noise()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(0,0);
lcdStringU("TOOLS/Noise");
gotoXY(0,1);
lcdString("alcohol");
gotoXY(0,2);
lcdString("Combust");
gotoXY(0,3);
lcdString("Color Test");
gotoXY(0,4);
lcdStringB("Noise");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 34;
}
byte screen_setup()
{
for ( byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("SETUP");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Date & Time");
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Screen");
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Power");
gotoXY(0,4);
lcdSymbolB(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("Version");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 4;
}
byte screen_setup_datetime()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("SETUP");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdStringB("Date & Time");
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Screen");
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Power");
gotoXY(0,4);
lcdSymbolB(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("Version");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 41;
}
byte screen_setup_screen()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("SETUP");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Date & Time");
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdStringB("Screen");
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Power");
gotoXY(0,4);
lcdSymbolB(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("Version");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 42;
}
byte screen_setup_power()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("SETUP");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Date & Time");
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Screen");
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdStringB("Power");
gotoXY(0,4);
lcdSymbolB(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdString("Version");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 43;
}
byte screen_setup_version()
{
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x80);
}
gotoXY(2,0);
lcdStringU("SETUP");
gotoXY(0,1);
lcdSymbol(0);
gotoXY(8,1);
lcdWrite(1,0xFF);
gotoXY(10,1);
lcdString("Date & Time");
gotoXY(0,2);
lcdSymbol(7);
gotoXY(8,2);
lcdWrite(1,0xFF);
gotoXY(10,2);
lcdString("Screen");
gotoXY(0,3);
lcdSymbol(8);
gotoXY(8,3);
lcdWrite(1,0xFF);
gotoXY(10,3);
lcdString("Power");
gotoXY(0,4);
lcdSymbolB(9);
gotoXY(8,4);
lcdWrite(1,0xFF);
gotoXY(10,4);
lcdStringB("Version");
for (byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,5);
lcdWrite(1,0xFF);
}
gotoXY(1,5);
lcdStringB(" EXIT ");
gotoXY(60,5);
lcdStringB(" OK ");
return 44;
}
void alcohol_Dis(byte v)
{
//
char str[3];
sprintf(str, "%d", v);
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 0 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 1 , 0 );
lcdStringB("ALCOHIL TEST");
gotoXY( 1 , 2 );
lcdString("Alcohil: ");
lcdString(str);//
lcdCharacter('%');
if ( digitalRead( ALCOHOL_DINPUT))
{
gotoXY( 1 , 4 );
lcdString(" WARNING... ");
gotoXY( 1 , 4 );
lcdString(" ");
}
else
{
lcdString(" ");
}
for ( int i = 0 ; i < 84 ; i ++ )
{
gotoXY( 0 , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
}
void combust_Dis(byte v)
{
char str[3];
sprintf(str, "%d", v);
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 0 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 1 , 0 );
lcdStringB("COMBUST TEST");
gotoXY( 1 , 2 );
lcdString("Combust: ");
lcdString(str);//
lcdCharacter('%');
if ( digitalRead(COMBUST_DINPUT))
{
gotoXY( 1 , 4 );
lcdString(" WARNING... ");
gotoXY( 1 , 4 );
lcdString(" ");
}
else
{
lcdString(" ");
}
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
}
void noise_Dis(byte v )
{
char str[3];
sprintf(str, "%d", v);
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 0 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 1 , 0 );
lcdStringB("NOISE TEST");
gotoXY( 1 , 2 );
lcdString("Noise ");
lcdString(str);//
lcdString("dB");
if ( digitalRead(MIC_DINPUT))
{
gotoXY( 1 , 4 );
lcdString(" WARNING... ");
gotoXY( 1 , 4 );
lcdString(" ");
}
else
{
lcdString(" ");
}
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
}
void color_Dis( byte r,byte g,byte b)
{
char str[3];
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 0 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 1 , 0 );
lcdStringB("COLOR TEST");
gotoXY( 1 , 2 );
lcdString("R : ");
sprintf(str, "%d", r);
lcdString(str);//
gotoXY( 1 , 3 );
lcdString("G : ");
sprintf(str, "%d", g);
lcdString(str);//
gotoXY( 1 , 4 );
lcdString("B : ");
sprintf(str, "%d", b);
lcdString(str);//
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
}
boolean color_wb_Dis()
{
char str[3];
byte r,g,b;
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 0 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 1 , 0 );
lcdStringB("WB SET");
gotoXY( 1 , 2 );
lcdString("R : ");
sprintf(str, "%d", r);
lcdString(str);//
gotoXY( 1 , 3 );
lcdString("G : ");
sprintf(str, "%d", g);
lcdString(str);//
gotoXY( 1 , 4 );
sprintf(str, "%d", b);
lcdString(str);
lcdString(" 200 ");//
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " CONTINUE ");
//if (v != 0 ) return 1;
//return 0;
}
void datetime_setup(byte k,byte v)
{
char str[2];
sprintf(str, "%02d", v);
switch(k)
{
case 1 :
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x00);
}
gotoXY(12,0);
lcdSymbol(11);
gotoXY(10,1);
lcdString(str);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,2);
lcdWrite(1,0x00);
}
gotoXY(12,2);
lcdSymbol(10);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,4);
lcdWrite(1,0x00);
}
break;
case 2 :
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x00);
}
gotoXY(27,0);
lcdSymbol(11);
gotoXY(25,1);
lcdString(str);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,2);
lcdWrite(1,0x00);
}
gotoXY(27,2);
lcdSymbol(10);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,4);
lcdWrite(1,0x00);
}
break;
case 3 :
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x00);
}
gotoXY(42,0);
lcdSymbol(11);
gotoXY(40,1);
lcdString(str);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,2);
lcdWrite(1,0x00);
}
gotoXY(42,2);
lcdSymbol(10);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,4);
lcdWrite(1,0x00);
}
break;
case 4 :
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x00);
}
gotoXY(60,0);
lcdSymbol(11);
gotoXY(55,1);
lcdString(weektoString(v-1));
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,2);
lcdWrite(1,0x00);
}
gotoXY(60,2);
lcdSymbol(10);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,4);
lcdWrite(1,0x00);
}
break;
case 5 :
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x00);
}
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,2);
lcdWrite(1,0x00);
}
gotoXY(12,2);
lcdSymbol(11);
gotoXY(10,3);
lcdString(str);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,4);
lcdWrite(1,0x00);
}
gotoXY(12,4);
lcdSymbol(10);
break;
case 6 :
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x00);
}
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,2);
lcdWrite(1,0x00);
}
gotoXY(27,2);
lcdSymbol(11);
gotoXY(25,3);
lcdString(str);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,4);
lcdWrite(1,0x00);
}
gotoXY(27,4);
lcdSymbol(10);
break;
case 7 :
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0x00);
}
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,2);
lcdWrite(1,0x00);
}
gotoXY(42,2);
lcdSymbol(11);
gotoXY(40,3);
lcdString(str);
for( int i = 0 ; i < 84 ; i ++)
{
gotoXY(i,4);
lcdWrite(1,0x00);
}
gotoXY(42,4);
lcdSymbol(10);
break;
default : break;
}
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
gotoXY( 50 , 5 );
lcdStringB( " SAVE ");
}
void datetime_setup_inti(byte *v)
{
char str[2];
sprintf(str, "%02d", v);
gotoXY( 0 , 1 );
lcdString( "20");
sprintf(str, "%02d", v[6]);
lcdString( str );
lcdCharacter('.');
sprintf(str,"%02d", v[5]);
lcdString(str );
lcdCharacter('.');
sprintf(str, "%02d", v[4]);
lcdString( str );
gotoXY(60,1);
sprintf(str, "%02d", v[3]);
lcdString( str );
gotoXY( 5 , 3 );
sprintf(str, "%02d", v[2]);
lcdString( str );
lcdCharacter(':');
sprintf(str, "%02d", v[1]);
lcdString(str);
lcdCharacter(':');
sprintf(str, "%02d", v[0]);
lcdString(str );
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
gotoXY( 50 , 5 );
lcdStringB( " SAVE ");
}
void display_setup(byte k,byte v)
{
byte v_b,v_c;
char str[3];
sprintf(str, "%d", v);
for( byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0xFF);
}
gotoXY(0,0);
lcdStringB("SCREEN SET");
if ( k == 1)
{
gotoXY(45,1);
lcdString( str );
gotoXY(0,2);
lcdStringB("Bright:");
for ( byte j = 0 ; j <= v ; j ++)
{
gotoXY( 35 + ( 8 * j ) , 2 );
lcdSymbol(2);
}
v_b = v;
analogWrite(BACKLIGHT,50 * v);
gotoXY(0,4);
lcdString("Contrast:");
for ( byte j = 0 ; j < v_c ; j ++)
{
gotoXY( 45 + ( 8 * j ) , 4 );
lcdSymbol(2);
}
lcdWrite(LCD_CMD, 0x10 + v_c); // LCD 对比度 设定
}
if ( k == 2)
{
gotoXY(0,2);
lcdString("Bright:");
for ( byte j = 0 ; j <= v_b ; j ++)
{
gotoXY( 35 + ( 8 * j ) , 1 );
lcdSymbol(2);
}
analogWrite(BACKLIGHT,50 * v_b);
gotoXY(45,3);
lcdString( str );
gotoXY(0,4);
lcdStringB("Contrast:");
for ( byte j = 0 ; j < v ; j ++)
{
gotoXY( 45 + ( 8 * j ) , 1 );
lcdSymbol(2);
}
v_c = v;
lcdWrite(LCD_CMD, 0x10 + v); // LCD 对比度 设定
}
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
gotoXY( 50 , 5 );
lcdStringB( " SAVE ");
}
void power_setup( byte v)
{
char str[3];
sprintf(str, "%d", v);
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 0 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 0 , 0 );
lcdStringB( "POWER");
gotoXY(45,2);
lcdString( str );
gotoXY(0,3);
lcdStringB("Power:");
for ( byte j = 0 ; j <= v ; j ++)
{
gotoXY( 30 + ( 8 * j ) , 3 );
lcdSymbol(2);
}
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( " EXIT ");
gotoXY( 50 , 5 );
lcdStringB( " SAVE ");
}
void version_dis()
{
for( byte i = 0 ; i < 84 ; i ++)
{
gotoXY(i,0);
lcdWrite(1,0xFF);
}
gotoXY(0,0);
lcdStringB("VERSION");
gotoXY(2,2);
lcdString("Version : 0.10beta");
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB( "EXIT ");
}
void lcdLogoDisplay()
{
gotoXY(2,2);
lcdString(" KAJW WA");
}
void lcdDefaultDisplay()
{
byte t,h;
byte time_b[7];
byte th[2];
char t_d_st[4];
char str[2];
timeGet(DS1307_ADDRESS,DS1307_STOP_START,time_b);
if (tempe_humiRead(th) == 1)
{
t = th[0];
h = th[1];
}
gotoXY(0,0);
lcdString("20");
sprintf(str, "%02d", time_b[6]);
lcdString( str );
lcdCharacter('.');
sprintf(str, "%02d", time_b[5]);
lcdString( str );
lcdCharacter('.');
sprintf(str, "%02d", time_b[4]);
lcdString(str );
gotoXY(65,0);
lcdString( weektoString(time_b[3]) );
gotoXY(0,1);
sprintf(str, "%02d", time_b[2]);
lcdString( str );
lcdCharacter(':');
sprintf(str, "%02d", time_b[1]);
lcdString( str );
lcdCharacter(':');
sprintf(str, "%02d", time_b[0]);
lcdString( str );
gotoXY(0,2);
lcdString("T : ");
sprintf(str, "%02d", t);
//Serial.print("T :");
//Serial.println(str);
lcdString( str );
lcdString( " " );
lcdSymbol(13);
lcdCharacter('C');
gotoXY(0,3);
lcdString("D : ");
sprintf(str, "%02d", h);
lcdString( str );
//Serial.print("H :");
//Serial.println(str);
lcdString(" %");
for ( byte i = 0 ; i < 84 ; i ++ )
{
gotoXY( i , 5 );
lcdWrite( 1 , 0xFF );
}
gotoXY( 2 , 5 );
lcdStringB(" EXIT ");
}
void musicPlay()
{
gotoXY(2,2);
lcdString(" MUSIC PLAY");
}
void recorder()
{
gotoXY(2,2);
lcdString(" RECORDING");
}
////////////////////// 菜单显示 ////////////////////////////////
byte menu_dis(byte num)
{
byte count,num_pre;
if ( num >= 0 && num <= 9 )
{
if ( num > 4 ) num = 1;
if ( num < 1 ) num = 4;
else num = num;
}
else if ( num >= 10 && num <= 19 )
{
if ( num > 13 ) num = 11;
if ( num < 11 ) num = 13;
else num = num;
}
else if ( num >= 20 && num <= 29)
{
if ( num > 23 ) num = 21;
if ( num < 21 ) num = 23;
else num = num;
}
else if ( num >= 30 && num <= 39)
{
if ( num > 34 ) num = 31;
if ( num < 31 ) num = 34;
else num = num;
}
else if ( num >= 40 && num <= 49)
{
if ( num > 44 ) num = 41;
if ( num < 41 ) num = 44;
else num = num;
}
else if ( num >= 110 && num <= 119)
{
if ( num > 113 ) num = 111;
if ( num < 111 ) num = 113;
else num = num;
}
else if ( num >= 120 && num <= 129)
{
if ( num > 124 ) num = 121;
if ( num < 121 ) num = 124;
else num = num;
}
else if ( num >= 130 && num <= 139)
{
if ( num > 134 ) num = 131;
if ( num < 131 ) num = 134;
else num = num;
}
else if ( num >= 210 && num <= 219)
{
if ( num > 213 ) num = 211;
if ( num < 211 ) num = 213;
else num = num;
}
else if ( num >= 220 && num <= 229)
{
if ( num > 222 ) num = 221;
if ( num < 221 ) num = 222;
else num = num;
}
else
{
num = 1;
}
if (num_pre != num)
{
lcdClear();
num_pre = num;
}
switch(num)
{
case 1 :
while( 1 )
{
count = screen_play();
if(keyRead() != 'K') break;
}
break;
case 2 :
while( 1 )
{
count = screen_recorder();
if(keyRead() != 'K') break;
}
break;
case 3 :
while( 1 )
{
count = screen_tool();
if(keyRead() != 'K') break;
}
break;
case 4 :
while( 1 )
{
count = screen_setup();
if(keyRead() != 'K') break;
}
break;
case 11 :
while( 1 )
{
count = screen_play_mode();
if(keyRead() != 'K') break;
}
break;
case 12 :
while( 1 )
{
count = screen_play_reverb();
if(keyRead() != 'K') break;
}
break;
case 13 :
while( 1 )
{
count = screen_play_equa();
if(keyRead() != 'K') break;
}
break;
case 21 :
while( 1 )
{
count = screen_recorder_mode();
if(keyRead() != 'K') break;
}
break;
case 22 :
while( 1 )
{
count = screen_recorder_mic();
if(keyRead() != 'K') break;
}
break;
case 23 :
while( 1 )
{
count = screen_recorder_display();
if(keyRead() != 'K') break;
}
case 31 :
while( 1 )
{
count = screen_tools_alcohol();
if(keyRead() != 'K') break;
}
break;
case 32 :
while( 1 )
{
count = screen_tools_combust();
if(keyRead() != 'K') break;
}
break;
case 33 :
while( 1 )
{
count = screen_tools_color();
if(keyRead() != 'K') break;
}
break;
case 34 :
while( 1 )
{
count = screen_tools_noise();
if(keyRead() != 'K') break;
}
break;
case 41 :
while( 1 )
{
count = screen_setup_datetime();
if(keyRead() != 'K') break;
}
break;
case 42 :
while( 1 )
{
count = screen_setup_screen();
if(keyRead() != 'K') break;
}
break;
case 43 :
while( 1 )
{
count = screen_setup_power();
if(keyRead() != 'K') break;
}
break;
case 44 :
while( 1 )
{
count = screen_setup_version();
if(keyRead() != 'K') break;
}
break;
case 111 :
while( 1 )
{
count = screen_play_mode_allrepeat();
if(keyRead() != 'K') break;
}
break;
case 112 :
while( 1 )
{
count = screen_play_mode_repeat();
if(keyRead() != 'K') break;
}
break;
case 113 :
while( 1 )
{
count = screen_play_mode_random();
if(keyRead() != 'K') break;
}
break;
case 121 :
while( 1 )
{
count = screen_play_reverb_none();
if(keyRead() != 'K') break;
}
break;
case 122 :
while( 1 )
{
count = screen_play_reverb_studio();
if(keyRead() != 'K') break;
}
break;
case 123 :
while( 1 )
{
count = screen_play_reverb_club();
if(keyRead() != 'K') break;
}
break;
case 124 :
while( 1 )
{
count = screen_play_reverb_hall();
if(keyRead() != 'K') break;
}
break;
case 131 :
while( 1 )
{
count = screen_play_equa_none();
if(keyRead() != 'K') break;
}
break;
case 132 :
while( 1 )
{
count = screen_play_equa_classical();
if(keyRead() != 'K') break;
}
break;
case 133 :
while( 1 )
{
count = screen_play_equa_jazz();
if(keyRead() != 'K') break;
}
break;
case 134 :
while( 1 )
{
count = screen_play_equa_rock();
if(keyRead() != 'K') break;
}
break;
case 211 :
while( 1 )
{
count = screen_recorder_mode_mp3();
if(keyRead() != 'K') break;
}
break;
case 212 :
while( 1 )
{
count = screen_recorder_mode_wma();
if(keyRead() != 'K') break;
}
break;
case 213 :
while( 1 )
{
count = screen_recorder_mode_pcm();
if(keyRead() != 'K') break;
}
break;
case 221 :
while( 1 )
{
count = screen_recorder_mic_buildin();
if(keyRead() != 'K') break;
}
break;
case 222 :
while( 1 )
{
count = screen_recorder_mic_external();
if(keyRead() != 'K') break;
}
break;
default :
count = 0x00;
break;
}
return count;
}
///////////////////////// 执行菜单 ///////////////////////////////////
void menu_exe( byte menucount)
{
char keytemp;
byte t[7];
byte v;
byte k;
switch( menucount)
{
case 31 :
alcoholInti();
lcdClear();
while( 1 )
{
v = alcoholRead();
alcohol_Dis(v);
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 32 :
combustInti();
lcdClear();
while( 1 )
{
v = combustibleRead();
combust_Dis(v);
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 33 :
frequencecount = 0;
colorInti();
interrupts();
attachInterrupt(0,frequence,RISING);
lcdClear();
while( 1 )
{
while(1)
{
if (color_wb_Dis()) break;
color_Dis(222,250,220);
keytemp = keyRead();
if ( keytemp == 'E') break;
}
}
break;
case 34 :
noiseInti();
lcdClear();
while( 1 )
{
v = noiseRead();
noise_Dis(v);
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 41 :
k = 1;
timeGet(DS1307_ADDRESS ,DS1307_START,t);
lcdClear();
datetime_setup_inti(t);
while( 1 )
{
keytemp = keyRead();
if ( keytemp == 'U') v ++;
if ( keytemp == 'D') v --;
if ( keytemp == 'F') k ++;
if ( keytemp == 'B') k --;
if ( keytemp == 'E') break;
if ( k > 7 ) k = 1;
if ( k < 1 ) k = 7;
switch( k)
{
case 1 :
if ( v > 99 ) v = 1;
if ( v < 1 ) v = 99;
t[6] = v;
break;
case 2 :
if ( v > 12 ) v = 1;
if ( v < 1 ) v = 12;
t[5] = v;
break;
case 3 :
if ( v > 31 ) v = 1;
if ( v < 1 ) v = 31;
t[4] = v;
break;
case 4 :
if ( v > 7 ) v = 1;
if ( v < 1 ) v = 7;
t[3] = v;
break;
case 5 :
if ( v > 23 ) v = 0;
if ( v < 0 ) v = 23;
t[2] = v;
break;
case 6 :
if ( v > 59 ) v = 0;
if ( v < 0 ) v = 59;
t[1] = v;
break;
case 7 :
if ( v > 59 ) v = 0;
if ( v < 0 ) v = 59;
t[0] = v;
break;
default :
break;
}
datetime_setup(k,v);
}
//timeSet(DS1307_ADDRESS ,DS1307_START,v)
break;
case 42 :
k = 1;
v = 3;
lcdClear();
while( 1 )
{
display_setup(k,v);
keytemp = keyRead();
if ( keytemp == 'U') v ++;
if ( keytemp == 'D') v --;
if ( keytemp == 'F') k ++;
if ( keytemp == 'B') k --;
if ( keytemp == 'E') break;
if ( k > 2 ) k = 1;
if ( k < 1 ) k = 2;
if ( v > 5 ) v = 1;
if ( v < 1 ) v = 5;
}
break;
case 43 :
v = 3;
lcdClear();
while( 1 )
{
power_setup(v*2);
keytemp = keyRead();
if ( keytemp == 'U') v ++;
if ( keytemp == 'D') v --;
if ( keytemp == 'E') break;
if ( v > 5 ) v = 1;
if ( v < 1 ) v = 5;
}
break;
case 44 :
lcdClear();
while( 1 )
{
version_dis();
keytemp = keyRead();
if ( keytemp == 'E')
break;
}
break;
case 111 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 112 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 113 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 121 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 122 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 123 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 124 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 131 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 132 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 133 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 134 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 211 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 212 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 213 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead(); break;
}
break;
case 221 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
case 222 :
//lcdClear();
while( 1 )
{
{
}
keytemp = keyRead();
if ( keytemp == 'E') break;
}
break;
default :
break;
}
}
void setup()
{
lcdInitialise();
keyInti();
lcdClear();
lcdLogoDisplay();
delay(2000);
//Serial.begin(9600) ;
}
void loop()
{
char keytemp;
boolean key_OK ,flag_m,keystatus;
keystatus = true;
flag_m = true;
key_OK = false;
lcdClear();
while(keystatus)
{
lcdDefaultDisplay();
delay(800);
keytemp = keyRead();
if (keytemp == 'M' || keytemp == 'P' || keytemp == 'R' )
keystatus = false;
}
keytemp = keyRead() ;
if ( keytemp == 'M')
{
lcdClear();
menucount = screen_play();
while(flag_m)
{
keytemp = keyRead();
//Serial.println(keytemp);
switch(keytemp)
{
case 'E' : flag_m = false; break;
case 'O' : key_OK = true; break;
case 'U' : menucount --; break;
case 'D' : menucount ++; break;
case 'B' : menucount /= 10; break;
case 'F' : menucount *= 10; break;
case 'M' : menucount = 1; break;
default : break;
}
//Serial.println(menucount);
menucount = menu_dis(menucount);
if ( key_OK )
{
if( ( menucount > 0 && menucount < 19 ) || ( menucount > 20 && menucount < 29 ) )
{
menucount *= 10;
}
if( ( menucount > 30 && menucount < 49 ) || ( menucount > 110 && menucount < 139) || (menucount > 210 && menucount < 229 ))
{
menu_exe(menucount);
}
}
}
}
else if (keytemp == 'P')
{
musicPlay();
}
else if ( keytemp == 'R')
{
recorder();
}
else
{
}
}
[/code] |