一、实验目的
1. 理解单片机串口的工作原理。
2. 掌握串口的编程方法。
二、实验内容
1. 验证课堂例题
编译下载运行课堂例题——“串口发送中断”(usart_ex1)和“串口接收中断”(usart_ex2),查看运行结果。理解程序的编程思想和程序执行过程。
2. 设计程序
参考上述例题的电路和编程思路,自行设计电路,包括六位数码管、4*4矩阵键盘、串口电路,完成按键定义值的数码管显示和串口通信,串口接收到的字符在数码管显示。
具体要求如下:
(1)上电复位后,数码管显示“000000”,单片机通过串口发送“Hello-Usart”握手信息;
(2)按下键盘数字键,相应数字字符在数码管最后一位显示,同时该按键的定义值以字符格式发送给串口;
(3)上位机向单片机发送’0’~’9’字符,单片机将接收到的字符在数码管最高位进行显示;
(4)要求串口发送不使用中断,串口接收使用中断。
在设计报告中,需进行总体设计思路描述,给出所涉及到的主程序、中断程序、关键功能子函数的流程图和设计代码。描述程序调试结果及出现的问题。
三、实验结果
1. 在下方贴出使用Proteus绘制的电路原理图。
2. 描述所设计程序的总体设计思路(包括根据任务划分的程序顶层结构、各任务的设计思路、各任务间的数据传递,如何解决关键问题等)
总体设计思路:首先定义相应变量,初始化引脚,初始化中断,初始化数码管和矩阵键盘。然后编写延时函数,数码管显示函数,按键检测函数,按键定位函数,串口发送函数,串口接收中断服务子函数,初始化函数,主函数。
主函数:初始化中断、数码管和键盘,首先向串口发送Hello-Ustar,再通过while循环来判断是否有按键按下,按键按下数码管第六位显示按下的数据同时向上位机发送数据。
3. 根据所设计的程序顶层结构,对主函数、中断函数(如果没有使用中断可不写)、关键功能子函数的设计思路进行简单描述,并给出各函数的流程图(用Visio画)
主函数main():初始化后判断是否有按键按下,按键按下数码管显示数值并且通过串口发送给上位机。