历史上的今天
返回首页

历史上的今天

今天是:2025年02月27日(星期四)

正在发生

2018年02月27日 | 单片机最小系统与PC机的通信分析

2018-02-27 来源:eefocus

  PC机和多个单片机也可以组成多级控制系统,一般以PC机为后级,多个单片机最小系统为前级。其通信一般由两个独立的模块组成,即单片机通信模块和PC机通信模块。
  
  1.单片机通信模块的设计
  
  51单片机内串行口部分有两个物理上相互独立的数据缓冲器SBUF,但两个缓冲器的地址是一个(99H)。该缓冲器用来发送和接收数据。专用寄存器SCON和PCON控制串行口的工作方式和通信的波特率设定。定时器作为波特率发生器。CPU和SBUF写数据即是发送数据,CPU从SBUF读数据就是接收数据。
  
  单片机51串行口是全双工串行通信口。0串行口控制寄存器是SCON。
  
  SMO和SMl:工作方式选择位,如表所列。



  
  表中UART是异步串行通信。
  
  SM2:允许方式2和方式3多机通信。
  
  REN:允许串行接收。
  
  TB8:在方式2和方式3时是发送数据的第9位。
  
  RB8:在方式2和方式3时接收数据的第9位;在方式1时,若SM2=0,则RB8为接收到数据的停止位。
  
  TI和RI:发送和接收中断标志,表示是否已发送完或接收到数据,由硬件置位,软件清O。因为PC机的RS - 232接口是由8250芯片控制的,所以一般PC/XT和PC/AT机用RS - 232与其他设备通信时所使用的是8位数据位(可少于8位数据),由此决定单片机必须设置方式1。
  
  工作方式1:当SMO和SM1一0时,串行接口被选择为工作方式1,此时为可变波特率的8位异步通信方式。
  
  发送数据以TxD端输出,每帧信息为10位:一位起始标志位0、8位数据位和一位停止位1。发送时数据先送到缓冲器SBUF,然后启动发送。数据发送完后,将中断标志TI置1。
  
  接收时(BEN-1),数据从RxD输入,当采样到第一个1到O的下跳沿时,启动接收器;确认起始位后,接收一帧信息;当RI=O,停止位为1或SM2 =0时,停止位进入RB8,中断标志位RI置1,接收了一帧数据。
  
  波特率的设定 单片机定时器作为波特率发生器。为此定时器1须是工作方式2,即自动重装载模式。TL1作为8位计数器,TH1作为常数缓冲器。当TL1计数溢出时,将TH1中常数送到TLO中,使TL1再次从初值开始重新计数。定时器1产生固定频率占空比是1:1的脉冲,波特率可由设定时间常数确定。


  
  式中:fosc是主振荡频率,选用6 MHz。
  
  当波特率为1 200时,TH1=TLl=OF3H。
  
  通信所用线是一般双绞电源线。通信距离一般在30 m以内。如果通信距离比较远,则须考虑用光电隔离或电流环来驱动,这时距离可达1000 m。波特率为300时问题不大,通信是可靠的,对通信线也无特殊要求。
  
2.PC/XT机通信模块
  
  PC/XT机RS - 232接口输入/输出使用MC1488和MC1489。用9013和9012两只晶体管把RS - 232的标准电平-12 V表示1,+12 V表示0,转变成0~5 V的电平,以便和单片机最小系统中8031进行连接。D是发光二极管,PC机和单片机通信时,D有明暗变化,表示正在传送数据。这种电路是准RS - 232接口电路。
  
  单片机通信模块包含3个子模块:
  
  ●初始化模块置定时器1的工作方式,置计数初值,定义波特率,定义串行口的工作模式等。
  
  ●发送模块将累加器ACC中的内容发送到串行口。
  
  ●接收模块接收串行口上的数据,送到累加器ACC中。是返回DOS。先选择1,把ABC. OBJ文件传到开发机(或最小系统)的以2100H开始的地址处。PC机传送完ABC. OBJ后,又返回到(1~3)通信的提示状态。这时选择2,即把单片机的外存RAM中2100H处的16个(十进制数)字节内容传回PC机,并形成另一个文件,文件名是ABCI. OBJ。最后再返回DOS,这时用DOS的TYPE命令分别显示ABC. OBJ和ABCLOBJ两个文件的内容,从而比较是否一致,以便证明通信过程是否正常。
  
  如果通信不在开发机上进行,只须把单片机的通信程序写入EPROM中,并通过按键或启动复位执行通信程序。其他步骤同上,即可完成相应通信。
  
  这个PC机和单片机的通信模块应用是很广的。如果再增加一些控制命令,将是一个很好的控制系统。KDC -Ⅲ型开发机的在线仿真机通信程序就是在此基础上扩充的。


推荐阅读

史海拾趣

ADATA公司的发展小趣事

ADATA科技成立于2001年,是一家专注于提供存储解决方案的公司,以下是该公司发展的五个相关故事:

  1. 公司成立与初期发展: ADATA科技成立于2001年,总部位于台湾新北市,最初致力于生产和销售DRAM模块。随着存储技术的不断发展,公司逐渐扩展了业务范围,涵盖了闪存产品、固态硬盘、移动存储设备等多个领域。

  2. 技术创新与产品推出: ADATA科技在存储领域进行了持续的技术创新,并推出了一系列具有竞争力的产品。公司不断提升产品性能、降低成本,并注重产品的设计和用户体验。除了传统的DRAM模块,公司还推出了闪存卡、固态硬盘、移动硬盘等产品,满足了不同客户和市场的需求。

  3. 市场拓展与国际化发展: ADATA科技积极拓展国内外市场,并逐步实现了国际化发展。公司产品远销全球各地,与全球范围内的主要零售商、电子产品制造商建立了合作关系。通过与合作伙伴的紧密合作,公司产品在国际市场上得到了广泛认可和好评。

  4. 品牌建设与市场影响力: ADATA科技通过持续的品牌建设活动,不断提升了在存储领域的市场影响力。公司参加各类行业展会、展示活动,并投入大量资源进行市场推广和宣传。同时,公司还与体育、文化等领域开展赞助活动,提升品牌知名度和美誉度。

  5. 未来展望与持续发展: 作为一家专注于存储解决方案的企业,ADATA科技将继续致力于技术创新和产品开发。公司将不断改进现有产品,推出更多性能更好、功能更丰富的存储产品,以满足不断变化的市场需求。同时,公司还将继续拓展国际市场,加强与合作伙伴的合作,实现业务的持续增长和发展。

喜美克斯(Cvilux)公司的发展小趣事

在市场竞争日益激烈的电子行业中,喜美克斯公司始终坚持品质至上的原则。公司投入大量资源用于产品质量控制和生产工艺的改进,确保每一件产品都能达到最高的品质标准。这种对品质的执着追求,让喜美克斯的产品在市场上赢得了良好的口碑,也为公司赢得了众多忠实的客户。

Electro Technik Industries公司的发展小趣事

作为一家具有社会责任感的企业,ETI始终关注环保问题。公司积极推广绿色生产理念,采用环保材料和工艺进行生产。同时,ETI还投入大量资金用于环保设施的建设和运营,减少了对环境的污染。此外,ETI还积极参与社会公益活动,为环保事业贡献自己的力量。这些举措使ETI在业界树立了良好的形象,赢得了社会各界的广泛赞誉。

昭华(CHA)公司的发展小趣事

昭华(CHA)公司自2007年成立以来,就致力于拨码开关与轻触开关的研发制造。在初创阶段,公司面临着技术挑战、资金短缺以及市场竞争激烈等多重困难。然而,昭华团队凭借着对技术的热情和执着,通过不断的技术创新和产品优化,逐渐在市场上树立了自己的品牌。他们不仅成功研发出多款高性能的开关产品,还积累了丰富的行业经验,为公司的后续发展奠定了坚实的基础。

CDIL[Continental Device India Pvt. Ltd.]公司的发展小趣事

CDIL采用无晶圆厂模式生产分立半导体器件,专注于功率半导体和高可靠性组件的研发与生产。这一模式使CDIL能够更加灵活地应对市场变化,降低生产成本,提高产品竞争力。同时,公司还采用自己的封装技术,确保产品能够满足太空应用等严苛环境的严格标准。

A/D Electronics Inc公司的发展小趣事

A/D Electronics Inc在创立初期,以其卓越的技术研发团队在模拟到数字转换器(ADC)领域取得了重大突破。公司研发出一款高精度、低噪声的ADC芯片,这一创新产品迅速在市场中获得认可,为公司的初步发展奠定了坚实基础。随着技术的不断迭代,A/D Electronics Inc陆续推出了一系列高性能的电子产品,满足了市场对于高效、稳定电子元件的日益增长需求。

问答坊 | AI 解惑

dac0832与lm324输出问题?帮忙看一下!!

本帖最后由 dontium 于 2015-1-23 11:32 编辑 电路如图!!我用的单电源供电,lm324没用的管脚是悬空的!不知道有没影响。问题是输出最大只有1.6V,而我的程序结果应该是0到5v 就算不能满量程也该在5V附近吧!!大侠们 帮忙看下吧!!谢了!!dac0 ...…

查看全部问答>

zigbee中语音的问题

最近小弟正在做一个利用zigbee协议的无线语音通信的东东,碰到了一些问题,例如在zigbee协议的home_automation_profile已经有了关于light、Closures等的ID,那关于voice的是不是自己定义一个值就行了?    麻烦这一领域里的师兄师姐帮助 ...…

查看全部问答>

关于vxwoks中zbuf的问题

前几天,在跑程序的时候遇到一个zbuf的异常,vxworks打印的调用链如下: data storage Exception current instruction address: 0x0050cb60 Machine Status Register: 0x00029230 Data Exception Address Register: 0x0069bf38 Condition Regi ...…

查看全部问答>

ARM7/9的flash然后实现加密?

据我所知,flash里面的程序可以通过编程器将其读出,这样不是很容易被别人盗取吗? 现在是否有什么好办法呢?…

查看全部问答>

啟動代碼的問題

LM每種型號芯片的啟動代碼一樣嗎?? 如果不同,編寫驅動代碼應該參照什麽? 各種啟動代碼裡面的地址如何確定???????? 各位大俠說說看…

查看全部问答>

Linux的开发软件SldView 谁有啊,能否给我发一下,不胜感激

想做Linux开发,在网上找了下 发现开发包都不是很好找 望大虾有的话能够发一下 先行谢过 qq:175232683…

查看全部问答>

【TI文献】智能能源规范 (Smart Energy Profile) 解决方案

智能能源规范 (Smart Energy Profile) 解决方案,欢迎大家下载!…

查看全部问答>

电源类的题目准备哪些元器件

本帖最后由 paulhyde 于 2014-9-15 03:38 编辑 各位大神,能分享一下你们的经验吗,你觉得今年的带赛题,电源类的应该准备那些元器件,最要有具体的型号,谢谢分享    …

查看全部问答>