首页 > 编程知识 正文

ws2812b程序51单片机,蓝桥杯单片机比赛流程

时间:2023-05-06 13:56:45 阅读:106383 作者:3961

一. 555定时器频率测量1 .电路原理

NE555是时钟芯片,输出一定频率的脉冲信号。 简单地说,该模块基于Rb3电位器的电阻值,向SIG脚输出相应频率的脉冲信号。

在第10次竞赛中,要求在该模块上设置试验点,测量其脉冲信号的频率,测量周期小于1秒。

比赛方要求用与比赛无关的短截线连接该模块的输出脚SIGNAL和P34。 (例如红外/超声波的)如下图所示。 查看芯片手册,可以发现P34也是T0计数器的引脚

2 .驱动方法是使T0在计数模式下动作。 计数的别针是我们的P34。 进行频率测量时,将计时器0的计数初始值设为0,用另一个计时器将时间限制在1S或数秒以内。 经过规定时间后,停止计数,取出计时器0的值,看有多少个脉冲,用总脉冲量/总时间求出脉冲的周期或频率。

二.参考程序sys.c

# include ' sys.h ' externbitmea _ freq _ flag; /***@brief外围设备初始化* @ param [ in ] none * @ return none * */void all _ init ({ p2=(p 20x 1f )|0xa0; 打开Y5CP0=0x00; //关闭蜂鸣器继电器=(p20x1f )|0xe0; 打开Y7CP0=0xff; //数码管P2=(P20X1F )|0x80; 打开Y4CP0=0xff; LEDP2=P20x1f; //关闭使用的使能}/***@brief 74HC138解码器频道选择*@param[in] channel (频道(*@returnnone**/voidHC138_set //关闭所有通道case4:p2=(p20x1f(|0x80; 黑; 选择与//y4对应的模块(LED )后,运算结果为P2前3位100case5:p2=) p20x1f )|0xa0; 黑; 选择与//y5对应的模块(蜂鸣器),运算结果为P2前3位101case6:p2=) p20x1f )|0xc0; 黑; 选择//y6对应的模块(数码管位选择),运算结果为P2前3位110case7:p2=) p20x1f )|0xe0; 黑; 选择与//y7对应的模块(数字段选择)后,运算结果为P2上位3位111 ) voidtimer1init ) void )/1毫秒@12.000MHz ) auxr=0xbf; //定时器时钟12T模式TMOD=0x0F; //设置定时器模式TL1=0x18; //设定时机初始值TH1=0xFC; //设置定时初始值TF1=0; //TF1标志TR1=1清零; //计时器1开始计时器ET1=1; }voidtimeR0init(void ) {AUXR |=0x80; //定时器时钟12T模式TMOD |=0x04; //计数器0 16位自动过载TH0=0; TL0=0; TF0=0; TR0=1; //计数器0计算开始(ne555频率void Mea_Freq ) ) interrupt3) staticuintI; I; if(I==500 ) (每500Ms测量一次脉冲MEA_FREQ_FLAG=1; i=0; (}Nixie_Scan ); } nixe.c

# include ' sys.h '/01234567 ucharcodenixie [ ]={0xc 0,0x F9,0x a4,0xb 0,0x 99,0x 92,0x 82,0x F8,/89aBcefu //uchar smg1、smg2、smg3、smg4、smg5、smg6、smg7、smg8; uchar code Symbol[]={0xff,0xbf}; //全军覆没,-void Nixie_Scan () {static u8 index; HC138_set(7; P0=0XFF; HC138_set(6; P0=0x 01索引; HC138_set(7; P0=NixieBuff[index]; HC138_set(0; 索引; 索引=0x 07; }voidnixie_show(u16dat ) {smg1=15; smg2=smg3=17; smg4=dat/10000; smg5=dat000/1000; smg6=dat00/100; smg7=dat0/10; smg8=dat; if(SMG4==0) /消0 )0{smg4=17; if(SMG5==0) {smg5=17; if(SMG6==0) {smg6=17; }}}NixieBuff[0]=nixie[smg1]; NixieBuff[1]=nixie[smg2]; NixieBuff[2]=nixie[smg3]; NixieBuff[3]=nixie[smg4]; NixieBuff[4]=nixie[smg5]; NixieBuff[5]=nixie[smg6]; NixieBuff[6]=nixie[smg7]; NixieBuff[7]=nixie[smg8]; } sys.h

#ifndef_sys_h_#define_sys_h__/头文件包含# includes t c15 f2k 60s2. h # includeintrins.h//管脚声明///变量typedef unsigned char uchar; typedef unsigned char u8; //外部变量声明//函数声明//sys.cvoid ALL_Init (; voidHC138_set(U8Channel ); voidtimeR0init(void; voidtimeR1init(void; void Nixie_Scan (; voidnixie_show(u16dat; #endif

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