当前位置: 首页 > 新闻中心 > 常见问答
返回
列表

串口屏如何与51单片机进行通信?

发表时间: 2023-11-30 作者: 常见问答

  一个手册是单片机芯片的官方手册,这里面描述了串口相关的寄存器及使用方法,读懂这个,你才能操控单片机的串口。

  第二个手册就是串口屏的官方手册,里面记录了串口屏的数据帧格式,包括帧头帧尾(若存在),每个字节代表的含义及范围,有了这个,你才能正确的告诉串口屏你的想法。

  这个很简单了,那就是C语言的技能,如果C语言不过关,那就等于你和另一种语言的人交流一样,会有阻碍。因为单片机这种东西是偏底层的,所以用的编程语言也就是C或者C++一类的,不过51一般都是C,在上面两个手册的任务完成以后,你就可以在Keil里新建一个工程,然后在里面大概需要有若干个数组和函数,数组是为了存放一些固定格式的帧,在串口屏初始化的时候能发送这些数组,对串口屏的字体,显示,颜色,背景…其他的参数进行初始化操作,当然,你也可以再一次进行选择直接在main()里写,只不过个人建议,数组会简洁一些,还能够命名为易读的变量名。至于函数,一般就是串口的初始化函数,中断函数,发送函数,接收函数等,具体的要看实际使用需求了,不过大体上这些是少不了的。

  我用的是淘晶驰串口屏,就以他们家的开发软件为例,printf重定向到串口

  注意,这里发送16进制是用\xff,不要写成 \0xff,会导致结束符无法发送

  前言:利用a单片机按键按下发送数值给单片机b,b单片机收到对应的数值,来控制从单片机b的P1口,点亮对于的8位LED灯。

  两个单片机都使用串口方式1进行通信,并且一定要保证两单片机通信波特率完全一致,否则接受不到正确的数。在发送数据时,向SBUF中写入一个数据后,使用 “while(!TI);” 等待是否发送完毕,因为当发送完毕后,TI被硬件置1,然后才退出 “while(!TI);” 接下来在将TI手动清零,同理,在接受数据时,在中断服务程序中也需要将接受中断标志位RI置零。

  a完成发送,b完成接收。编写程序设置a,令SM0=0,SM1=1(串行口工作方式1)。设置b,令SM0=0,SM1=1,REN=1,使接收允许。

  while(!TI); //若发送中断标志位没有置1(正在发送数据),就等待

  a单片机与b单片机连线(把这两个程序分别烧写到两块板子上,然后用连接线分别连接两个板子的发送引脚和接收引脚。)

  本次课程设计我主要研究的是单片机双机通信实验,使我学习到了最大的是51单片机的串口中断程序的编写,在实验中要使用到两个单片机作为主从机来控制信号的接受与发送。还学习到了单片机在使用中断的时候,如果有中断申请的话,硬件电路会自动把单片机里接受发送中断的TI和RI置1。虽然在最近一段时间里每天都那么繁忙,但是在这忙碌的过程中却得到了许多的收获。

  坚持不一定成功,但放弃就一定失败!希望以上内容能够对大家起到一定的帮助,如果有不明白的小伙伴欢迎提问,后续也会持续分享学习和进阶的方法。

  今天的分享就到这里啦,别忘了点赞关注加收藏哦~有有关问题可在评论区提问哦~

  串口触摸屏有自己的协议的,有帧头和帧尾的。按照屏幕给的串口协议给51单片机串口编程就可以。串口屏协议包含握手,文本显示,画点画线,显示图片等。不知道你说的是不是这种。