OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3739|回复: 5

求大神指点,利用串口一接数据,但是接受的十六进制的数据在液晶上面没有显示,求大神指点下问题所在

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-6-14
在线时间
11 小时
发表于 2015-7-10 09:57:33 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#include "usart.h" #include "gpio.h" #include "lcd12864.h" #include "sys.h" char str1[]={"?±?°?è±?:"}; char str2[]={"?¤×÷×???: ?ì??"}; char str3[]={"??±ê????: 99 99"}; char *str4; int a=0x05; int num,i,j,len,t; int main(void ) { gpio_init();//IO???????? uart_init(9600);//?®???????????? delay_init();//???±?????????? lcd12864_Config();//???§?????????? write_pos(0,0);//??×?±ê???????????????? num=0; while(str1[num]!='\0') { write_data(str1[num]); num++; } write_pos(1,0);//??×?±ê???????????????? num=0; while(str2[num]!='\0') { write_data(str2[num]); num++; } write_pos(2,0);//??×?±ê???????????????? num=0; while(str3[num]!='\0') { write_data(str3[num]); num++; } while(1) { if(USART_RX_STA&0x8000) {len=USART_RX_STA&0x3f; write_pos(3,0); for(i=0;i<len;i++) write_data(USART_RX_BUF;) void USART1_IRQHandler(void) //?®??1????·??????ò { u16 i,Res; #ifdef OS_TICKS_PER_SEC //?????±?????????¨????,???÷??????ucosII??. OSIntEnter(); #endif if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //????????(????????????±?????0x0d 0x0a?á??) { USART_ClearITPendingBit(USART1, USART_IT_RXNE); USART_RX_BUF=USART_ReceiveData(USART1);//(USART1->DR); //???????????????? USART_SendData(USART1,USART_RX_BUF); i++; // write_pos(3,i); //write_data(USART_ReceiveData(USART1)); //i++ /* if((USART_RX_STA&0x8000)==0)//???????ê?? { if(USART_RX_STA&0x4000)//????????0x0d { if(Res!=0x0a)USART_RX_STA=0;//?????í?ó,???????? else USART_RX_STA|=0x8000; //?????ê???? } else //????????0X0D { if(Res==0x0d)USART_RX_STA|=0x4000; else { USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ; USART_RX_STA++; if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//?????????í?ó,???????????? } } } */ } #ifdef OS_TICKS_PER_SEC //?????±?????????¨????,???÷??????ucosII??. OSIntExit(); #endif } #endif void busy_search(void)// { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOF,&GPIO_InitStructure); reset_rs; set_rw; reset_en; //Delay(5); set_en; // Delay(25); while(GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_15)==1); reset_en; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOF,&GPIO_InitStructure); } void write_cmd(uchar cmd)//????? cmd?????? { busy_search(); reset_rs; reset_rw; reset_en; GPIO_Write(GPIOF,(0xff00&(cmd<<8))); delay_us(5); set_en; delay_us(5); reset_en; } void write_data(u16 dat)//?????, dat?????? { busy_search(); set_rs; reset_rw; reset_en; GPIO_Write(GPIOF,(0xff00&(dat<<8))); delay_us(5); set_en; delay_us(5); reset_en; } void lcd12864_Config()//????? { write_cmd(0x30); write_cmd(0x0c); write_cmd(0x01); } void write_pos(uchar x,uchar y) { uchar pos; if(x==0) { x=0x80; } if(x==1) { x=0x90; } if(x==2) { x=0x88; } if(x==3) { x=0x98; } pos=x+y; write_cmd(pos); }利用串口助手输入字符串可以正常显示,但是如果是十六进制的数据就不行了,跪求大神[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

用这个试试  选上 HEX  和忽略空格 发31 32 33 34 35
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2015-7-10 09:57:34 | 显示全部楼层
用这个试试  选上 HEX  和忽略空格


发31 32 33 34 35

commix.exe

193.5 KB, 下载次数: 523

回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2015-7-10 10:57:48 | 显示全部楼层
应该没有区别吧  你用的什么串口工具  怎么发的
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-6-14
在线时间
11 小时
 楼主| 发表于 2015-7-10 11:37:13 | 显示全部楼层
回复【2楼】止天:
---------------------------------
串口调试助手,如果以十六进制发,就没显示,不知道为什么。比如;0x01,0x02.0x03,串口不是先发0x01,然后发0x02的嘛,
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2013-6-14
在线时间
11 小时
 楼主| 发表于 2015-7-10 12:53:09 | 显示全部楼层
回复【4楼】止天:
---------------------------------
谢谢你了,不过还是没用!是不是主函数有问题?难道程序没进入主函数?你帮忙看下
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2015-7-10 13:15:52 | 显示全部楼层
你不是发字符时候可以实现吗?

那程序应该没问题啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 10:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表