chengyuyu 发表于 2020-5-20 15:03 1 如果你的串口通讯正常的并且temp数组足够大的话,那么你接受道所有的数剧都会在temp数组里面。2 读取数据问题着个全是可以不用解释,数据就在数组里面,你复制出来也行,直接调用也行 3 着个应该才是你要问的问题,比如串口发送:“1 2 3 a b c 你好吗”怎么在显示屏显示,做法如下 定义结构体: typedef struct { u8 sign_name;//数字和字符的ASCII码 u8 sign_data[16];//显示数据局,字库 }sign_number; typedef struct { u8 font[2];//汉字的ASCII码, u8 chinese1[16];//汉字上半部分字库 u8 chinese2[16];//下半部分字库 }chinese; 1 的ASCII码是0X31,用for循环检索到temp里面有0x31就往显示屏输送1的显示数据 你要自己建造一个字库,: |
763900682 发表于 2020-5-20 23:46 void UsartConfiguration() { SCON=0X50;//¹¤×÷·½Ê½1 TMOD=0X20; TL1=0XFA; TH1=0XFA; TR1=1; EA=1; ES=1; } void main(void) { while(1) { UsartConfiguration(); if(rcv_date_ok_flag==1) { rcv_date_ok_flag=0; for(i=0;i<rcv_len;i++) shu_disp_1(2,i,rcv_buf); } } } void UART_one_Interrupt_Receive(void) interrupt 4 { unsigned char i; uchar temp =SBUF; if(temp==0x02) { rcv_date_ok_flag=0; rcv_len=0; } else if(temp==0x03) { rcv_date_ok_flag=1; } else { rcv_buf[rcv_len++]=temp; } } 您能给看看哪不对吗 |
| 无论用那种单片机,道理差不多的。都要先申请一个全局变量的数组,将串口接收的数据放到该数组中。接受完数组后,串口会有特定的寄存器标志接收完成,检测到接收完成就将数组的数据显示,然后清空数组和寄存器的标志位。等待下一次接收。 |
|
你好! 如果串口传什么汉字就显示什么的话,需要带有字库的液晶; 如果不含有字库的液晶,只能先制作字库,显示汉字数受限。 |
xxpp2011 发表于 2020-5-20 08:53 您好,我发了一下我的代码,您看看还要怎么做才能取出temp【】里面的数? |
黄youhui 发表于 2020-5-20 11:45 您好,谢谢您的解答,我还是有一点不明白,希望您能赐教,就是那个我该怎么知道temp【】数组里面的数是多少,师傅跟我说用for循环就能取出来,您能给我解释一下吗? |
chengyuyu 发表于 2020-5-20 09:10 串口接收的数据是ASCII码,你接收到的也只能是ASCII码。ASCII是uint8_t(char)类型的所以最大只有0xff 也就是说你从串口接收到的数字是255,不存在大于256的数字。 而且你发送1000.串口传输给单片机或者单片机传给串口的就是 0x31 0X30 0X30这三个数字, 0X31在ASCII里面就是1 0X30就是0. 如图所示如果发送或者接收的数字大于126,那么串口会默认将这个大于126的数字和下一个数字组合,凑成一个汉字,也就是为什么汉字占两个字节,而数字符号占一个字节的原因。 |
51hei截图20200520113747.png (44.57 KB, 下载次数: 70)
| 用个数组,把接收到的数据存起来。然后把这个数组的内容显示在12864上 |
xxpp2011 发表于 2020-5-20 08:53 您好,我的12864是不带字库的,所以我定义了一个字符字库【】,里面是从1-9的字模,这样从数组里面读是不是得取位然后再显示? |
muzhi 发表于 2020-5-19 22:52 您好,能稍微讲一下传参吗,我现在应该是可以把接收到的数据缓存到一个数组,但是我用的12864是不带字库的,所以得知道数组里面的数的大小,然后在yi==temp%1000000000/100000000 qianwan=temp%100000000/10000000 baiwan=temp%10000000/1000000 shiwan=temp%1000000/100000 wan=temp%100000/10000; qian=temp%10000/1000; bai=temp%1000/100; shi=temp%100/10; ge=temp%10;这样取出值的大小最后根据每个值得大小来显示自定义字符字库里的字符,这个思路对吗? |
| 无论用那种单片机,道理差不多的。都要先申请一个全局变量的数组,将串口接收的数据放到该数组中。接受完数组后,串口会有特定的寄存器标志接收完成,检测到接收完成就将数组的数据显示,然后清空数组和寄存器的标志位。等待下一次接收。 |
| 一位一位接收,放进数组里面,显示就从数组里面读 |