串口通信问题,电脑上显示与单片机所连接的lcd不符!~请大虾指点!谢谢!~有程序!~
if(oldsec!=sec) //秒有变动就执行下面的语句{
display_temp(); //lcd显示
send_string_com(buffer,6);
oldsec =sec;
// LED1=!LED1;
}
上面是在主函数里调用串口的程序,下面就是串口程序
// char putchar(char ch)
void send_string_com(unsigned char *str,unsigned char strlen)
{ //*str数组指针
unsigned char k=0;
do
{
putbuf(*(str + k));
k++;
} while(k < strlen);
}
以下是时间分配表
void bintobcd()
{
buffer=sec%10;buffer=sec/10;
buffer=min%10; buffer=min/10;
buffer=hour%10; buffer=hour/10;
}
为什么程序在lcd上显示是对的时钟程序,而在串口电脑上显示的是错的啊?是不是串口通信中ASCII码有特殊的定义啊?
电脑上的显示:
字符显示?HEX显示06 18 18 18 18 18 F8 18 18 18 18 18 18 F8 ,而我的lcd显示的是00:00:01和
00:00:02,lcd时钟显示正确,但串口显示错误!~ 波特率错误。 错了的话,我的怎么还显示啊? 伙计.你那个掉用有问题,send_string_com(buffer,6);应该是
send_string_com(&buffer,6); 我试试去!` j_sunny 你的这句send_string_com(&buffer,6);中加&有什么意义啊? 不要加&的 buffer(数组名)就是指针,3楼说错了。 给个建议,现确定波特率没问题,然后再发时钟的数据时每个数据+0x30后再发。 void send_string_com(unsigned char *str,unsigned char strlen)
*str是一个指针;
看你的程序,要显示数组的值,得付你的数组地址,所以要加& +?我用过"|"0x30和03都不行
void send_string_com(unsigned char *str,unsigned char strlen)
{ //*str数组指针
unsigned char k=0;
do
{
putbuf((*(str + k))|0x03); //你是说的这样吧
k++;
} while(k < strlen);
} 看看这个
void init_serialcomm(void)
{
SCON= 0x50; //SCON: 工作方式1, 8-bit
TMOD |= 0x20; //TMOD: 定时器1, 工作方式2, 8-bit
PCON |= 0x80; //SMOD=1;
TH1 = 0xF4; //4800波特率fosc=11.0592MHz
TL1 =0xF4;
IE |= 0x90; //使能串口中断
TR1 = 1; //运行定时器1
istart=0;
iend=0;
} 同意7楼的说法,先测试定波特率 哦 TL1=0xf4;
TH1=0xf4; /*BAUD RATE = 2400 @ 11.0592M*/ 建议j_sunny自己去试试到底要不要加&
不至于我到现在写的那些程序都是错的吧。
-----此内容被bozai于2007-01-08,11:54:27编辑过 j_sunny ,建议你回去好好看一看数组名的具体含义 81 80 80 ,82 80 80 折实1,2秒的显示!~ 亐?,個? send_string_com(&buffer,6);
我一直喜欢用这个,没问题的,试了N年了 这个是对的,用buffer不更好少打几个字 TL1=0xf4;
TH1=0xf4; /*BAUD RATE = 2400 @ 11.0592M*/
你的意思是2400的波特率? 哈哈,我用惯了,忘了以前学的了 楼主你先发字符串 最基本的hello world!程序 试试串口有没有问题不就行了吗。 ???,是2400的时候显示的
鴪`?堾 ,是4800的时候显示的
??& ,是9600的时候显示的 点击此处下载armok01140778.rar
我做了一个UART程序,希望能对你有所帮助,我这边已经测试,没问题,发送的第一个字节是本次发送的长度,一针小于8;能后再回显,比如:05 AA BB CC DD;回显:05 AA BB CC DD;我看你是用MCS-51,我这个也是 如果你还有问题,请检查硬件了 忘了告诉你,我的那个是2400的波特率 好的谢谢你!~呵呵 j_sunny你用的什么编程软件啊? KEIL
页:
[1]