1,51单片机所用的晶振的范围是多少

理论上来讲晶体的负载电容C=C1/2+C0(电路杂容),而在市场中晶体的负载电容C为7PF,12.5PF,16PF,18PF,20PF,33PF,所以C1会更高,如果按芯片的要求C1=5PF的,根据晶体的理论,实际接电容比晶体的标称电容小,输出的频率就比晶体标称的频率要偏高(晶体负载电容对晶体频率起微调作用),所以最终还是要看芯片所要求的这实际频率,C1,C2对晶体的起振没多大影响,但对输出频率会有差别。
Stc的我用过40M,但单片机手册中好像最高是33M
不接电容肯定不能起振的。这种振荡电路必须两个电容。没有30p的你也可以用个差不多数量级的电容就行,本来标称值就有误差 ,也不要求那么准确。

51单片机所用的晶振的范围是多少

2,单片机最大可以用多少的晶振支持的波特率一般多少

不同的单片机厂家支持的晶体,和内部的时钟频率的关系是不同的,有的是一半,有的是1/4甚至更多。支持的波特率也是单片机厂商会标记的。9600*6,也就是60K左右,常用的波特率比较高一个档次为115200,因此您这个并不苛刻,要注意规格书里面的说明,还有应用指南。没有特别要求的话,国产的也可胜任了。
stc12单片机 24M晶振 最高波特率750000,ch340芯片 本人亲测,完全没问题。实际传输速度40000字节每秒。
晶振频率高,最高波特率也可以相应提高,并且可以减小一些常用波特率的误差,如51单片机用定时器1产生波特率,晶振频率低时会出现写入定时器的脉冲个数值很小,如需定时4.5个脉冲,只能写入5和4误差都 很大,如果晶振频率提高1倍,就 可以写入9,误差为0

单片机最大可以用多少的晶振支持的波特率一般多少

3,单片机的晶振频率怎么确定

根据使用需要确定,举例:如果要产生标准的串口波特率,应使用11.0592MHz,如果要让51单片机产生整数的时钟频率可使用12MHz或者24MHz单片机。另外根据单片机本身的参数,不要选择过高的频率,否则会工作不稳定。举例:Atmega8L-8PU,这个单片机后面一个8的意思就是建议最大工作频率不要超过8MHz,如果超过8MHz不大于16MHz,可以选用Atmega8L-16PU。从内存中取出一条指令,并指出下一条指令在内存中的位置。对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。指挥并控制CPU、内存和输入输出设备之间数据流动的方向。PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。扩展资料:在恒定的环境条件下测量振荡器频率时,振荡器频率和时间之间的关系。这种长期频率漂移是由晶体元件和振荡器电路元件的缓慢变化造成的,可用规定时限后的最大变化率(如±10ppb/天,加电72小时后),或规定的时限内最大的总频率变化(如:±1ppm/(第一年)和±5ppm/(十年))来表示。基准电压为+2.5V,规定终点电压为+0.5V和+4.5V,压控晶体振荡器在+0.5V频率控制电压时频率改变量为-110ppm,在+4.5V频率控制电压时频率改变量为+130ppm,则VCXO电压控制频率压控范围表示为:≥±100ppm(2.5V±2V)。高精度与高稳定度,无补偿式晶体振荡器总精度也能达到±25ppm,VCXO的频率稳定度在10~7℃范围内一般可达±20~100ppm,而OCXO在同一温度范围内频率稳定度一般为±0.0001~5ppm,VCXO控制在±25ppm以下。参考资料来源:百度百科--晶体振荡器参考资料来源:百度百科--单片机
根据使用需要确定,举例:如果要产生标准的串口波特率,应使用11.0592MHz,如果要让51单片机产生整数的时钟频率可使用12MHz或者24MHz单片机。另外根据单片机本身的参数,不要选择过高的频率,否则会工作不稳定。举例:Atmega8L-8PU,这个单片机后面一个8的意思就是建议最大工作频率不要超过8MHz,如果超过8MHz不大于16MHz,可以选用Atmega8L-16PU。当然,非要让Atmega8L-8PU使用大于8MHz的频率,也可以,属于超频使用,相当于我们电脑的CPU超频,会工作不稳定。
一般制作单片机电路都是得到所要使用的单片机技术说明书,上面明确告知可以使用频率的上限。可以根据这个购买晶振器件。目前市面出现一批性价比很高的单片机可以从0频率一直到几十兆频率的全部适用的品种,这样为设计者提供了极大的设计空间。
用放大镜看晶振标识,比如上面写的8.00000M就是指8M晶振再有就是搭建好最小系统以后给单片机上电,用示波器测试该晶振频率
你写个定时的程序。然后在和现实的时间对照起来。就可以算出晶振的平率了。一般晶振上面写着有是多少的哈

单片机的晶振频率怎么确定

4,帮忙用C语言写一段51单片机的程序晶振12M

#include <reg52.h>/* 本程序功能,输出方波,频率1-25ms 单片机@12MHz /12T*/sbit Pulse=P1^1; //---方波sbit Add=P3^2; //---频率加sbit Dec=P3^3; //---频率减sbit Start = P1^3; //---开关键sbit Display_Ten_Bit = P2^0;sbit Display_Bit_Bit = P2^1;code unsigned char TH0_Reload[21] = 0x00,0x0B,0x0B,0x26,0x0B,0x3C,0x5D, 0x74,0x0B,0x26,0x3C,0x4E,0x5D,0x69, 0x74,0x7D,0x85,0x8D,0x93,0x99,0x9E };code unsigned char TL0_Reload[21] = 0x00,0xDC,0xDC,0xFC,0xDC,0xB0,0x3D, 0x7D,0xDC,0xFC,0xB0,0x71,0x3D,0xC2, 0x7E,0xCB,0xEE,0x1C,0x7E,0x34,0x58};code unsigned char Pre_Freq[21] = #define TH1_RELOAD 0xF4//---定时器1初始值,定时3ms#define TL1_RELOAD 0x48//---定时器1初始值,定时3msdata unsigned char Freq = 20; //---频率值data unsigned char Fre_Cnt = 0; //---计数值bit Display_Bits = 0;//----共阳数码管-----------------------------------------------------------------------code unsigned char Seg_Table[10] = //----用于按键去抖动的延时-------------------void Key_Delay(void)unsigned short i = 60000;while(i++);}void main()//----定时器1,定时3ms,用于动态显示-----------TH1 = TH1_RELOAD;TL1 = TL1_RELOAD;//----用于输出脉冲波--------TH0 = TH0_Reload[0];TL0 = TL0_Reload[0];//----两定时器都工作于方式1,且都开中断--------TMOD = 0x11;ET0 = 1;ET1 = 1;EA = 1;//----开启定时器1,即显示----------------------TR1 = 1;while(1)if(Add == 0) //---如果"频率+"键 按下Key_Delay(); //---按键去抖if(Add == 0)if(Freq<20) Freq++; //----如果频率值小于20,则加1while(Add == 0); //---等待按键送开}}if(Dec == 0) //---如果"频率-"键 按下Key_Delay();if(Dec == 0)if(Freq>1) Freq--; //----如果频率值大于1,则减1while(Dec == 0); //---等待按键送开}}if(Start == 0)//---如果"启动/暂停"键 按下Key_Delay(); //---按键去抖if(Start == 0)TR0 = 1; //---启动定时器0,输出方波}elseTR0 = 0; //---关闭定时器0,暂停输出}}}void ISR_Timer0_Pulse () interrupt 1//----定时器0重载-----------------------------------TH0 = TH0_Reload[Freq];TL0 = TL0_Reload[Freq];//----计数值自加------------------------------------Fre_Cnt++;//----如果计数值不小于频率值,翻转一次---------------if(Fre_Cnt >= Pre_Freq[Freq])Pulse = ~Pulse;Fre_Cnt = 0; //---清零计数值--------------------}}void ISR_Timer0_Display() interrupt 3//----定时器1重载-----------------------------------TH1 = TH1_RELOAD;TL1 = TL1_RELOAD;//----决定显示十位还是个位--------------------------Display_Bits = ~Display_Bits;//----数码管驱动------------------------------------if(Display_Bits) //----显示十位Display_Bit_Bit = 1; //---关闭个位的位选P0 = Seg_Table[Freq/10]; //---送十位的段码Display_Ten_Bit = 0; //---打开十位位选}else //----显示个位Display_Ten_Bit = 1; //---关闭十位的位选P0 = Seg_Table[Freq%10]; //---送个位的段码Display_Bit_Bit = 0; //---打开个位的位选}}有不明白的欢迎追问
void delay1us() //@12.000mhz_nop_();_nop_();_nop_();_nop_();}//stc y5 的指令集//y1就一个_nop_();

文章TAG:单片机烧写程序晶振多少单片机  写程序  程序  
下一篇