1.波特率
串口通信就是单片机与电脑端,单片机与单片机,单片机与模块器件之间互发信息进行通信,比如单片机发送一个“1”的字符给电脑端,电脑端的窗口就会接收到“1”。我们常用的波特率为9600,所谓9600指的是一秒钟单片机可以发送9600个数据位,也就是1秒钟的时间里单片机可以发送(9600/8)=1200字节。
如果我们想发送一个字符“A”给电脑端的窗口,那么字符“A”对应的ASCII值就是65,二进制表示为01000001。
2.通信引脚
单片机的P3.1是发送引脚,也就是说要发送字符“A”,这个引脚的变化如下图所示
单片机要发送一个字节给电脑端,首先发送引脚需要先拉高,然后拉低持续(1/9600)秒,电脑端检测到这个低电平信号就会准备接收数据字节。然后我们要发送的二进制位是01000001,但是串口通信发送的字节是低位在前,高位在后,所以上图的发送顺序就是01000001反过来为10000010。一个字节发送完成之后还要发送一个停止位1,电脑端接收到这个停止位就认为一个字节发送完成了。
我们用定时器来实现引脚的持续时间,怎么定时(1/9600)秒怎么设置,计算一下就可以了
(1/9600)=X*(12/11059200)
解得X=96。
因为定时时间间隔比较短,所以我们使用定时器0的工作模式2就可以了。填充TH0的初始值就是256-96=160=0xA0。
因为P3.1在“#include 3.代码 1.波特率 串口通信就是单片机与电脑端,单片机与单片机,单片机与模块器件之间互发信息进行通信,比如单片机发送一个“1”的字符给电脑端,电脑端的窗口就会接收到“1”。我们常用的波特率为9600,所谓9600指的是一秒钟单片机可以发送9600个数据位,也就是1秒钟的时间里单片机可以发送(9600/8)=1200字节。 如果我们想发送一个字符“A”给电脑端的窗口,那么字符“A”对应的ASCII值就是65,二进制表示为01000001。 2.通信引脚 单片机的P3.1是发送引脚,也就是说要发送字符“A”,这个引脚的变化如下图所示 10.1.png 单片机要发送一个字节给电脑端,首先发送引脚需要先拉高,然后拉低持续(1/9600)秒,电脑端检测到这个低电平信号就会准备接收数据字节。然后我们要发送的二进制位是01000001,但是串口通信发送的字节是低位在前,高位在后,所以上图的发送顺序就是01000001反过来为10000010。一个字节发送完成之后还要发送一个停止位1,电脑端接收到这个停止位就认为一个字节发送完成了。 我们用定时器来实现引脚的持续时间,怎么定时(1/9600)秒怎么设置,计算一下就可以了 (1/9600)=X*(12/11059200) 解得X=96。 因为定时时间间隔比较短,所以我们使用定时器0的工作模式2就可以了。填充TH0的初始值就是256-96=160=0xA0。 因为P3.1在“#include 3.代码 #include #include #include void TIM0_Mode2_Init() { TMOD&=0xF0; //清0低四位 TMOD|=0x02; //设置定时器0为工作模式2 TH0 = 0xA0; //计算出波特率9600 TL0 = 0xA0; ET0 = 1; //闭合定时器0中断的开关 TR0 = 1; //启动定时器0 } void main() { u8 key; LED_Init(); //初始化LED硬件模块 KEY_Init(); //初始化按键模块 EA = 1; //闭合总中断开关 TIM0_Mode2_Init(); //定时(1/9600)秒 TR0 = 0; //先关闭定时器 while(1) { key=KEY_Scan(0,1000); if(key==4)TR0 = 1;//开启定时器启动一次字节传输,按一次发送一次。 } } void TIM0_IRQHandler() interrupt 1 { static u8 cnt=0,i,TXDBUF=65; //字符“A”的ASCII值为65 cnt++; //cnt一直在1~10之间变化 if(cnt==1)TXD=0; //cnt变为1,发送起始位,这次的中断函数就执行完了,持续够(1/9600)秒之后,再次进入中断函数,然后就是进入发送数据字节的8位的任务 if (cnt>=2 && cnt<=9) //发送8位数据位,从低位开始引脚的变化为 1 0 0 0 0 0 1 0 { TXD = TXDBUF & 0x01; //“TXDBUF & 0x01”的表达式就是,要么等于1要么等于0,这样P3.1的引脚要么保持高电平,要么保持低电平 TXDBUF >>= 1; } if (cnt == 10) { TXD = 1; //发送停止位 TR0 = 0; //关闭定时器,结束一次字节传输 cnt=0; i++; TXDBUF=65+i; //下次按按键发送的是 B C D E··· } } 大家可能对中断函数里的内容感到艰涩难度,这里简单说明一下,我们按下K4启动了定时器,然后第一次进入中断函数时,做的任务就是拉低P3.1,然后这次的中断函数的任务就结束了,等过了(1/9600)秒之后,再次进入中断函数,上一次拉低P3.1的时间已经持续够(1/9600)秒了,这第二次的中断函数任务就是拉高P3.1,因为发送字符A这个字节的最低位为1,持续够(1/9600)秒进入第三次执行中断函数,拉低P3.1,第四,第五,第六,第七都是拉低P3.1发送0,以此类推,到第10次中断函数执行就是拉高P3.1发送停止位,关闭定时器结束一次字节的传输,要想再次发送需要按K4启动定时器,“TXDBUF=65+i; ”表示下次发送的是66这个数据,再下次就是发送67······ 4.软件设置 在软件界面选择串口助手,选用字符格式显示,查看波特率是否为9600,最后点击“打开串口”。 不断地间隔按K4,就会看到电脑端显示出单片机发送过来的字符数据
上一篇:51单片机-超声波模块
下一篇:51单片机-简洁式串口通信
推荐阅读最新更新时间:2024-11-10 11:20
推荐帖子
- TFT LCD接口芯片 SN65LVDS822
- 本帖最后由dontium于2015-1-2311:40编辑现在低端的单片机,直接驱动TFT的基本没有,一直想找一款TFT驱动芯片,今看到TI的这个芯片,很合适。以下是TI的介绍:SN65LVDS822是一款采用现代CMOS工艺进行设计的高级FlatLink?LVDS接收器。它具有几个独特的功能,其中包括3个可选CMOS输出转换率,1.8V至3.3V的CMOS输出电压支持,一个引脚分配交换选项,集成差分端接(可配置),一个自动低功
- dontium 模拟与混合信号
- Cyclone III FPGA硬件电路 电源设计特别考虑地方
- CycloneIII需要提供如下电源:Vccint:内核电源;Vccio:Bank1~Bank8,输入输出BUFFER电源;VccA:模拟PLL电源VccD:数字PLL电源关于上面电源具体数字,不同的器件需求不同!特别关注Vref这个电源,这个电源主要为那些特别的IO标准提供能量,主要是提供电压偏置,而不是提供大的输入输出电流的.这个电源可以用LDO或电阻网络分压得到.如果该电压标准在BANK中不用的话,则V
- eeleader FPGA/CPLD
- 世界各国安规符号
- 安规的目的是防止产品使用者作用产品时因产品质量问题受到伤害。因此,世界各国纷纷制定自己的安规标准,并赋予一种特殊的标志,以以标志为安全的产品,故有“安规认证”。下面列举下常用的一此安规标志符号。1、亚洲亚洲地区常常看到的有中国,中国台湾、韩国与日本。电子产品要在这些地方卖时,要申请该国的安规,并在铭板上标上相应的安规标志。2、美洲有美国、巴西、墨西哥、智利等。电子产品申请美规、巴西规等等时,通过的话会标志上各国的安规符号,这样就可以进入该国市场了。
- qwqwqw2088 模拟与混合信号
- 【PSoC4心得】温度模拟测试箱 ----> 阅读资料,了解篇
- 非常意外,突然多了一个第三批,偶还排在最后,看起来,我还是那个最后溜进名单的。然后随之被抓进PSoC4群,大家都在说,板子怎么还没到。不过我倒是不太关心这个事情,因为一个实际的工程项目总是会遇到各种意外延迟,阻隔,这种事情我再熟悉不过。因此,实际上,在开发板到来以前,我还可以做很多事情,很多准备,否则,板子到了,我还是的花这些时间,到那时候恐怕就来不及了。于是我开始大量搜集这些资料。并了解了评奖的方式——嗯,我是把它当成一次比赛来做,也算是完了我大学四年没参加过任何比赛
- 辛昕 单片机
- Tcpmp0.72 A4(atlas IV) Wince6.0 上crash的问题
- 之前已有类似的帖子,但没有答案~~请高手解决~~Tcpmp0.72A4(atlasIV)Wince6.0上crash的问题關注下。。不過...TCPMP的問題向來是很少人回答。。。因為知道大多也不會說。。涉及商業利益問題。。唉。。關注6.0下TCPMP的移植問題各位高手,如能帮我解决问题,现金酬谢也行~~~~具体事项加我MSN:zhen.yang@live.cn.想知道你要什么样功能的TCPMP。能播放所有格式文件的吗?还是针对一中格式文件的。说清楚,我可以给你一份试试
- lanfeng143 WindowsCE
- 《电子工程师必备_九大系统电路识图宝典》
- 给大家分享一本书:《电子工程师必备_九大系统电路识图宝典》有需要的童鞋欢迎下载!(资料仅供学习交流使用,请勿用于商业用途)下完记得顶贴哟~~链接:https://pan.baidu.com/s/1gW8S-2ikpu9Kc7DVLj3YHA密码:nggh《电子工程师必备_九大系统电路识图宝典》干货满满,受益匪浅,共同努力,感谢分享!!!!网盘上内容过期了,下载不了了。电子工程师必备_九大系统电路识图宝典,很值得收藏的资料过期了,下不了
- szjlcgw 模拟电子