久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
請問各位我用STC12C5A60S2芯片無法進(jìn)行串口通信
[打印本頁]
作者:
uilis
時間:
2017-5-14 23:58
標(biāo)題:
請問各位我用STC12C5A60S2芯片無法進(jìn)行串口通信
請問一下大家,我想通過STC12C5A60S2串口通信像12864液晶屏發(fā)送中文字符,卻沒辦法在中文屏中顯示,所以想問問大家到底是哪里除了問題。
代碼如下
#include<include.h>
sbit RXD=P3^0;
sbit TXD=P3^1;
bit Flage_Receive_Ok,Receive;
uint idata receive_count;
uchar xdata uart_buff[205]={0};
/*****************************************************
"廣告屏串口命令功能:"
"help----幫助命令。"
"ad*:&-----發(fā)送廣告詞,“*”為1~5時,寫入緩沖區(qū)和EEPROM第“*”條廣告地址;“*”不為1~5時,只寫入緩沖區(qū)。“&”為廣告詞。"
"cmd:1-----查看EEPROM中保存的廣告詞。"
"cmd:2*----刪除EEPROM中保存的廣告詞。"
"cmd:3*----選擇需要顯示的廣告詞,“*”為1~5的數(shù)字。"
"cmd:4-----查看當(dāng)前時間。"
"cmd:5*----設(shè)置當(dāng)前時間,“*”為時間,格式:2016-1-05-05-05-05-05(2016年周一05月05日05時05分05秒)。"
"命令格式:*命令$"
*****************************************************/
unsigned char code help1 []={"廣告屏串口命令功能:"};
unsigned char code help2 []={"help------幫助命令。"};
unsigned char code help3 []={"ad*:&-----發(fā)送廣告詞,“*”為1-5時,寫入緩沖區(qū)和EEPROM第“*”條廣告詞地址;“*”不為1-5時,只寫入緩沖區(qū)。“&”為廣告詞。"};
unsigned char code help4 []={"cmd:1-----查看EEPROM中保存的廣告詞。返回格式:序號(EEPROM廣告詞序號):數(shù)據(jù)"};
unsigned char code help5 []={"cmd:2*----刪除EEPROM中保存的廣告詞。"};
unsigned char code help6 []={"cmd:3*----選擇需要顯示的廣告詞,“*”為1~5的數(shù)字。"};
unsigned char code help7 []={"cmd:4-----查看當(dāng)前時間。"};
unsigned char code help8 []={"cmd:5*----設(shè)置當(dāng)前時間,“*”為時間,格式:2016-01-05-05-05-05-05(2016年周一05月05日05時05分05秒)。"};
unsigned char code help9 []={"命令格式:*命令$"};
/*****************************************************
不同命令下的串口提示信息
*****************************************************/
unsigned char code uart_save_ad []={"寫入廣告詞成功!"};
unsigned char code uart_show_ad []={"EEPROM中的廣告詞:"};
unsigned char code uart_set_ad []={"選擇廣告詞成功!"};
unsigned char code uart_dele_ad1 []={"EEPROM中無廣告詞可刪!"};
unsigned char code uart_dele_ad2 []={"刪除廣告詞成功!"};
unsigned char code uart_show_time []={"當(dāng)前時間為:"};
unsigned char code uart_set_time []={"設(shè)置時間成功!"};
/*****************************************************
函數(shù)名:timer0_uart_init
功能:定時器0、串口初始化
參數(shù):void
返回值:void
變量:
*****************************************************/
void timer0_uart_init()
{
//定時器初始化
TMOD = 0x21;
//初始化化定時1ms
TH0 = 0x0FC;
TL0 = 0x066;
//EA = 1;
ET0 = 1;
TR0 = 1;
//串口初始化
//TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SM0=0;
SM1=1;
RI=0;
TI=0;
REN=1;
ES=1;
TR1=1;
//開總中斷
EA=1;
}
/*****************************************************
函數(shù)名:send_LF_CR
功能:向串口發(fā)送回車、換行符
參數(shù):void
返回值:void
變量:
*****************************************************/
void send_LF_CR()
{
SBUF = 0x0d;
while(!TI);
TI=0;
SBUF = 0x0a;
while(!TI);
TI=0;
}
/*****************************************************
函數(shù)名:send_help
功能:發(fā)送串口命令幫助
參數(shù):void
返回值:void
變量:
*****************************************************/
void send_help()
{
uint i;
//發(fā)送回車換行
send_LF_CR();
//發(fā)送help內(nèi)容
for(i=0;i<strlen(help1);i++)
{
SBUF=help1[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help2);i++)
{
SBUF=help2[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help3);i++)
{
SBUF=help3[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help4);i++)
{
SBUF=help4[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help5);i++)
{
SBUF=help5[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help6);i++)
{
SBUF=help6[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help7);i++)
{
SBUF=help7[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help8);i++)
{
SBUF=help8[i];
while(!TI);
TI=0;
}
send_LF_CR();
for(i=0;i<strlen(help9);i++)
{
SBUF=help9[i];
while(!TI);
TI=0;
}
send_LF_CR();
}
/*****************************************************
函數(shù)名:uart_control
功能:串口控制函數(shù),執(zhí)行串口命令
參數(shù):void
返回值:void
變量:
*****************************************************/
void uart_control()
{
uint i,j;
if(Flage_Receive_Ok==1)
{
ES=0;
send_LF_CR();
for(j=0;j<receive_count;j++)
{
SBUF=uart_buff[j];
while(!TI);
TI=0;
}
//接收到的數(shù)據(jù)為廣告數(shù)據(jù)
if((uart_buff[0]=='a')&&(uart_buff[1]=='d')&&(uart_buff[3]==':'))
{
input=receive_count-4;
for(i=0;i<input;i++)
store[i]=uart_buff[i+4];
begin = 0;
one_save = 0;
/****************************************************
指定保存地址才進(jìn)行寫入到EEPROM,否則只存入顯示緩沖區(qū)
uart_buff[2]中的值對應(yīng)EEPROM的廣告保存地址
*********uart_buff[2]***********EEPROM地址***********
1 3
2 6
3 9
4 12
5 15
*****************************************************/
if(((uart_buff[2]-'0')>=1)&&((uart_buff[2]-'0')<=5))
{
i = uart_buff[2]-'0'-1;
if((i<2)||((i==2)&&(input<=88)))
{
for(j=0; j< USING_CHAR_NUM; j++)
eepromBUF[j] = IapReadByte(IAP_ADDRESS+j);
if((eepromBUF[0]<5)&&(eepromBUF[IAP_ADDRESS+3+i*3]==0))
eepromBUF[0] = eepromBUF[0]+1;//廣告詞數(shù)加1
eepromBUF[IAP_ADDRESS+3+i*3] = input;//修改廣告詞長度
for(j=0;j< input; j++)
eepromBUF[24+i*200+j] = store[j];
IapEraseSector(IAP_ADDRESS);
//寫入EEPROM
for(j=0; j< USING_CHAR_NUM; j++)
IapProgramByte(IAP_ADDRESS+j,eepromBUF[j]);
}
else if((i==2)&&(input>88))
{
//寫第一個扇區(qū)
for(j=0; j< USING_CHAR_NUM; j++)
eepromBUF[j] = IapReadByte(IAP_ADDRESS+j);
if((eepromBUF[0]<5)&&(eepromBUF[IAP_ADDRESS+3+i*3]==0))
eepromBUF[0] = eepromBUF[0]+1;//廣告詞數(shù)加1
eepromBUF[IAP_ADDRESS+3+i*3] = input;//修改廣告詞長度
for(j=0;j< 88; j++)
eepromBUF[424+j] = store[j];
IapEraseSector(IAP_ADDRESS);
//寫入EEPROM
for(j=0; j< USING_CHAR_NUM; j++)
IapProgramByte(IAP_ADDRESS+j,eepromBUF[j]);
//寫第二個扇區(qū)
for(j=0; j< USING_CHAR_NUM; j++)
eepromBUF[j] = IapReadByte(IAP_ADDRESS1+j);
for(j=0;j<(input-88); j++)
eepromBUF[j] = store[j+88];
IapEraseSector(IAP_ADDRESS1);
//寫入EEPROM
for(j=0; j< USING_CHAR_NUM; j++)
IapProgramByte(IAP_ADDRESS1+j,eepromBUF[j]);
}
else if(i>2)
{
//寫第一個扇區(qū)
for(j=0; j< USING_CHAR_NUM; j++)
eepromBUF[j] = IapReadByte(IAP_ADDRESS+j);
if((eepromBUF[0]<5)&&(eepromBUF[IAP_ADDRESS+3+i*3]==0))
eepromBUF[0] = eepromBUF[0]+1;//廣告詞數(shù)加1
eepromBUF[IAP_ADDRESS+3+i*3] = input;//修改廣告詞長度
IapEraseSector(IAP_ADDRESS);
//寫入EEPROM
for(j=0; j< USING_CHAR_NUM; j++)
IapProgramByte(IAP_ADDRESS+j,eepromBUF[j]);
EepromWriteByte(i*200+24,store,200);
}
}
}
/***************************************************************
*******************接收到的數(shù)據(jù)為命令數(shù)據(jù)***********************
命令數(shù)據(jù)格式:
uart_buff[0] uart_buff[1] uart_buff[2] uart_buff[3] uart_buff[4] uart_buff[5~]
'c' 'm' 'd' ':' '1-5' "數(shù)據(jù)"
----------------------------------------------------------------------------------
"cmd:1-----查看EEPROM中保存的廣告詞。"
"cmd:2*----刪除EEPROM中保存的廣告詞。"
"cmd:3*----選擇需要顯示的廣告詞,“*”為1~5的數(shù)字。"
"cmd:4-----查看當(dāng)前時間。"
"cmd:5*----設(shè)置當(dāng)前時間,“*”為時間,格式:2016-1-05-05-05-05-05(2016年周一05月05日05時05分05秒)。"
***************************************************************/
else if((uart_buff[0]=='c')&&(uart_buff[1]=='m')&&(uart_buff[2]=='d')&&(uart_buff[3]==':'))
{
//判斷命令號,即uart_buff[4]中的內(nèi)容
switch(uart_buff[4])
{
case '1': //一號命令,發(fā)送廣告數(shù)據(jù)
send_LF_CR();
for(i=0;i<strlen(uart_show_ad);i++)
{
SBUF=uart_show_ad[i];
while(!TI);
TI=0;
}
ad_index.AD_number = IapReadByte(IAP_ADDRESS);
if((ad_index.AD_number) > 0)
{
for(i=0,j=0;i<5;i++)
{
if(IapReadByte(IAP_ADDRESS+3+i*3) !=0)
{
(ad_index.addr_buff+j)->addr = (IapReadByte(IAP_ADDRESS+1+i*3)<<8) | IapReadByte(IAP_ADDRESS+2+i*3);
(ad_index.addr_buff+j)->len_addr = IAP_ADDRESS+3+i*3 ;
(ad_index.addr_buff+j)->len = IapReadByte(IAP_ADDRESS+3+i*3);
j++;
}
}
send_LF_CR();
for(i=0;i<ad_index.AD_number;i++)
{
SBUF = i+1+'0';
while(!TI);
TI=0;
SBUF = '(';
while(!TI);
TI=0;
SBUF = (((ad_index.addr_buff+i)->len_addr)/3)+'0';
while(!TI);
TI=0;
SBUF = ')';
while(!TI);
TI=0;
SBUF = ':';
while(!TI);
TI=0;
for(j=0;j<((ad_index.addr_buff+i)->len);j++)
{
SBUF = IapReadByte(((ad_index.addr_buff+i)->addr)+j);
while(!TI);
TI=0;
}
send_LF_CR();
}
}
break;
case '2'://2號命令刪除第uart_buff[5]條廣告詞
ad_index.AD_number = IapReadByte(IAP_ADDRESS);
if(ad_index.AD_number > 0)
{
for(i=0,j=0;i<5;i++)
{
if(IapReadByte(IAP_ADDRESS+3+i*3) !=0)
{
(ad_index.addr_buff+j)->addr = (IapReadByte(IAP_ADDRESS+1+i*3)<<8) | IapReadByte(IAP_ADDRESS+2+i*3);
(ad_index.addr_buff+j)->len_addr = IAP_ADDRESS+3+i*3 ;
(ad_index.addr_buff+j)->len = IapReadByte(IAP_ADDRESS+3+i*3);
j++;
}
}
for(i=0;i<ad_index.AD_number;i++)
{
if(((ad_index.addr_buff+i)->len_addr) == (uart_buff[5]-'0')*3)
{
(ad_index.addr_buff+i)->len = 0;
break;
}
}
(ad_index.AD_number)--;
EepromWriteByte((ad_index.addr_buff+i)->len_addr,(uchar *)(&((ad_index.addr_buff+i)->len)),1);//廣告詞長度清零
EepromWriteByte(IAP_ADDRESS,(uchar *)(&(ad_index.AD_number)),1);//寫入廣告總數(shù)
send_LF_CR();
for(i=0;i<strlen(uart_dele_ad2);i++)
{
SBUF=uart_dele_ad2[i];
while(!TI);
TI=0;
}
}
else
{
send_LF_CR();
for(i=0;i<strlen(uart_dele_ad1);i++)
{
SBUF=uart_dele_ad1[i];
while(!TI);
TI=0;
}
}
break;
case '3': //3號命令選擇顯示第uart_buff[5]條廣告詞
for(i=0;i<((ad_index.addr_buff+(uart_buff[5]-'0')-1)->len);i++)
store[i] = IapReadByte(((ad_index.addr_buff+(uart_buff[5]-'0')-1)->addr)+i);
input = (ad_index.addr_buff+(uart_buff[5]-'0')-1)->len;
send_LF_CR();
for(i=0;i<strlen(uart_set_ad);i++)
{
SBUF=uart_set_ad[i];
while(!TI);
TI=0;
}
end =0;
begin = 0;
page = 0;
AD_delete = 0;
page_data = 0;
WriteCommandLCD(0x01,1);
function = 0;
break;
case '4': //4號命令查看當(dāng)前時間
send_LF_CR();
for(i=0;i<strlen(uart_show_time);i++)
{
SBUF=uart_show_time[i];
while(!TI);
TI=0;
}
SBUF = 2 +'0';
while(!TI);
TI=0;
SBUF = '0';
while(!TI);
TI=0;
for(i=0;i<7;i++)
{
if(i!= 1)
{
SBUF = (TIME[6-i]>>4)+'0';
while(!TI);
TI=0;
SBUF = (TIME[6-i]&0x0f)+'0';
while(!TI);
TI=0;
SBUF = TimeType[13-i*2-1];
while(!TI);
TI=0;
SBUF = TimeType[13-i*2];
while(!TI);
TI=0;
}
else{
SBUF = TimeType[13-i*2-1];
while(!TI);
TI=0;
SBUF = TimeType[13-i*2];
while(!TI);
TI=0;
SBUF = TimeWeekType[(TIME[6-i]-1)*2];
while(!TI);
TI=0;
SBUF = TimeWeekType[(TIME[6-i]-1)*2+1];
while(!TI);
TI=0;
}
}
break;
case '5': //5號命令設(shè)置時間,時間數(shù)據(jù)在uart_buff[5~26],格式:2016-1-05-05-05-05-05
for(i=0;i<7;i++)
{
TIME[i] = ((uart_buff[25-i*3]-'0')<<4)+(uart_buff[26-i*3]-'0');
}
Ds1302Init();
send_LF_CR();
for(i=0;i<strlen(uart_set_time);i++)
{
SBUF = uart_set_time[i];
while(!TI);
TI=0;
}
break;
default:
break;
}
}
else if((uart_buff[0]=='h')&&(uart_buff[1]=='e')&&(uart_buff[2]=='l')&&(uart_buff[3]=='p'))
{
send_help();
}
//清楚uart_buff[1~4]內(nèi)容
for(i=0;i<4;i++)
uart_buff[i]=0;
//清楚接收標(biāo)志位
receive_count = 0;
Flage_Receive_Ok = 0;
ES=1;
}
}
復(fù)制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产一区二区三区久久
|
看一级黄色片
|
国产精品亚洲精品
|
国产精品久久久久久久久久久久久久久
|
在线性视频
|
国产午夜精品久久久
|
天天干天天谢
|
好吊妞这里只有精品
|
欧美在线视频一区二区
|
黄网站免费观看
|
亚洲欧美一区二区三区在线
|
超碰在线免费
|
久草视频观看
|
av播播
|
亚洲天堂网址
|
国产午夜免费视频
|
www一区
|
欧美在线小视频
|
国产一区精品视频
|
一区二区三区在线看
|
欧美777
|
天天射天天舔
|
日本在线免费
|
日本熟妇毛耸耸xxxxxx
|
亚洲最新视频
|
日韩精品在线免费观看
|
毛片免费观看视频
|
a级片免费
|
色中色av
|
激情做爰呻吟视频舌吻
|
久久人人爽人人爽人人片
|
黄色av日韩
|
亚洲影视在线
|
精品国产aⅴ麻豆
|
黄色国产视频
|
一二三区视频
|
久久艹av
|
欧美精品一区在线观看
|
精品黑人一区二区三区国语馆
|
午夜国产福利
|
一级黄色片在线观看
|