首页 > 编程知识 正文

ne555流水灯,ne555频率计算

时间:2023-05-03 06:04:28 阅读:106331 作者:912

NE555(timeric )是8针时基IC,ne555是属于555系列的计时器IC的一个型号,555系列IC的引脚功能和运用具有互换性,但根据型号不同,价格不同,稳定性、省电性、可产生的振荡频率也大另一方面,555是一种用途广泛的普通定时器IC,可以使用较少的电阻和电容器来产生数字电路所需的各种频率的脉搏信号。

主要特点:

1 .只需简单的电阻器、电容器,即可完成特定的振荡延时作用。 其延迟范围极广,在几微秒到几个小时之间。

2 .其操作电源范围很大,可与TTL、CMOS等逻辑电路合作,即其输出电平和输入触发电平可与该系列逻辑电路的高、低电平相一致。

3 .输出侧供电电流大,可以直接带动各种自动控制的负载。

4 .计时精度高,温度稳定度好,而且价格便宜。

读取位:

Pin 1(接地)或公共接地)通常连接到电路的公共接地。

Pin 2(触发点) -此脚踏位置是触发和启动NE555的时间周期。 触发信号的上缘电压应大于2/3 VCC,下缘应小于1/3 VCC。

Pin 3(输出) -时间周期开始时,555的输出脚位置转移到比电源电压少1.7伏的高电位。 的结束输出返回o伏左右的低电位。 高电位时的最大输出电流约为200 mA。

Pin 4(复位) -当低逻辑电位输送到此脚位置时,计时器复位,输出恢复为低电位。 通常连接到正电源或被忽略。

Pin 5(控制) -该引脚允许外部电压改变触发电压和栅极电压。 如果计时器运行稳定或振荡,此输入可用于更改或调整输出频率。

Pin 6(重置锁)- Pin 6重置锁并将输出置于低状态。 该引脚的电压从1/3 VCC电压以下变为2/3 VCC以上时开始该动作。

Pin 7)放电)该管脚具有与主要输出管脚相同的电流输出能力,当管脚3为低电平时,管脚7的对地为低电阻状态(对地导通),当管脚3为高电平时,管脚7为高电阻状态

pin8(v ) -这是555定时器集成电路的正电源电压引脚。 供电电压范围为4.5伏(最小值)到16伏)。

NE555在蓝桥杯单片机省赛中只参加过一次考试,在第10届省赛中,要求使用NE555完成Pinlv的测量和显示。 如下图所示。

其次,是在第10届蓝桥杯省赛中,对频率测量的部分进行个别的简单编程。

设计内容:

1 .采用上图显示格式显示采集到的频率值显示在数码管上;

2 .数码管使用6位数码管进行频率数据显示,当显示的数据长度小于6位时,未使用的数码管的位熄灭。

说明:频率测量功能需要将竞赛板J3-SIGNAL引脚和P34引脚短路。 频率大小的调节由板上的RB3实现。

# includes t c15 f2k 60s2. h # defineucharunsignedchar//无符号字符型uchar#define uint unsigned int //无符号整数型uintucharcodetab [ ]={ 0000 } //定义字符类型变量yi,er,san,si,wu,liu,qi,ba,控制变量uint fan,fan_send,zheng,zheng_send,trie,pinlv,ba作为数字管道bit flag=0; voidDelayms(intms; //延迟函数void allinit (; //初始化函数voiddisplay1(ucharyi,uchar er ); //1、第二级数字代码函数voiddisplay2(UcharSan,uchar si ); //3、第4级数字代码函数voiddisplay3(UcharWu,uchar liu ); //5、第6级数字代码函数voiddisplay4(ucharqi,uchar ba ); //7、第8级数字代码函数voidtimer0init(void ); //5微秒@12.000MHz

void Timer1Init(void);//1毫秒@12.000MHzvoid Frequency(); //频率测量显示函数void main()//主函数{allinit(); //初始化函数Timer0Init();Timer1Init();yi=1;er=2;san=3;si=4;wu=5;liu=6;qi=7;ba=8;//让数码管依次显示1~8,用来检验数码管显示函数程序是否有误while(1){Frequency(); //频率测量显示函数display1(yi,er); //第一、二段数码管函数display2(san,si); //第三、四段数码管函数display3(wu,liu); //第五、六段数码管函数display4(qi,ba); //第七、八段数码管函数}}void Frequency() //频率测量显示函数{yi=12;er=11;san=11;if(pinlv>=10000){si=pinlv/10000;wu=pinlv%10000/1000;liu=pinlv%1000/100;qi=pinlv%100/10;ba=pinlv%10;}else if(pinlv>=1000){si=11;wu=pinlv/1000;liu=pinlv%1000/100;qi=pinlv%100/10;ba=pinlv%10;}else if(pinlv>=100){si=11;wu=11;liu=pinlv/100;qi=pinlv%100/10;ba=pinlv%10;}else if(pinlv>=10){si=11;wu=11;liu=11;qi=pinlv/10;ba=pinlv%10;}}void Timer0Init(void)//5微秒@12.000MHz{AUXR |= 0x80;//定时器时钟1T模式TMOD &= 0xF0;//设置定时器模式TL0 = 0xC4;//设置定时初值TH0 = 0xFF;//设置定时初值TF0 = 0;//清除TF0标志//TR0 = 1;//定时器0开始计时}void time0() interrupt 1{if(P34==0){fan++;if(flag==0){flag=1;zheng_send=zheng;zheng=0;}}else if(P34==1){zheng++;if(flag==1){flag=0;fan_send=fan;fan=0;}}}void Timer1Init(void)//1毫秒@12.000MHz{AUXR |= 0x40;//定时器时钟1T模式TMOD &= 0x0F;//设置定时器模式TL1 = 0x20;//设置定时初值TH1 = 0xD1;//设置定时初值TF1 = 0;//清除TF1标志TR1 = 1;//定时器1开始计时EA=1;ET1=1;}void time1() interrupt 3{trie++;if(trie==969){TR0 = 1;ET0=1;}else if(trie==999){TR0 = 0;ET0=0;trie=0;time=(zheng_send+fan_send)*5;pinlv=1000000/time;}}void delayms(int ms)//延时函数{uint i,j;for(i=ms;i>0;i--)for(j=845;j>0;j--);}void allinit()//初始化函数{P2=0XA0;P0=0X00; //关闭蜂鸣器继电器P2=0X80;P0=0XFF; //关闭所有LED灯P2=0XC0;P0=0XFF; //选中所有数码管段选P2=0XFF;P0=0XFF; //关闭所有数码管}void display1(uchar yi,uchar er)//第一、二段数码管函数{P2=0XC0;P0=0X01; //选中第一个数码管位选P2=0XFF;P0=tab[yi]; //让第一个数码管显示yi指向的值delayms(1); //延时1msP2=0XC0;P0=0X02; //选中第二个数码管位选P2=0XFF;P0=tab[er]; //让第一个数码管显示er指向的值delayms(1); //延时1ms}void display2(uchar san,uchar si)//第三、四段数码管函数{P2=0XC0;P0=0X04; //选中第s三个数码管位选P2=0XFF;P0=tab[san]; //让第一个数码管显示san指向的值delayms(1); //延时1msP2=0XC0;P0=0X08; //选中第四个数码管位选P2=0XFF;P0=tab[si]; //让第一个数码管显示si指向的值delayms(1); //延时1ms}void display3(uchar wu,uchar liu)//第五、六段数码管函数{P2=0XC0;P0=0X10; //选中第五个数码管位选P2=0XFF;P0=tab[wu]; //让第一个数码管显示wu指向的值delayms(1); //延时1msP2=0XC0;P0=0X20; //选中第六个数码管位选P2=0XFF;P0=tab[liu]; //让第一个数码管显示liu指向的值delayms(1); //延时1ms}void display4(uchar qi,uchar ba)//第七、八段数码管函数{P2=0XC0;P0=0X40; //选中第七个数码管位选P2=0XFF;P0=tab[qi]; //让第一个数码管显示qi指向的值delayms(1); //延时1msP2=0XC0;P0=0X80; //选中第八个数码管位选P2=0XFF;P0=tab[ba]; //让第一个数码管显示ba指向的值delayms(1); //延时1ms }

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。