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单片机-简洁式串口通信
推荐阅读
史海拾趣
除了在智能手机和IoT市场取得突破外,AGM还深耕工业和消费类市场。公司自主研发并量产的可编程逻辑SoC产品系列广泛应用于工业和消费类市场,满足了客户对高容积率、低成本、高品质的市场需求。通过不断的技术创新和产品优化,AGM在工业和消费类市场逐渐形成了自己的竞争优势,并赢得了越来越多客户的认可和信赖。
在电子行业的初期,CSB公司以其独特的技术创新能力脱颖而出。公司研发团队在某一关键领域取得了重大突破,开发出了一款具有市场竞争力的新产品。这款产品不仅满足了消费者对性能和品质的高要求,还凭借其独特的设计和功能,吸引了大量忠实用户。随着产品的热销,CSB公司的知名度逐渐提升,市场份额也稳步增长。
BAE Systems公司的前身可以追溯到多个历史悠久的英国航空与电子企业。1910年成立的布里斯托飞机公司、1918年成立的英格兰电子公司,以及1927年成立的Vickers-Armstrongs,这些企业在各自的领域内都取得了显著的成就。到了1960年,这些企业经过整合,形成了英国飞机公司,这标志着英国航空与电子工业的一次重要合并。这一整合不仅增强了英国在航空领域的实力,也为后来的BAE Systems公司打下了坚实的基础。
East Texas Integrated Circuits公司(ETIC)成立于XX世纪初,最初只是一个由几位电子工程师组成的创业团队。他们的梦想是利用最新的技术研发高性能的集成电路。通过不断的努力,他们成功地研发出了一种新型的低功耗集成电路,这种电路能够在保持高速度的同时降低能源消耗,迅速在市场上获得了认可。
在追求高性能与业务和谐的道路上,Cavium Networks 与 Wind River 公司展开了深度合作。两家公司共同制定了长期的产品研发路线,Wind River 为 Cavium 的 OCTEON II 等多核处理器提供了商业级支持。通过合作,双方共同调整和优化了领先的多核硬件和软件解决方案,为用户提供了世界领先的多核解决方案。这一合作不仅提升了 Cavium Networks 的技术实力和市场地位,也推动了整个电子行业的发展。
Amecon Magnetics公司成立于XXXX年,初始阶段主要专注于磁性材料的研发与生产。在创立初期,公司面临着资金短缺、技术挑战以及市场竞争激烈等多重困难。然而,创始人凭借对磁性材料领域的深刻理解和坚定信念,带领团队不断突破技术难题,逐步开发出具有竞争力的产品。
台湾的半导体产业是全球中占据着举足轻重的地位,tsmc、umc、via、日月光、sis等企业在都在各自领域里的翘楚,我们将集中介绍一些台湾半导体界的风云人物。也希望各位网友能修正和补充。台湾半导体加工业之父 台湾集成电路公司是一家没 ...… 查看全部问答∨ |
转贴:女工程师的点评 我在一个网站上看到了这个帖子,觉得很有意思,对于我们PLC系统开发人员同样有效,大家分享! 看来成为好男人大家都需努力!!! 女工程师点评电路设计: 好的电路与优秀男人的10大共同点 作者:Eva Ye 每天, ...… 查看全部问答∨ |
本帖最后由 dontium 于 2015-1-23 13:07 编辑 即将要分析的电路如下,这个电路本人觉得设计的很经典。这个电路主要完成的任务就是监测流经Q1和采样电阻R6中的电流。单片机C8051F330对电流的各种情况做出动作和反应。分析的主要部分不是在单片 ...… 查看全部问答∨ |
在哪里可以下载到评估套件LM3S8962里面运行的那个程序。就是那个小游戏的源代码。 如题: 我说的是评估套件LM3S8962里面运行的那个程序。就是那个小游戏的源代码。 [ 本帖最后由 hhxianzi 于 2011-9-29 10:33 编辑 ]… 查看全部问答∨ |
首先与实测系统功耗进行对比,验证了Xilinx公司ISE软件包中FPGA功耗估算工具XPower的准确性.然后对FPGA设计中影响系统功耗的几个 相互关联的参数进行取样,通过软件估算不同样点下的系统功耗,找到功耗最低的取样点,得到最佳设计参数,从而达到优化系 ...… 查看全部问答∨ |