哪位大侠看看串口问题
现在问题串口输出可以控制计数。串口设置输入进不来,int incomingByte =0;
int ledpin = 8; //定义数字接口13
int j=0;//初使化加数变量
int addKey =4;//定义按键为第4引脚
int buttonState = 0; //初使化按键暂存值,为了和addKey类型保持一致用int;
unsigned char showNumber ={
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x01},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x02},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x03},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x04},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x05},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x06},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x07},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x08},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x09},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0A},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0B},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0D},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0E},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0F},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x10},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x11},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x12},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x13},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x14},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x15},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x16},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x17},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x18},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x19},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x1A},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x1B},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x1D},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x1E},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x1F},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x20},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x21},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x22},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x23},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x24},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x25},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x26},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x27},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x28},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x29},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x2A},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x2B},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x2D},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x2E},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x2F},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x30},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x31},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x32},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x33},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x34},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x35},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x36},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x37},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x38},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x39},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x3A},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x3B},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x3D},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x3F},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x40},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x41},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x42},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x43},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x44},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x45},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x46},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x47},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x48},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x49},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x4A},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x4B},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x4D},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x4E},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x4F},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x50},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x51},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x52},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x53},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x54},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x55},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x56},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x57},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x58},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x59},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x5A},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x5B},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x5D},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x5E},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x5F},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x60},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x61},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x62},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x63},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x64}};
//{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x65},
unsigned char HEXHEX0 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x00};
unsigned char HEXHEX1 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x01};
unsigned char HEXHEX2 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x02};
unsigned char HEXHEX3 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x03};
unsigned char HEXHEX4 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x04};
unsigned char HEXHEX5 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x05};
unsigned char HEXHEX6 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x06};
unsigned char HEXHEX7 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x07};
unsigned char HEXHEX8 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x08};
unsigned char HEXHEX9 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x09};
unsigned char HEXHEX10 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x0A};
int x = 0;
int CheckSum0 = 0;
int CheckSum1 = 0;
int CheckSum2 = 0;
int CheckSum3 = 0;
int CheckSum4 = 0;
int CheckSum5 = 0;
int CheckSum6 = 0;
int CheckSum7 = 0;
int CheckSum8 = 0;
int CheckSum9 = 0;
int CheckSum10 = 0;
void setup()
{
Serial.begin(9600);
pinMode(ledpin, OUTPUT);
// Serial.flush();//初使化串口
pinMode(addKey,INPUT);//初使化物理按键输入
}
void loop()
{
if (Serial.available() > 0)
{
incomingByte = Serial.read();
Serial.print(incomingByte, HEX);
if (HEXHEX0 == incomingByte){CheckSum0++;}
if (HEXHEX1 == incomingByte){CheckSum1++;}
if (HEXHEX2 == incomingByte){CheckSum2++;}
if (HEXHEX3 == incomingByte){CheckSum3++;}
if (HEXHEX4 == incomingByte){CheckSum4++;}
if (HEXHEX5 == incomingByte){CheckSum5++;}
if (HEXHEX6 == incomingByte){CheckSum6++;}
if (HEXHEX7 == incomingByte){CheckSum7++;}
if (HEXHEX8 == incomingByte){CheckSum8++;}
if (HEXHEX9 == incomingByte){CheckSum9++;}
if (HEXHEX10 == incomingByte){CheckSum10++;}
x++;
if (x == 9) {
if (CheckSum0 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(500);
}
if (CheckSum1 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(500);
}
if (CheckSum2 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(500);
}
if (CheckSum3 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(500);
}
if (CheckSum4 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(500);
}
if (CheckSum5 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(500);
}
if (CheckSum6 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(500);
}
if (CheckSum7 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(500);
}
if (CheckSum8 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(500);
}
if (CheckSum9 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(500);
}
if (CheckSum10 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(500);
}
x = 0;
CheckSum0 = 0;
CheckSum1 = 0;
CheckSum2 = 0;
CheckSum3 = 0;
CheckSum4 = 0;
CheckSum5 = 0;
CheckSum6 = 0;
CheckSum7 = 0;
CheckSum8 = 0;
CheckSum9 = 0;
CheckSum10 = 0;
}
}
buttonState = digitalRead(addKey);//将第4脚的电平赋予按键变量
if (buttonState == LOW)
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
switch(j)
{
case 1:
Serial.write(&showNumber,8);
break;
case 2:
Serial.write(&showNumber,8);
break;
case 3:
Serial.write(&showNumber,8);
break;
case 4:
Serial.write(&showNumber,8);
break;
case 5:
Serial.write(&showNumber,8);
break;
case 6:
Serial.write(&showNumber,8);
break;
case 7:
Serial.write(&showNumber,8);
break;
case 8:
Serial.write(&showNumber,8);
break;
case 9:
Serial.write(&showNumber,8);
break;
case 10:
Serial.write(&showNumber,8);
break;
case 11:
Serial.write(&showNumber,8);
break;
case 12:
Serial.write(&showNumber,8);
break;
case 13:
Serial.write(&showNumber,8);
break;
case 14:
Serial.write(&showNumber,8);
break;
case 15:
Serial.write(&showNumber,8);
break;
case 16:
Serial.write(&showNumber,8);
break;
case 17:
Serial.write(&showNumber,8);
break;
case 18:
Serial.write(&showNumber,8);
break;
case 19:
Serial.write(&showNumber,8);
break;
case 20:
Serial.write(&showNumber,8);
break;
case 21:
Serial.write(&showNumber,8);
break;
case 22:
Serial.write(&showNumber,8);
break;
case 23:
Serial.write(&showNumber,8);
break;
case 24:
Serial.write(&showNumber,8);
break;
case 25:
Serial.write(&showNumber,8);
break;
case 26:
Serial.write(&showNumber,8);
break;
case 27:
Serial.write(&showNumber,8);
break;
case 28:
Serial.write(&showNumber,8);
break;
case 29:
Serial.write(&showNumber,8);
break;
case 30:
Serial.write(&showNumber,8);
break;
case 31:
Serial.write(&showNumber,8);
break;
case 32:
Serial.write(&showNumber,8);
break;
case 33:
Serial.write(&showNumber,8);
break;
case 34:
Serial.write(&showNumber,8);
break;
case 35:
Serial.write(&showNumber,8);
break;
case 36:
Serial.write(&showNumber,8);
break;
case 37:
Serial.write(&showNumber,8);
break;
case 38:
Serial.write(&showNumber,8);
break;
case 39:
Serial.write(&showNumber,8);
break;
case 40:
Serial.write(&showNumber,8);
break;
case 41:
Serial.write(&showNumber,8);
break;
case 42:
Serial.write(&showNumber,8);
break;
case 43:
Serial.write(&showNumber,8);
break;
case 44:
Serial.write(&showNumber,8);
break;
case 45:
Serial.write(&showNumber,8);
break;
case 46:
Serial.write(&showNumber,8);
break;
case 47:
Serial.write(&showNumber,8);
break;
case 48:
Serial.write(&showNumber,8);
break;
case 49:
Serial.write(&showNumber,8);
break;
case 50:
Serial.write(&showNumber,8);
break;
case 51:
Serial.write(&showNumber,8);
break;
case 52:
Serial.write(&showNumber,8);
break;
case 53:
Serial.write(&showNumber,8);
break;
case 54:
Serial.write(&showNumber,8);
break;
case 55:
Serial.write(&showNumber,8);
break;
case 56:
Serial.write(&showNumber,8);
break;
case 57:
Serial.write(&showNumber,8);
break;
case 58:
Serial.write(&showNumber,8);
break;
case 59:
Serial.write(&showNumber,8);
break;
case 60:
Serial.write(&showNumber,8);
break;
case 61:
Serial.write(&showNumber,8);
break;
case 62:
Serial.write(&showNumber,8);
break;
case 63:
Serial.write(&showNumber,8);
break;
case 64:
Serial.write(&showNumber,8);
break;
case 65:
Serial.write(&showNumber,8);
break;
case 66:
Serial.write(&showNumber,8);
break;
case 67:
Serial.write(&showNumber,8);
break;
case 68:
Serial.write(&showNumber,8);
break;
case 69:
Serial.write(&showNumber,8);
break;
case 70:
Serial.write(&showNumber,8);
break;
case 71:
Serial.write(&showNumber,8);
break;
case 72:
Serial.write(&showNumber,8);
break;
case 73:
Serial.write(&showNumber,8);
break;
case 74:
Serial.write(&showNumber,8);
break;
case 75:
Serial.write(&showNumber,8);
break;
case 76:
Serial.write(&showNumber,8);
break;
case 77:
Serial.write(&showNumber,8);
break;
case 78:
Serial.write(&showNumber,8);
break;
case 79:
Serial.write(&showNumber,8);
break;
case 80:
Serial.write(&showNumber,8);
case 81:
break;
Serial.write(&showNumber,8);
break;
case 82:
Serial.write(&showNumber,8);
break;
case 83:
Serial.write(&showNumber,8);
break;
case 84:
Serial.write(&showNumber,8);
break;
case 85:
Serial.write(&showNumber,8);
break;
case 86:
Serial.write(&showNumber,8);
break;
case 87:
Serial.write(&showNumber,8);
break;
case 88:
Serial.write(&showNumber,8);
break;
case 89:
Serial.write(&showNumber,8);
break;
case 90:
Serial.write(&showNumber,8);
case 91:
break;
Serial.write(&showNumber,8);
break;
case 92:
Serial.write(&showNumber,8);
break;
case 93:
Serial.write(&showNumber,8);
break;
case 94:
Serial.write(&showNumber,8);
break;
case 95:
Serial.write(&showNumber,8);
break;
case 96:
Serial.write(&showNumber,8);
break;
case 97:
Serial.write(&showNumber,8);
break;
case 98:
Serial.write(&showNumber,8);
break;
case 99:
Serial.write(&showNumber,8);
break;
case 100:
Serial.write(&showNumber,8);
j=0;
break;
default:
break;
}
} 本帖最后由 Super169 于 2015-9-5 23:48 编辑
你的串口是怎樣接的?程式上有點不統一似的.
Serial.print(incomingByte, HEX);<- 看似接了電腦
Serial.write(&showNumber[??],8);<- 看似接了其他裝置
要大家幫忙, 也清楚說明一下你是如何連接, 執行後出了什麼問題.
"串口设置输入进不来,"<- 你如何肯定是串口輸入进不来.
那個 switch(j) 的部份也太重複了, 只要 j 是 1-100 之間, 直接Serial.write(&showNumber,8);不就行了嗎?
輸入的部份也有重複而造成點亂, 整個程式, 應該可以減少 8 成以上. 其實我比較好奇,內存沒滿嗎 Be1ieve 发表于 2015-9-6 10:35 static/image/common/back.gif
其實我比較好奇,內存沒滿嗎
目测刚用掉1K 应该还好吧 Super169 发表于 2015-9-5 23:44 static/image/common/back.gif
你的串口是怎樣接的?程式上有點不統一似的.
Serial.print(incomingByte, HEX);
rial.print(incomingByte, HEX);读中显液晶屏16进制码A5 5A 0683 00 00 01 00 00和我的那个 SeHEXHEX0---HEXHEX9比较输出。
if (Serial.available() > 0) incomingByte = Serial.read();读中显液晶屏16进制码A5 5A 0683 00 00 01 00 00没反应.led没有变化
buttonState = digitalRead(addKey);//将第4脚的电平赋予按键变量
if (buttonState == LOW)
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
这个是计数液晶屏条数有变化。程序正常。是不是串口读写不能同时进行 。我也是个菜鸟程序不大懂。哪位大侠帮帮忙.
这一个LOOP程序就有几百行,有些应该改成函数形式的,要调度什么的也方便点。 你居然换了ID,又来问这个。。。。。 李超然2365 发表于 2015-9-6 12:10 static/image/common/back.gif
rial.print(incomingByte, HEX);读中显液晶屏16进制码A5 5A 0683 00 00 01 00 00和我的那个...
你引用了我的回覆, 但你的內容好像跟我問你的完全沒相關的..... 你是否引用錯了? 本帖最后由 李超然2365 于 2015-9-6 22:11 编辑
Super169 发表于 2015-9-6 21:40 static/image/common/back.gif
你引用了我的回覆, 但你的內容好像跟我問你的完全沒相關的..... 你是否引用錯了?
没有。单片就串口发送16进制数到中显液晶屏显示条数。在液晶屏设定条数串口返回16进制数到单片机。
大侠指点一二。 李超然2365 发表于 2015-9-6 22:09 static/image/common/back.gif
没有。单片就串口发送16进制数到中显液晶屏显示条数。在液晶屏设定条数串口返回16进制数到单片机。
大 ...
你好像沒看到我在問什麼似的....我不是問你的程式在做什麼, 程式的內容我大致也明白.
而且, 你一直沒說清楚你進行了怎樣的測試, 結果出了什麼問題.
或者你確定一下, 你的 显液晶屏 要接收什麼格式, 你同時了兩種不同的格式去發送, 還是你想送到不同的地方:
Serial.print(incomingByte, HEX);
Serial.write(&showNumber[??],8);
你知道兩者的分別嗎?
我手上沒你的硬件, 只可以從程式上去猜, 沒有足夠的資料, 實在無能為力. Super169 发表于 2015-9-7 18:00 static/image/common/back.gif
你好像沒看到我在問什麼似的....我不是問你的程式在做什麼, 程式的內容我大致也明白.
而且, 你一直沒說清 ...
为什么添加这个程序上边的对比程序不管用了
else
{
if (buttonState == LOW)
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
液晶屏串口程序
int incomingByte =0;
int ledpin = 8; //定义数字接口
unsigned char HEXFD1 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x01};
unsigned char HEXFD2 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x02};
unsigned char HEXFD3 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x03};
unsigned char HEXFD4 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x04};
unsigned char HEXFD5 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x05};
unsigned char HEXFD6 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x06};
unsigned char HEXFD7 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x07};
unsigned char HEXFD8 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x08};
unsigned char HEXFD9 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x09};
unsigned char HEXFD10 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x0A};
int j=0;//初使化加数变量
int addKey =4;//定义按键为第4引脚
int buttonState = 0; //初使化按键暂存值,为了和addKey类型保持一致用int;
unsigned char showNumber ={
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x01},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x02},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x03},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x04},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x05},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x06},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x07},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x08},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x09},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0A}};
int x = 0;
int CheckSumX1 = 0;
int CheckSumX2 = 0;
int CheckSumX3 = 0;
int CheckSumX4 = 0;
int CheckSumX5 = 0;
int CheckSumX6 = 0;
int CheckSumX7 = 0;
int CheckSumX8 = 0;
int CheckSumX9 = 0;
int CheckSumX10 = 0;
void setup()
{
Serial.begin(9600);
pinMode(ledpin, OUTPUT);
pinMode(addKey,INPUT);
}
void loop()
{
// Serial.write(hexdata,7);
buttonState = digitalRead(addKey);//
if (Serial.available() > 0)
{
incomingByte = Serial.read();
Serial.print(incomingByte, HEX);
if (HEXFD1 == incomingByte) {
CheckSumX1++;
}
if (HEXFD2 == incomingByte) {
CheckSumX2++;
}
if (HEXFD3 == incomingByte) {
CheckSumX3++;
}
if (HEXFD4 == incomingByte) {
CheckSumX4++;
}
if (HEXFD5 == incomingByte) {
CheckSumX5++;
}
if (HEXFD6 == incomingByte) {
CheckSumX6++;
}
if (HEXFD7 == incomingByte) {
CheckSumX7++;
}
if (HEXFD8 == incomingByte) {
CheckSumX8++;
}
if (HEXFD9 == incomingByte) {
CheckSumX9++;
}
if (HEXFD10 == incomingByte) {
CheckSumX10++;
}
x++;
if (x == 9) {
if (CheckSumX5 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(5000);
}
if (CheckSumX7 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(5000);
}
x = 0;
CheckSumX5 = 0;
CheckSumX7 = 0;
}
}
else
{
if (buttonState == LOW)
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
switch(j)
{
case 1:
Serial.write(&showNumber,8);
break;
case 2:
Serial.write(&showNumber,8);
break;
case 3:
Serial.write(&showNumber,8);
break;
case 4:
Serial.write(&showNumber,8);
break;
case 5:
Serial.write(&showNumber,8);
break;
case 6:
Serial.write(&showNumber,8);
break;
case 7:
Serial.write(&showNumber,8);
break;
case 8:
Serial.write(&showNumber,8);
break;
case 9:
Serial.write(&showNumber,8);
break;
case 10:
Serial.write(&showNumber,8);
j=0;
break;
default:
break;
}
}
}
Super169 发表于 2015-9-7 18:00 static/image/common/back.gif
你好像沒看到我在問什麼似的....我不是問你的程式在做什麼, 程式的內容我大致也明白.
而且, 你一直沒說清 ...
为什么添加这个程序上边的对比程序不管用了
else
{
if (buttonState == LOW)
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
液晶屏串口程序
int incomingByte =0;
int ledpin = 8; //定义数字接口
unsigned char HEXFD1 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x01};
unsigned char HEXFD2 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x02};
unsigned char HEXFD3 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x03};
unsigned char HEXFD4 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x04};
unsigned char HEXFD5 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x05};
unsigned char HEXFD6 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x06};
unsigned char HEXFD7 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x07};
unsigned char HEXFD8 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x08};
unsigned char HEXFD9 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x09};
unsigned char HEXFD10 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x0A};
int j=0;//初使化加数变量
int addKey =4;//定义按键为第4引脚
int buttonState = 0; //初使化按键暂存值,为了和addKey类型保持一致用int;
unsigned char showNumber ={
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x01},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x02},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x03},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x04},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x05},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x06},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x07},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x08},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x09},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0A}};
int x = 0;
int CheckSumX1 = 0;
int CheckSumX2 = 0;
int CheckSumX3 = 0;
int CheckSumX4 = 0;
int CheckSumX5 = 0;
int CheckSumX6 = 0;
int CheckSumX7 = 0;
int CheckSumX8 = 0;
int CheckSumX9 = 0;
int CheckSumX10 = 0;
void setup()
{
Serial.begin(9600);
pinMode(ledpin, OUTPUT);
pinMode(addKey,INPUT);
}
void loop()
{
// Serial.write(hexdata,7);
buttonState = digitalRead(addKey);//
if (Serial.available() > 0)
{
incomingByte = Serial.read();
Serial.print(incomingByte, HEX);
if (HEXFD1 == incomingByte) {
CheckSumX1++;
}
if (HEXFD2 == incomingByte) {
CheckSumX2++;
}
if (HEXFD3 == incomingByte) {
CheckSumX3++;
}
if (HEXFD4 == incomingByte) {
CheckSumX4++;
}
if (HEXFD5 == incomingByte) {
CheckSumX5++;
}
if (HEXFD6 == incomingByte) {
CheckSumX6++;
}
if (HEXFD7 == incomingByte) {
CheckSumX7++;
}
if (HEXFD8 == incomingByte) {
CheckSumX8++;
}
if (HEXFD9 == incomingByte) {
CheckSumX9++;
}
if (HEXFD10 == incomingByte) {
CheckSumX10++;
}
x++;
if (x == 9) {
if (CheckSumX5 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(5000);
}
if (CheckSumX7 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(5000);
}
x = 0;
CheckSumX5 = 0;
CheckSumX7 = 0;
}
}
else
{
if (buttonState == LOW)
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
switch(j)
{
case 1:
Serial.write(&showNumber,8);
break;
case 2:
Serial.write(&showNumber,8);
break;
case 3:
Serial.write(&showNumber,8);
break;
case 4:
Serial.write(&showNumber,8);
break;
case 5:
Serial.write(&showNumber,8);
break;
case 6:
Serial.write(&showNumber,8);
break;
case 7:
Serial.write(&showNumber,8);
break;
case 8:
Serial.write(&showNumber,8);
break;
case 9:
Serial.write(&showNumber,8);
break;
case 10:
Serial.write(&showNumber,8);
j=0;
break;
default:
break;
}
}
}
RE: 哪位大侠看看串口问题
maxims 发表于 2015-9-6 18:47 static/image/common/back.gif你居然换了ID,又来问这个。。。。。
我为什加上这段。对比程序就不管用了。循环不进去吗没。
else
{
if (buttonState == LOW
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
液晶屏串口程序
int incomingByte =0;
int ledpin = 8; //定义数字接口
unsigned char HEXFD1 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x01};
unsigned char HEXFD2 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x02};
unsigned char HEXFD3 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x03};
unsigned char HEXFD4 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x04};
unsigned char HEXFD5 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x05};
unsigned char HEXFD6 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x06};
unsigned char HEXFD7 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x07};
unsigned char HEXFD8 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x08};
unsigned char HEXFD9 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x09};
unsigned char HEXFD10 = {0xA5, 0x5A, 0x06, 0x83, 0x00,0x00, 0x01,0x00, 0x0A};
int j=0;//初使化加数变量
int addKey =4;//定义按键为第4引脚
int buttonState = 0; //初使化按键暂存值,为了和addKey类型保持一致用int;
unsigned char showNumber ={
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x01},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x02},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x03},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x04},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x05},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x06},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x07},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x08},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x09},
{0xA5,0x5A,0x05,0x82,0x00,0x10,0x00,0x0A}};
int x = 0;
int CheckSumX1 = 0;
int CheckSumX2 = 0;
int CheckSumX3 = 0;
int CheckSumX4 = 0;
int CheckSumX5 = 0;
int CheckSumX6 = 0;
int CheckSumX7 = 0;
int CheckSumX8 = 0;
int CheckSumX9 = 0;
int CheckSumX10 = 0;
void setup()
{
Serial.begin(9600);
pinMode(ledpin, OUTPUT);
pinMode(addKey,INPUT);
}
void loop()
{
// Serial.write(hexdata,7);
buttonState = digitalRead(addKey);//
if (Serial.available() > 0)
{
incomingByte = Serial.read();
Serial.print(incomingByte, HEX);
if (HEXFD1 == incomingByte) {
CheckSumX1++;
}
if (HEXFD2 == incomingByte) {
CheckSumX2++;
}
if (HEXFD3 == incomingByte) {
CheckSumX3++;
}
if (HEXFD4 == incomingByte) {
CheckSumX4++;
}
if (HEXFD5 == incomingByte) {
CheckSumX5++;
}
if (HEXFD6 == incomingByte) {
CheckSumX6++;
}
if (HEXFD7 == incomingByte) {
CheckSumX7++;
}
if (HEXFD8 == incomingByte) {
CheckSumX8++;
}
if (HEXFD9 == incomingByte) {
CheckSumX9++;
}
if (HEXFD10 == incomingByte) {
CheckSumX10++;
}
x++;
if (x == 9) {
if (CheckSumX5 == 9) {
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(5000);
}
if (CheckSumX7 == 9) {
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(5000);
}
x = 0;
CheckSumX5 = 0;
CheckSumX7 = 0;
}
}
else
{
if (buttonState == LOW)
{
delay(10);
if (buttonState == LOW)//机械式延时去抖
j++;//按键后变量加1;
while(!digitalRead(addKey));//等待松开按键结束,按键弹起算一次有效值
}
switch(j)
{
case 1:
Serial.write(&showNumber,8);
break;
case 2:
Serial.write(&showNumber,8);
break;
case 3:
Serial.write(&showNumber,8);
break;
case 4:
Serial.write(&showNumber,8);
break;
case 5:
Serial.write(&showNumber,8);
break;
case 6:
Serial.write(&showNumber,8);
break;
case 7:
Serial.write(&showNumber,8);
break;
case 8:
Serial.write(&showNumber,8);
break;
case 9:
Serial.write(&showNumber,8);
break;
case 10:
Serial.write(&showNumber,8);
j=0;
break;
default:
break;
}
}
}
页:
[1]