基于51基于单片机的输液监控系统设计安全带佩戴监控系统的答辩常见问题

基于单片机的机动车智能安全带的设计
2014年微型机与应用第23期
作者:恩 德1,陈亚柯1,邓三星1,孙 攀1,毛哲龙2
  摘 要: 为了保证驾乘人员行车时的安全,提出了一种基于单片机的可自动系解的智能的设计和实现方案。该装置以单片机为控制核心,通过传感器检测和按键控制,利用L298N来控制的正反转和停止,实现安全带的收紧、锁定、解除等动作。另外,抽拉式安全带采用预收紧和拉力限制装置,以及微碰开关,可实现及时收紧、适度放松和防过卷等功能。  关键词: AT89S52; 安全带; ; 步进电机0 引言  现今,机动车的数量越来越多,安全带是司机在车辆驾驶过程中的生命保障,被给予的重视也越来越多。由于一些司机不好的习惯,不主动系安全带,在突发交通事故时将导致非常严重的后果[1]。统计表明,不系安全带是造成道路交通死亡事故的第三大原因,仅次于超速行驶和酒后驾驶。因此,研究设计一种可以自动为司机上锁的安全带,降低交通事故对司机造成的伤害,有着非常大的实用意义。  随着电子技术的发展,单片机以其体积小、功能强、功耗低的特点在现实生活中广泛应用[2]。本着实用、可靠、安全、简洁及经济等原则,设计开发了基于单片机的智能控制安全带系解装置[3],当机动车一开始点火时给驾乘人员自动系上安全带;当要解开时,只要熄火或按下按钮即可。  三点式安全带在时速50 km/h的碰撞中,获救率达50%[4]。此外,在机械结构方面的巧妙设计,利用电机的牵引作用[5]使得安全带自动完成上锁,这也使得自动安全带更具有合理性和普遍适用性,可以在很多机动车辆中推广使用,不受车型的限制,有很广阔的市场前景。1 系统设计原理及其总体方案  机动车智能安全带系统的设计需具体实现以下功能原理:插钥匙上电,即当机动车一开始点火时本装置的传感器工作,安全带锁舌通过挂销在电机牵引下,沿着设计的轨道,与锁扣契和,无需驾乘人员动手即可自动帮驾乘人员系上安全带,当要解开时,只要熄火或一按按钮即可;通过滑道两端的微碰开关,实现防过卷;利用直流电机正反转实现安全带锁定和解除的控制。  1.1 系统总体方案  基于单片机的机动车智能型安全带的控制系统结构框图如图1所示。  其中,以单片机AT89S52为控制核心,通过单片机发送相应的信号给驱动模块,采用L298N芯片控制直流电机正反转和停止,从而控制安全带的收紧、锁定、解除等动作;控制按键1和2分别产生控制电机正转和反转的信号给单片机;采用微碰开关实现起点、终点电机自动停止来防止安全带的过卷;5 V稳压模块与单片机相连接,可为控制系统提供电源;红外接近传感器和热释电传感器检测到有人时则产生相应的电平信号给单片机,安全带启动。  1.2 单片机最小系统  本装置最重要的元件是单片机控制中心AT89S52,它是ATMEL所生产的一种低功耗、高性能CMOS 8位微控制器,具有8 KB在系统可编程Flsah存储器。S系列的是能用下载线进行在线编程的ISP,使用简单的HC244电路,就可以通过电脑上面的程序来对单片机进行编程,无须拆下来放到笨重的编程器上面写片子。  单片机外围线路主要包括时钟电路、复位电路和按键电路。  1.3 红外接近传感器  红外接近传感器的工作原理是利用传感器的红外发射头对外发射一定频率的红外线。由于前方物体的阻挡而导致红外线的反射,通过其中间的时间差进而可以求出前方物体的距离[6]。  结合应用的具体需要,本系统采用E18-80NK红外接近传感器,检测到目标时是低电平输出,正常状态是高电平输出。此红外开关传感器是一种集发射和接收为一体的反射式光电传感器,该传感器具有探测距离远、可调节测量范围、不用外加调制信号、受可见光干扰小、价格便宜、易于装配、使用方便等特点。  1.4 热释电传感器  热释电传感器HC-SR501根据菲涅耳原理制成,全自动感应,当有人进入其感应范围时输出高电平,人离开感应范围时自动延时关闭高电平,输出低电平。传感器的各项参数表明此传感器可以方便与各类电路实现对接,适用于本系统。  如图2所示为热释电传感器外接图,1和3分别接电源正负极,2可接单片机。  1.5 步进电机  步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。它可以直接接受数字信号,不需要进行数字与模拟量的转换,具有高精度快速启停能力。步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的、多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的多相时序控制器。  此系统选用两相四线制步进电机,由两组线圈构成,其中,红绿为一组,红蓝为一组。步进电机的驱动电路将电脉冲信号转化为角位移来控制,改变相序可以改变转向,实现正反转;调节脉冲信号的频率便可改变步进电机的转速。  1.6 电机控制模块  电机控制是通过L298N来控制的。电机的正反转都由L298N的不同输出来控制[7]。L298N是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便地驱动一个两相步进电机。L298N与步进电机连接示意图如图3所示。  表 1 是 L298N 逻辑功能表。由表 1 可知 EnA(B) 为低电平时,输入电平对电机控制不起作用;当 EnA(B) 为高电平时,In1、In2(In3,In4)输入电平为一高一低,电机正转或反转;In1、In2(In3,In4)同为低电平电机停止,同为高电平电机快速停止。   1.7 防过卷模块  微碰开关是一种尺寸很小而又非常灵敏的弹簧引动的磁吸附式行程开关。它具有微小接点间隔和快动机构,用规定的行程和规定的力实现开关动作的接点机构,用外壳覆盖,其外部有驱动杆。  因该设计的智能安全带是通过电机带动的,所以这里需要放置两个微碰开关在安全带滑道前端和末端,用于检测安全带的运行状态。当安全带运行到起点或终点时,能够自动发送信号关闭电机,从而防止电机由于长时间通电而损坏[8]。2 机械结构的设计  本系统使用的抽拉式安全带系统采用与常规安全带[9]对称的安装方式,即司机座位的右上方、右下方和左下方,通过固定右端,改变左边安全带的位置实现安全带的上锁解锁功能。这样既能做到了不妨碍车辆的美观,又不妨碍司机的上下车,同时又能完成既定的自动上锁功能。  2.1 抽拉式安全带简介  抽拉式安全带都设有预收紧装置和拉力限制器。当事故发生时,理想的安全带作用过程是:首先,及时收紧,在事故发生的第一时刻毫不犹豫地把人“按”在座椅上;然后,适度放松,待冲击力峰值过去,或人已能受到气囊的保护时,即适当放松安全带,避免因拉力过大而使人肋骨受伤。  2.1.1 预收紧装置  预收紧装置负责提供瞬间绷紧的安全带,目的是防止乘员身体前冲与方向盘、仪表板等发生碰撞而造成伤害,从感知事故到完成安全带预收紧的全过程仅持续千分之几秒[10]。其作用过程是:首先由一个探头负责收集撞车信息,然后释放出电脉冲,该脉冲传递到气体发生器上,引爆气体。爆炸产生的气体压力使球动,球带动棘爪盘转,棘爪盘带动轴转,瞬间实现安全带的预收紧功能。棘爪盘与轴连为一体,安全带就绕在轴上。  2.1.2 拉力限制器  事故发生后,安全带在预收紧装置的作用下,已经绷紧了。但希望在受力峰值过去后,安全带的张紧力度马上降低,以减小乘员受力,这项功能就由安全带拉力限制器来完成:卷绕着安全带的轴芯里边是一根钢质扭转棒,当负荷达到预定情况时,扭转棒开始扭曲,这样就在一定程度上放松了安全带,实现了安全带的拉力限制功能。  在安全带预收紧装置和拉力限制器的共同作用下,可以配合安全气囊瞬间完成紧、松、紧三个动作,缓解胸腔压力,有效保护驾乘人员的胸部,保护能力几乎达到了理想状态,可降低交通事故对司机造成的伤害程度。  2.2 车载安全带滑道设计介绍  滑道需安装于车顶贴近车门的边缘,前端长度以使安全带稍高于方向盘的高度为宜,滑道末端需要到达传统安全带固定处。滑道的材料选择了便于弯折、裁剪和固定的复合材料,滑道中间的弯折角度及固定点可以根据需要自行调整,有较强的适用性。  如图4所示,在滑道上安装一个滑块,由电机驱动,牵引安全带沿滑道运动。滑道末端需安装一个电子锁扣装置,在检测到安全带滑动到末端时会自动锁死安全带。3 系统软件设计  如图5所示为系统软件功能流程图。单片机上电后对电机驱动程序进行初始化,然后检测安全带是否位于初始位置,如果位于初始位置,则开始自动执行滑动并锁扣安全带的动作;如果不在初始位置,则先将安全带牵引至初始位置。进一步判断座位上是否有人,如果有人,则牵引安全带滑动,并扫描按键,到达终点时,锁定安全带;如果没有人则不断检测传感器状态,并进行按键扫描。4 结论  本系统以司机座位为例,对安全带自动上锁过程进行了详尽分析,经过多次软硬件综合测试,系统能够完成预期的功能,通过传感器对各种情况进行不同返回值的判断,将安全带锁舌挂销在电机牵引下,沿着设计的轨道与锁扣契和,实现对乘车人员的自动上锁动能;当要解开时,只要熄火或一按按钮即可。  在机动车辆日益增多的今天,本设计可解决行车时驾乘人员不按规定使用安全带的问题,降低交通事故对司机造成的伤害,有非常大的现实意义和实用价值。参考文献  [1] Brasel K J,Quickel R,Yoganandan N, et al.Seat belts are more effective than airbags in reducing thoracic aortic injury in frontal motor vehicle crashes.[J].The Journal of Trauma-Injury, Infection, and Critical Care,):309-313.  [2] 郭天祥. 51单片机C语言教程[M]. 北京:电子工业出版社, 2010.  [3] 韩力群. 智能控制理论及应用[M]. 北京:机械工业出版社, 2007.  [4] 余义. 预紧式安全带防护效率研究[D]. 武汉:武汉理工大学, 2012.
继续阅读>>
热门关键词当前位置: >>
基于51单片机的ISD4004多段语音录放实验
/////////======基于 51 单片机的 ISD4004 多段语音录放实验=======///////// /////////==================== isd.c ===================////////// ///////// 控制 IC: AT89C51/52,STC89C51/52RC ////////// ///////// 系统晶振:22.1184MHz ////////// ///////// 程序编写:东冬(自然风) ////////// ///////// 调试时间: ////////// ///////// 版本: ISDV ////////// //////////////////////////////////////////////////////////////////// /*操作说明:1、按住 K1 键开始录音,放开 K1 键结束录音;再按住 K1 键,开 始录第二段;以此类推; 2、按一下 K2 键,开始放音,等该段放音结束,继续等待;再按下 K2 键, 放第二段,以此类推 PS:每一段录音长度要手动设置,不能自主控制录音长度(以待后改)*/ #include &STC89C52RC.H& //#include &reg52.h& #include &intrins.h& #include &MyType.h& //=======分段录音首地址定义====================== #define ISD_ADDS1 0x0000 //录音存放地址 1 #define ISD_ADDS2 0x0100 //录音存放地址 2 #define ISD_ADDS3 0x0200 //录音存放地址 3 #define ISD_ADDS4 0x0300 //录音存放地址 4 #define ISD_ADDS5 0x0400 //录音存放地址 5 //========ISD4004 指令定义======================== #define POWER_UP 0x20 //上电指令 #define SET_PLAY 0xE0 //指定放音指令 #define PLAY 0xF0 //当前放音指令 #define SET_REC 0xA0 //指定录音指令 #define REC 0xB0 //当前录音指令 #define SET_MC 0xE1 //指定快进指令 #define MC 0xF1 //快进执行指令 #define STOP 0x30 //停止当前操作 #define STOP_WRDN 0xF1 //停止当前操作并掉电 #define RINT 0x30 //读状态:OVF 和 EOM //=========ISD4004--c51 接口定义================= sbit ISD_SS = P0^0; //片选 sbit ISD_MOSI = P0^1; //数据输入 sbit ISD_SCLK = P0^2; //ISD4004 时钟 sbit ISD_INT = P3^3; //溢出中断 sbit ISD_RAC = P3^2; //行地址时钟 sbit ISD_MISO = P3^6; //数据输出 //==========按键定义========================== sbit K1 = P1^0 ; //录音键 sbit K2 = P1^1; //放音键 //==========BEEP 开关定义====================== #define Beep_ON (P0&=0x7f) //蜂鸣器开 #define Beep_OFF (P0|=0x80) //蜂鸣器关 //==========ISD4004 函数定义=================== void ISD_SPI_Send8( uchar isdx8 ); //spi 串行发送子程序,8 位数据,从低到高 void ISD_SPI_Send16( uint isdx16 ); //spi 串行发送子程序,16 位数据.从低到 高 uint ISD_SPI_Radd(void); //读取标行地址 void ISD_Stop(void); //发送 stop 指令 void ISD_PowerUp(void); //发送上电指令,并延迟 50ms void ISD_PowerDown(void); //发送掉电指令,并延迟 50ms void ISD_Play(void); //发送放音指令,并延迟 50ms void ISD_SetPlay(uint add); //发送指定放音指令,并延迟 50ms void ISD_Rec(void); //发送录音指令,并延迟 50ms void ISD_SetRec(uint add); //发送指定录音指令,并延迟 50ms uchar ISD_Chk_Isdovf(void); void PLAY_now(uchar add_sect); //按指定地址开始放音 void REC_now(uchar add_sect); //按指定地址开始录音 //========延时函数=========================== void Delay1Ms(uchar t); //延时 t*1 毫秒 void Delay(); //////////////////////////////////////////////////////////////////////// // 程序开始 // /*******************************主程序*********************************/ main () { uchar i,j; while (1) { //=========================K1 录音键 if(K1==0) //K1 键按下。录音 { REC_now(i++); //录第一段 if(i&5) i = 0; while(K1==0) //等待录音完毕 { if (ISD_INT==0) //如果芯片 OVF 溢出, 进行 蜂鸣器 提示, 如果取消录音 (松 开 AN 键)则停止录音,芯片复位 { while(K1==0) { Beep_ON; Delay1Ms(250); Beep_OFF; Delay1Ms(250); } } } ISD_Stop(); //发送停止命令 ISD_PowerDown(); } //============================K2 放音键 if(K2==0) { PLAY_now(j++); //放第一段 if(j&5) j = 0; while(ISD_INT==1); //等待一段放音完毕的 EOM 中断信号 ISD_Stop(); //放音完毕,发送 stop 指令 ISD_PowerDown(); } } } /****************************************************************** 名称:PLAY_now(uchar add_sect) 功能:按指定地址段开始播放 指令: 调用:无 返回:无 /*****************************************************************/ void PLAY_now(uchar add_sect) { ISD_PowerUp(); //ISD 上电 Delay1Ms(50); switch (add_sect) //发送 setplay 指令,从 0x0000 地址开始放 { case 1: ISD_SetPlay(ISD_ADDS1); //发送地址的 SetRec case 2: ISD_SetPlay(ISD_ADDS2); //发送地址的 SetRec case 3: ISD_SetPlay(ISD_ADDS3); //发送地址的 SetRec case 4: ISD_SetPlay(ISD_ADDS4); //发送地址的 SetRec case 5: ISD_SetPlay(ISD_ADDS5); //发送地址的 SetRec //case 6:…… }指令 指令 指令 指令 指令 ISD_Play(); //发送放音指令 } /****************************************************************** 名称:REC_now(uchar add_sect) 功能:按指定地址段开始录音 指令: 调用:无 返回:无 /******************************************************************/ void REC_now(uchar add_sect) { ISD_PowerUp(); //ISD 上电 Delay1Ms(50); //延迟录音 ISD_PowerUp(); //ISD 上电 Delay1Ms(100); //延迟录音 switch (add_sect) { case 1: ISD_SetRec(ISD_ADDS1); //发送地址的 SetRec case 2: ISD_SetRec(ISD_ADDS2); //发送地址的 SetRec case 3: ISD_SetRec(ISD_ADDS3); //发送地址的 SetRec case 4: ISD_SetRec(ISD_ADDS4); //发送地址的 SetRec case 5: ISD_SetRec(ISD_ADDS5); //发送地址的 SetRec //case 6:…… } ISD_Rec(); //发送 rec 指令 } /****************************************************************** 名称:ISD_SPI_Send8(uchar isdx) 功能:spi 串行发送子程序,8 位数据 指令: 调用:无 返回:无 /******************************************************************/ void ISD_SPI_Send8( uchar isdx8 ) { ISD_SS = 0; //选中 ISD4004 ISD_SCLK = 0; for(i=0;i&8;i++) //先发低位再发高位,依次发送。 { if ((isdx8 & 0x01) == 1) //发送最低位 ISD_MOSI = 1;指令 指令 指令 指令 指令 else ISD_MOSI = 0; isdx8 &&= 1; ISD_SCLK = 1; ISD_SCLK = 0; } //右移一位 //时钟下降沿发送} /****************************************************************** 名称:ISD_SPI_Send16(uint isdx16) 功能:spi 串行发送子程序,16 位数据 指令: 调用:无 返回:无 /******************************************************************/ void ISD_SPI_Send16( uint isdx16 ) { ISD_SS = 0; //选中 ISD4004 ISD_SCLK = 0; for(i=0;i&16;i++) //先发低位再发高位,依次发送。 { if ((isdx16&0x0001)==1) //发送最低位 ISD_MOSI = 1; else ISD_MOSI = 0; isdx16 = isdx16 && 1; //右移一位 ISD_SCLK=1; ISD_SCLK=0; } //时钟下降沿发送} /****************************************************************** 名称:ISD_SPI_Radd(void) 功能:读取 16 位行地址 指令: 调用:无 返回:无 /******************************************************************/ uint ISD_SPI_Radd(void) {
ISD_SS = 0; //选中 ISD4004 ISD_SCLK = 0; //==============读 16 位地址================ for(i=0;i&16;i++) //读行地址 { ISD_SCLK = 1; //时钟下降沿数据移出 ISD ISD_SCLK = 0; if (ISD_MISO == 1) addsig |= 0x8000; if (i&15) addsig &&= 1; //最先读出的是地址的低位,所以要左移,最后一次地 址不用左移,否则地址溢出 } ISD_Stop(); //发送 stop 指令 ISD_SS = 1; //关闭 spi 通信端 //返回地址值 } /****************************************************************** 名称:ISD_Stop(void) 功能:发送 stop 指令 指令:ISD_SPI_Send8(uchar isdx8); 调用:无 返回:无 /******************************************************************/ void ISD_Stop(void) { //ISD_SS = 0; ISD_SPI_Send8(STOP); ISD_SS = 1; //关闭片选 } /****************************************************************** 名称:ISD_PowerUp(void) 功能:发送上电指令,并延迟 50ms 指令:ISD_SPI_Send8(uchar isdx8); 调用:无 返回:无 /******************************************************************/ void ISD_PowerUp(void) { ISD_SS = 0; //选中 ISD4004 ISD_SPI_Send8(POWER_UP); ISD_SS = 1; } /****************************************************************** 名称:ISD_PowerDown(void) 功能:发送掉电指令,并延迟 50ms 指令:ISD_SPI_Send8(uchar isdx8); 调用:无 返回:无 /******************************************************************/ void ISD_PowerDown(void) { ISD_SS = 0; ISD_SPI_Send8(STOP_WRDN); ISD_SS = 1; } /****************************************************************** 名称:ISD_Play(void) 功能:发送 play 指令,并延迟 50ms 指令:ISD_SPI_Send8(uchar isdx8); 调用:无 返回:无 /******************************************************************/ void ISD_Play(void) { ISD_SS = 0; ISD_SPI_Send8(PLAY); ISD_SS = 1; } /****************************************************************** 名称:ISD_Rec(void) 功能:发送 rec 录音指令,并延迟 50ms 指令:ISD_SPI_Send8(uchar isdx8); 调用:无 返回:无 /******************************************************************/ void ISD_Rec(void) { ISD_SS = 0; ISD_SPI_Send8(REC); ISD_SS = 1; } /****************************************************************** 名称:ISD_SetPlay(uint add) 功能:发送 setplay 指令,并延迟 50ms 指令:ISD_SPI_Send8(uchar isdx8); ISD_SPI_Send16(uint isdx16); 调用:无 返回:无 /******************************************************************/ void ISD_SetPlay(uint add) { Delay1Ms(1); ISD_SPI_Send16(add); //发送放音起始地址 ISD_SPI_Send8(SET_PLAY); //发送 setplay 指令字节 ISD_SS = 1; } /****************************************************************** 名称:ISD_SetRec(uint add) 功能:发送 setrec 指令,并延迟 50ms 指令:ISD_SPI_Send8(uchar isdx8); ISD_SPI_Send16(uint isdx16); 调用:无 返回:无 /******************************************************************/ void ISD_SetRec(uint add) { Delay1Ms(1); ISD_SPI_Send16(add); //发送录音起始地址 ISD_SPI_Send8(SET_REC); //发送 setrec 指令字节 ISD_SS = 1; } //************************************ //检查芯片是否溢出(读 OVF,并返回 OVF 值) //************************************ /*uchar ISD_Chk_Isdovf(void) { ISD_SS=0; ISD_SCLK=0; ISD_SCLK=1; ISD_SCLK=0; if (ISD_MISO==1) { ISD_SCLK=0; ISD_SS =1; //关闭 spi 通信端 ISD_Stop(); //发送 stop 指令 return 1; //OVF 为 1,返回 1 } else { ISD_SCLK=0; ISD_SS =1; //关闭 spi 通信端 ISD_Stop(); //发送 stop 指令 return 0; //OVF 为 0,返回 0 } }*/ /*========================================================== =============== 名称: void Delay1Ms(uchar t); 功能:延时 0.1ms 参数:t,最大 255 调用: 无 返回:无 =========================================================== ==============*/ void Delay1Ms(uchar t) { for (;t&0;t--) { for (i=0;i&150;i++) { _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); } } } //======================================== void Delay() { uint d=5000; while (d--) { i=255; while (i--); } }
基于ISD4004的语音录放系统毕业论文_工学_高等教育_...另一方面,在大学期间学习 51 单片机是学习其他单片机...设计一个语音录放系统,实现播放录音中任意段语音。 ...基于isd4004芯片的语音录放系统设计 - 摘要:本文介绍了基于 STC12C5A60S2 单片机及 ISD4004 语音板为主要部件的语音录放电路的工 作原理、硬件和软件的设计。...ISD4004 系列单片语音录放电路一、 简述 ●单片 8 至 16 分钟语音录放 ●内置微控制器串行通信接口 ●3V 单电源工作 ●多段信息处理 ●工作电流 25-30mA,...语音录放系统设计 摘要:本文介绍了基于 stc12c5a60s2 单片机与 isd4004 芯片...此次实验采用 isd4004-16 型号的, 可录放 16 分钟的语音信号,分 1200 段。...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。基于51单片机的温度传感器的答辩常见问题合集_中华文本库
第2页/共2页
有些电阻的阻值是怎么算出来的?
比如是LED串联的分压电阻,计算方法是:R=U/I
Led工作电压是3V左右,那么电阻的电压就是(供电电压-3v)=2v
Led点亮的电流是4~20ma,那么电阻的电流也是4~20ma
这样电阻就是2除以0.004~0.02=100~500Ω
但是实际使用的时候用100~500Ω,led就太亮了,很容易烧坏,所以就适当的加大了电阻。
晶振为什么选用12M?
12M是比较常用的晶,51单片机是12分频的,如果选用12M晶振,如果是单指令周期的语句,刚好是1us,其他语句正好是1us的整数倍。很轻松算出每个语句用了多长时间。
晶振为什么选用11.0592M?
11.0592比较常应用在串口通信和红外遥控电路中。
11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M计算一下就知道了。如我们要得到9600 的波特率,晶振为11.0592M 和12M,定时器1为模式2,SMOD 设为1,分别看看那所要求的TH1 为何值。代入公式:11.=(2÷32)×((11.0592M/12)/(256-TH1)) TH1=2=(2÷32)×((12M/12)/(256-TH1))TH1≈249.49上面的计算可以看出使用12M 晶体的时候计算出来的TH1 不为整数,而TH1 的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600 波特率。
比如做GSM的设计时,用12M就是不可行的,就得用11.0592M。
定时器的初值是怎么算的?
我们一般采用的是50ms的定时,那样20个50ms就是1s。至于初值怎么算,课本上刚学的时候就交了,可以自己看下,如果看了会发现我们的初值好像和课本上的不一样,那是因为我们是用软件算的。计算初值有好多软件,可以找度娘。软件很方便,动动手就可以了哦。
调试的时候是怎么调试的?
参考我们视频:http://www.youku.com/playlist_show/id_.html
仿真图好像和实物图有差别呢?
仿真图就是一个模拟用的,和实际效果是有点差别的,仿真中没有晶振电路和复位电路都是可以工作的,焊接是按照原理图来的而不是仿真。
?????
常见问题还会陆续更新,欢迎朋友们提出宝贵意见(*^__^*)……
一般不都是用11.0592的么
张立强 (17:04:46):
11.0592M是用到串口通信的时候用的
因为它能算出精确的波特率
12M能算出精确的延时
所以不用串口的时候都是选12M的
第2页/共2页
寻找更多 ""

我要回帖

更多关于 基于单片机的输液监控系统设计 的文章

 

随机推荐