32M的晶振能达到115200的串口波特率吗?(在线等!!!!)

nevergetwin 2006-10-25 04:59:35
网上好几篇“不同晶振的最大波特率”写的32M晶振的最大波特率是9600,而22.1184M的
却能达到115200,这是怎么回事?晶振越大,波特率不是越大吗?

32M的晶振能不能实现115200啊??
...全文
830 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2007-03-12
  • 打赏
  • 举报
回复
以at89c52的T2为串口计数触发来说,32M的晶振产生115200的波特率应该设置T2为65527.3194444444
,实际中只能是整数,如果设置为65527,具体波特率为111111.111111111,误差为3.5%,勉强可用,但是连续收发的时候会有几个出错。
如果设置为65528,具体波特率为125000,误差为8.5%肯定不能用。
seedundersnow 2006-10-26
  • 打赏
  • 举报
回复
什么机器?51么?
51用22.1184M可到115200.
用32M或许也行,但误差可能太大了
FirerFirerFirer 2006-10-25
  • 打赏
  • 举报
回复
不用软件,自已都可以计算,具体的算法由蕊片来决定。
nevergetwin 2006-10-25
  • 打赏
  • 举报
回复
哪个软件能计算误差和波特率呢?
TheSaviour 2006-10-25
  • 打赏
  • 举报
回复
误差的问题吧
nevergetwin 2006-10-25
  • 打赏
  • 举报
回复
能说一下为什么吗?22.1184M的为什么就可以呢?
seaquester 2006-10-25
  • 打赏
  • 举报
回复
115200 不行,不过最大波特率不是9600
51单片机晶振的问题总结   晶振是什么?全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机在运行的时候,需要一个脉冲信号,做为自己执行指令的触发信号,可以简单的想象为:单片机收到一个脉冲,就执行一次或多次指令。   在初学51单片机的时候,总是伴随很多有关与晶振的问题,其实晶振就是如同人的心脏,是血液的是脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题迎刃而解。   一,为什么51单片机爱用11.0592MHZ晶振?   其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。   其二:用11.0592晶振的原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则波特率都是有偏差的,比如9600,用定时器取0XFD,实际波特率10000,一般波特率偏差在4%左右都是可以的,所以也还能用STC90C516 晶振12M 波特率9600 ,倍数时误差率6.99%,不倍数时误差率8.51%,数据肯定会出错。 这也就是串口通信时大家喜欢用11.0592MHz晶振的原因,在波特率倍速时,最高可达到57600,误差率0.00%。用12MHz,最高也就4800,而且有0.16%误差率,但在允许范围,所以没多大影响。   二,在设计51单片机系统PCB时,晶振为何被要求紧挨着单片机?   原因如下:晶振是通过电激励来产生固定频率的机械振动,而振动又会产生电流反馈给电路,电路接到反馈 后进行信号放大,再次用放大的电信号来激励晶振机械振动,晶振再将振动产生的电流反馈给电路,如此这般。当电路中的激励电信号和晶振的标称频率相同时,电 路就能输出信号强大,频率稳定的正弦波。整形电路再将正弦波变成方波送到数字电路中供其使用。   问题在于晶振的输出能力有限,它仅仅输出以毫瓦为单位的电能量。在 IC(集成电路) 内部,通过放大器将这个信号放大几百倍甚至上千倍才能正常使用。   晶振和 IC 间一般是通过铜走线相连的,这根走线可以看成一段导线或数段导线,导线在切割磁力线的时候会产生电流,导线越长,产生的电流越强。现实中,磁力线不常见,电磁波却到处都是,例如:无线广播发射、电视塔发射、手机通讯等等。晶振和IC之间的连线就变成了接收天线,它越长,接收的信号就 越强,产生的电能量
设计内容和要求 1.1设计内容 本设计采用AT89S52单片机以及MAX232通信芯片配合使用与上位机(计算机)进行串口通讯,根据上位机所发送的不同请求数据来判断计算机所要求单片机所返回的数据。上位机软件采用串口调试助手,在串口调试助手发送区输入相应字符,然后点击发送,串口调试助手软件将数据传送到计算机串口处,采用串口连接线将计算机串口信号传送至MAX232芯片,再通过电平转换将RS232信号转换为单片机所能识别的TTL信号,然后将该信号传输到单片机串行口,将数据传送到单片机内部寄存器进行相应处理。 1.2功能要求: 通过上位机串口调试软件给单片机发送命令,单片机接收到所发送的命令后,进行比较处理,确定上位机信息内容后,返回上位机所请求的数据。具体通信波特率和校验方法设置为: 通信波特率:9600bps; 校验方式:无校验; 数据位:8位; 停止位:1位。 具体发送和接收要求为: 首先上位机发送请求命令,当单片机接送到上位机的请求命令后,判断上位机是何数据,然后给出相应的返回数据,具体发送和接收的数据如下表所示: 序号 上位机发送数据 上位机接收数据 1 1 "What do you plan to do this Friday?" 2 2 "I plan to go to the concert." 3 3 "What are you doing next week?" 4 4 "I'm thinking of going to my grandma's" 5 其他字符 "Please select a character '1','2','3','4'!" 单片机串口通讯设计全文共16页,当前为第1页。 单片机串口通讯设计全文共16页,当前为第1页。 系统总体结构 2.1功能模块描述 本设计为上位机与单片机通讯,单片机采用UART串行口,计算机采用串口,考虑到单片机串行口输出的是TTL电平信号,而计算机串口输出的是RS232信号,两种信号存在不兼容的问题,因此需要进行电平转换以达到电平兼容的目的,所以我们还需要选择另外一种具有TTL信号到RS232信号转换功能的芯片,本设计中要求采用交流9V电源供电,而我们单片机以及其他芯片工作所需要的电压为直流,因此这里我们必须将电压性质转化一下,否则芯片将不能正常工作。 整流的方法有半波整流和桥式整流两种方法,半波整流效率较低,只有输入电压的0.45倍,输入交流电压为9V,半波整流后输出的电压仅为4.05V,而我们单片机正常工作的电压为直流5V,不能满足要求,因此半波整流方式不可取。在本设计中我们选择桥式整流方式,其输出电压为输入电压的0.9倍,输入电压为交流9V时,输出电压为8.1V大于单片机工作电压,可以选择,整流后输出直流电压波动较严重,因此在整流输出端我们需要增加滤波网络,进行稳定输出电压。 由于桥式整流电路输出电压大于我们芯片所能承受的最大电压,因此需要增加降压网络,将整流桥输出电压降低到芯片的工作电压5V。为保证电路板加电后能够有上电指示功能,因此在降压网络输出端增加发光二极管作为上电指示灯。 本设计中,当上位机下发请求数据时,下位机(单片机)能够识别下发数据并显示所下发的数据,正常下发请求命令为'1'、'2'、'3'、'4'或其他数据或字符,设计要求电路板能够正常显示'1'、'2'、'3'、'4',显示其他数据或字符时不必显示,因此这里我们需要选择一个8段数码管即可。 单片机串口通讯设计全文共16页,当前为第2页。 单片机串口通讯设计全文共16页,当前为第2页。 2.2功能模块框图 硬件设计 3.1硬件介绍 3.1.1单片机介绍 单片机串口通讯设计全文共16页,当前为第3页。AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 单片机串口通讯设计全文共16页,当前为第3页。 端
PC电脑智能游戏手柄设计背景及概述: 在智能手机随处可见的今天,各式各样的APP层出不穷。由于手机有重力感应功能,手机游戏自然也不会错过这个,相比八、九十年代的小游戏,如今的游戏不再只是用眼去看,用手指操作,更多的是让玩家用身体去体验游戏。赛车类、飞机类、游艇类等游戏,通过控制手机的姿态就能控制游戏对象,这种体验使的很多人着迷。 但是,在游戏体验得到大幅度提升的同时,也存在一些问题。重力传感器与手机是一体的,手机屏幕也是手机的一部分,当敌机快速朝我方冲来时,我们会最大限度的倾斜手机来躲避敌机。但是此时由于手机倾斜,我们要么看不见屏幕内容,要么头也随手机倾斜。 为了解决这个问题,我想把传感器与屏幕分离出来,即,使控制与显示独立。正值“深联华杯单片机应用设计大赛”如火如荼的进行,我就借此机会将我的计划实现。制作一款具有重力感应的游戏手柄。 虽然带重力感应的游戏手柄在市场上也有,但是上百元的价格并不是人人都会购买的。深联华SLH89F5162单片机是增强型51单片机,兼容传统的51单片机,又添加了许多实用的周边模块,使得单片机真正成为“单片微机”。同时因其低廉的价格,使得制作出来的重力游戏手柄的成本也极低,属于平民级的消费电子,市场竞争力不言而喻。 项目设计原理 1、 原理概述 SLH89F5162单片机从传感器MPU6050获取游戏手柄的实时2轴加速度值,经过运算可得到游戏手柄的倾斜角度,将这个角度信息通过串口发送到电脑上的接收程序,由接收程序经过简单的数据打包,就能把游戏手柄的姿态传递给游戏对象,从而达到与智能手机重力感应游戏一样的游戏效果。 2、 硬件设计原理 SLH89F5162单片机有内部16.6MHz振荡器,所以不接外部晶振也可正常工作。用其产生115200波特率,通讯速度快,误差极小,可忽略不计,测试了数万个数据,没发现出错的数据。同时,产生的波特率越小,误差越大。单片机内部有复位电路,可省去外部复位电路,因此一片单片机芯片就是一个最小系统。 控制器SLH89F5162单片机为主控制器,负责传感器的控制,传感器信息的读取、矩阵键盘扫描、独立按键输入、与电脑的串口通讯。 传感器MPU6050内部集成了3轴陀螺仪、3轴加速度计、温度传感器和数字运动处理器,并支持外接其他辅助传感器。I2C通讯接口,数字量输出,体积小。 115200波特率的分频系数 = 16.6M / 16 / 115200 = 9.00608 38400波特率的分频系数 = 16.6M / 16 / 38400= 27.0182 19200波特率的分频系数 = 16.6M / 16 / 19200 = 54.0365 9600波特率的分频系数 = 16.6M / 16 / 9600 = 108.073 3、 软件设计原理 软件开发环境采用Keil3,编程语言采用汇编。采用模块化方法,将I2C读写函数、MPU6050操作函数、键盘扫描函数、数学运算、表格分开在不同的文件,编译时再链接在一起。 MPU6050只支持I2C通讯,最大I2C时钟为400KHz,采用汇编语言编写,可最大限度的满足其时钟要求,这是高级语言无法做到的。重力传感器输出的是某一轴的加速度大小,该值与重力加速度g的比值,就是传感器绕该轴与竖直方向夹角的正弦值,只要求其反正弦就可得到相应的角度大小。 angleX = arcsin(accelX / g) angleY = arcsin(accelY / g) 采集的数据具有噪声,采用数字低通滤波器可有效减小噪声干扰。某一轴上不仅存在重力加速度的分量,同时也存在运动加速度的分量,这会对倾角的计算带来误差。运动加速度的分量比重力加速度小很多,持续时间也很短,采用低通滤波算法也能较小运动带来的误差。 低通滤波算法:y =a * y + (1 - a) * x; x:输入, y:输出, a:系数 由于8位的51单片机先天不足,对浮点数据运算的支持很差,尤其是涉及三角函数、反三角函数。所以我采用空间换时间的方法,即通过查表得到arcsin(accel)的值,这样运算非常快,而且精度没有打任何折扣。SLH89F5162具有片内62KFlash ROM,而accel = -8192 ~ 8192,存储8192个浮点数据需要8192 * 4 = 32K字节,采用SLH89F5162单片机没有任何压力。 视频演示: 硬件设计框图: 软件设计框图: 作品展示:
天气慢慢变热了,有可以把压箱底的小风扇拿出来用了,之前在某宝买的一个小风扇,两档调速,但是,电扇吹一夜,很有可能第二天就感冒了,于是,萌生了做一个电扇控制器的想法,实现定时关风扇的功能(其实很多风扇有定时的功能,可是按耐不住一个单片机爱好者燥热的心)。 当前功能如下: 开机有语音提示(可关闭) 倒计时控制风扇(可设置1-99分钟),使用遥控器设定定时时间,可用遥控器手动关闭风扇,倒计时为0后重新开机时自动设定倒计时30分钟 语音播报当前温度 设定关机温度与开机温度,室温超过设定的最高温度时自动打开风扇,室温低于设定的最低温度时自动关闭风扇,高低温均由遥控器设定(自动开关风扇可设置开关) 待机或使用时按按键1-9可播放设定好的歌曲,语音播报时会打断当前的歌曲 所有数据都有掉电储存,断电又重新上电时继续断电时的工作 用串口连接电脑时将状态信息发送至电脑 使用的单片机是89C52,使用继电器控制高压,安全起见,将继电器放在风扇里面,然后将继电器的控制线引出来;外壳是用3D软件画的,然后某宝找人打样的,人靠衣装马靠鞍,有外壳才显得高大上嘛。 洞洞板还有许多空间,单片机也还有好多IO口没用上,那就再加点东西,手上有一个18B20,装上去,这样就能显示温度了,只有一个蜂鸣器在滴滴滴的,有点单调,然后又淘了一个语音芯片装上去,这样就能实现语音播报了,语音芯片可以串口和IO口控制,由于前期没考虑要用串口控制其它模块就选择的12M晶振,语音芯片要9600的波特率,误差太大用不了,那就只能用IO口控制了。 看看效果视频: 视频中A1是设置倒计时时间,A2是最高温度设置,A3是最低温度设置,按按键1-9为播放歌曲 这个是先将最高温度设置为32℃,然后关机,用手将温度传感器温度升高,温度达到32℃时自动打开风扇,这两个视频都是演示,所以风扇没接上去,右边白色连接器就是连接风扇的。 将原理图和源码都分享出来了,有兴趣的可以一起做做看。

27,377

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧