首页 理论教育 串口通信示例:数字钟时间校准

串口通信示例:数字钟时间校准

时间:2023-10-11 理论教育 版权反馈
【摘要】:图5-5 串口校准时间的数字钟初上电时的状态直到上位机(计算机)发送当前时间后单片机就会停止向上位机发送请求,电子钟就以上位机发来的h、min、s的值作初始值开始计时。其中DB9串口通过串行数据线与计算机相连。字符串数组是一特殊的数组,它与其他数组的区别是:字符串数组的最后一个元素为“\0”,对应的ASCII值为0x00。因此我们在程序中声明字符串数组时,其长度需比要存的字符串多一个元素,最后一个元素用于存储空字符“\0”。

串口通信示例:数字钟时间校准

1.任务书

利用YL-36单片机实训装置,实现24h的数字钟,初始时是00-00-00,显示格式是:

978-7-111-46996-4-Part02-14.jpg

刚上电时单片机不断向上位机(计算机)发送请求:

qingshurudangqianshijian! (注:为“请输入当前时间”的汉语拼音

geshi:xxxxxx(xiaoshi fenzhong miaozhong) [注:格式(小时 分钟 秒钟)],如图5-5所示。

978-7-111-46996-4-Part02-15.jpg

图5-5 串口校准时间的数字钟初上电时的状态

直到上位机(计算机)发送当前时间后单片机就会停止向上位机发送请求,电子钟就以上位机发来的h、min、s的值作初始值开始计时。

2.硬件的接线

单片机与计算机的连接如图5-3a所示。其中DB9串口通过串行数据线与计算机相连。其他硬件的接线在程序代码的相关声明中很容易看清。

3.程序代码示例

978-7-111-46996-4-Part02-16.jpg

978-7-111-46996-4-Part02-17.jpg

978-7-111-46996-4-Part02-18.jpg(www.xing528.com)

978-7-111-46996-4-Part02-19.jpg

(1)知识链接一:字符型数据

1)字符型常量。C语言中的字符型常量是用单引号括起来的一个字符。如‘a’、‘A’、‘b’等都是字符型常量。注意:‘a’、‘A’是两个字符常量。

由ASCII字符表可以发现,有一些字符没有“形状”,如换行(ASCII值为10)、回车(ASCII值为13)等。还有一些字符虽然有“形状”,却无法从键盘上输入,如单引号是用于界定字符型常量的,但它自身作为字符型常量却无法用单引号来界定。如果编程时需要用到这一类字符,可以用C语言提供的一种特殊形式进行输入,即用一个“\”开头的字符序列来表示字符。常用的以“\”开头的特殊字符(转义字符)及其含义详见表5-4。

5-4 转义字符及其含义

978-7-111-46996-4-Part02-20.jpg

2)字符型变量。字符型变量用于存放字符型常量。一个字符型变量只能存放一个字符。例如:

978-7-111-46996-4-Part02-21.jpg

将一个字符型常量存入一个字符型变量,实际上是将字符型常量的ASCII值存入字符型变量的存储单元中。a、b的ASCII值分别为十进制的97、98。所以,m1、m2的ASCII值分别为十进制的97、98。

(2)知识链接二:字符串数组

在C51语言中,没有字符串概念,但可以采用字符串数组,例如程序中的第8行就是声明一个字符串数组。字符串数组是一特殊的数组,它与其他数组的区别是:字符串数组的最后一个元素为“\0”(叫做空字符),对应的ASCII值为0x00。因此我们在程序中声明字符串数组时,其长度需比要存的字符串多一个元素,最后一个元素用于存储空字符“\0”。例如:

charst[12];

该语句声明了一个字符型数组,长度为12,如果该数组用来存放字符串则只能存放11个字符(11个字节)组成的字符串,最后一位必须为空字符“\0”。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈