当前位置: 首页 > news >正文

做ppt找图片在哪个网站江宁外贸网站建设

做ppt找图片在哪个网站,江宁外贸网站建设,淘宝网站的建设情况,微信小程序开发基础目录 单片机资源数据包_2023 一、NE555和定时器工作模式 1.NE555的介绍 2.定时器的计数模式 二、NE555频率读取代码的实现 1.定时器0初始化 2.通过读取TH0和TL0来读取频率 3.通过中断读取频率 三、完整代码演示 通过读取TH0和TL0来读取频率 main.c 通过中断读取频…目录 单片机资源数据包_2023 一、NE555和定时器工作模式 1.NE555的介绍 2.定时器的计数模式 二、NE555频率读取代码的实现 1.定时器0初始化 2.通过读取TH0和TL0来读取频率  3.通过中断读取频率 三、完整代码演示 通过读取TH0和TL0来读取频率 main.c 通过中断读取频率 main.c 前言 关于蓝桥杯比赛时会提供的资料前几篇都有提到这里就不在赘述了只放一个下载链接 单片机资源数据包_2023 除了基础部分的按键、LED灯数码管扫描还有温度传感器AD/DA转化EEPROM存储器RTC之外还有三个模块考试的时候可能会考分别是超声波NE555和串口。近几年的题也是越来越难这三个模块也逐渐出现在了省赛的舞台上当然如果进国赛了这几个模块就都可能考了。提升篇主要针对这三个模块进行介绍。 由于这三个模块比赛时不会提供底层代码所以许多都需要咱们自己来完成不同人写的代码差异性可能会更大。此外这些代码会涉及到单片机运行的底层知识关于单片机基础部分的内容提升篇也会尽可能介绍一部分当然如果你不会也没关系文章会教你如何用stc生成或者查数据手册就算不知道原理小背一背也是能自己实现的 一、NE555和定时器工作模式 这一章主要介绍一下NE555和单片机定时器有关的基础知识当然正如前边提到的这些知识并不需要去背在后面代码实现时会教大家如何借助isp获取这些代码。 最近几年NE555也是和超声波一样频繁出现在省赛考场上。 1.NE555的介绍 NE555是一款经典的集成电路也被称为555定时器。555定时器在蓝桥杯板子上的主要作用是产生脉冲让我们读取它的频率真的是一个十分经典的集成电路当然蓝桥杯比赛不会考NE555该怎么连接电路感兴趣的小伙伴可以自己查找一下555定时器的资料。 NE555由比较器、SR触发器和输出级组成。它通常有8个引脚包括正电源引脚VCC、负电源引脚GND、控制电压引脚CV、复位引脚RESET、输出引脚OUT、触发引脚TRIG、非控制触发引脚THRES、控制电压引脚DIS。 NE555有三种工作模式可以被设置为工作在单稳态单触发模式、多稳态模式或脉冲生成模式。它的工作稳定性高可以通过改变电阻和电容的数值来调节脉冲宽度、周期和频率。同时NE555还具有较高的输出驱动能力可以直接驱动大功率装置。 NE555广泛应用于定时器、频率分频器、频率多倍器、脉冲宽度调制、脉冲位置调制、电压控制振荡器等各种电路中。它易于使用功能强大是电子爱好者和工程师常用的集成电路之一。 下图蓝桥杯原理图上的NE555电路 我们只需要读取NET SIG引脚上电平的变化我们可以通过P34引脚读取因此在读取之前我们需要使用跳线帽。将J13上的P34和NET SIG短接如下图所示的两个引脚 刚才已经提到读取NE555的信号只需要读取其电平变化也就是与NET 相连的P34引脚的电平变化即可。当然选择P34引脚也是有原因的通过查询stc15f2k60s2的引脚定义可知P34的其中一个复用功能就是定时器0外部计数引脚定义的内容有点多关于P34的大概在stc15数据手册的第51页这里也附上stc15的数据手册下载链接 stc15数据手册点击查看或下载   ​ 前几篇文章已经提到定时器不止有定时功能还有计数功能读取NE555通俗点说就是要“记录电平变化次数”这就用到定时器0的计数功能了。通过计数器记录电平在一段时间内的变化次数就可以推算出1秒电平变化的次数而1秒电平变化的次数就是频率了。 2.定时器的计数模式 通过配置定时器的TMOD寄存器即可控制定时器的工作模式。我们需要使用定时器0记录NE555的电平变化也就是需要使用定时器0的外部计数模式此外定时器模式我们还是选择16位自动重载。 ​ 由上图可知我们需要将TMOD2置为1使其处在外部计数模式其他各位为0即可定时器1初始化时会自己在配置关于定时器1的模式。也就是需要配置 TMOD 0x04;                    //设置定时器0为16位自动重装载外部记数模式 这样我们就可以用定时器0读取NE555的频率了。  二、NE555频率读取代码的实现 上文已经介绍了如何配置定时器的模式接下来就是如何使用定时器读取NE555频率。主流的方法主要有两种一种方法是是和读取超声波时间信息一样将TH0和TL0置为0过一段时间后读取TH0和TL0的值在经过换算就可以得到频率另一种方法是将TH0和TL0都置为0xFF同时允许中断这样只要有一个脉冲过来就会触发中断只需要在中断服务函数里写上频率每隔一段时间读取一次频率并把频率清0我们就可以读取到一段时间内有多少个脉冲再算换成1s有多少个脉冲这个值就是频率值。接下来会介绍这两种方法在介绍这两中方法之前我们需要配置定时器0这里也先告诉大家定时器具体如何使用isp现成的代码进行配置。 1.定时器0初始化 其实有了第一章的介绍再小背一下代码就能记住定时器0如何配置但是isp已经提供了范例代码现成的总是更香嘛。 与串口代码的类似我们打开isp找到范例程序里的外部中断0的范例程序 ​ 这串代码中提供了一种外部计数的方法具体代码如下: /*---------------------------------------------------------------------*/ /* --- STC MCU Limited ------------------------------------------------*/ /* --- STC15F4K60S4 系列 T0扩展为外部下降沿中断举例--------------------*/ /* --- Mobile: (86)13922805190 ----------------------------------------*/ /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/ /* --- Tel: 86-0513-55012928,55012929,55012966-------------------------*/ /* --- Web: www.STCMCU.com --------------------------------------------*/ /* --- Web: www.GXWMCU.com --------------------------------------------*/ /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */ /* 如果要在文章中应用此代码,请在文章中注明使用了STC的资料及程序 */ /*---------------------------------------------------------------------*///本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译 //若无特别说明,工作频率一般为11.0592MHz#include reg51.h #include intrins.h//-----------------------------------------------sfr P0M1 0x93; sfr P0M0 0x94; sfr P1M1 0x91; sfr P1M0 0x92; sfr P2M1 0x95; sfr P2M0 0x96; sfr P3M1 0xb1; sfr P3M0 0xb2; sfr P4M1 0xb3; sfr P4M0 0xb4; sfr P5M1 0xC9; sfr P5M0 0xCA; sfr P6M1 0xCB; sfr P6M0 0xCC; sfr P7M1 0xE1; sfr P7M0 0xE2;sfr AUXR 0x8e; //辅助寄存器 sbit P10 P1^0;//----------------------------------------------- //中断服务程序 void t0int() interrupt 1 //中断入口 {P10 !P10; //将测试口取反 }void main() {P0M0 0x00;P0M1 0x00;P1M0 0x00;P1M1 0x00;P2M0 0x00;P2M1 0x00;P3M0 0x00;P3M1 0x00;P4M0 0x00;P4M1 0x00;P5M0 0x00;P5M1 0x00;P6M0 0x00;P6M1 0x00;P7M0 0x00;P7M1 0x00;AUXR 0x80; //定时器0为1T模式TMOD 0x04; //设置定时器0为16位自动重装载外部记数模式TH0 TL0 0xff; //设置定时器0初始值TR0 1; //定时器0开始工作ET0 1; //开定时器0中断EA 1;while (1); } 我们现在只需要从中“提取”出我们想要的代码——定时器0初始化代码即可。初始化代码其实就是while1上边的那几行代码我们写一个定时器0的初始化函数来包装一下那几行代码 void Time0_Init(void) {     AUXR 0x80;                    //定时器0为1T模式     TMOD 0x04;                    //设置定时器0为16位自动重装载外部记数模式     TH0 TL0 0xff;               //设置定时器0初始值     TR0 1;                        //定时器0开始工作     ET0 1;                        //开定时器0中断 } 如果需要定时器中断前面提到的第二种读取NE555的方法我们还需要加上中断服务函数中断号为1. void Timer0_Isr(void) interrupt 1 {      } 2.通过读取TH0和TL0来读取频率  我们需要先将TH0和TL0置为0过1s之后再来读取TH0和TL0的值这样读取出来的值就是频率值注意读取时需要先停止定时器如何1s读取一次已经在第七届代码中介绍过了这里不再赘述这里的is_read_NE555为0时每隔1s就会被置为1。由于定时器0用来读取NE555了所以我们这里是开启了定时器1来完成数码管等的处理 unsigned int fre0;//频率 void Time0_Init(void) {     AUXR 0x80;                    //定时器0为1T模式     TMOD 0x04;                    //设置定时器0为16位自动重装载外部记数模式     TH0 TL0 0x00;               //设置定时器0初始值     TR0 1;                        //定时器0开始工作     //ET0 1;                        //开定时器0中断 } void main() {     Time0_Init();     Timer1_Init();     EA1;     while(1)     {         if(is_read_NE5551)//1s读取一次这样读取到的值刚好是频率         {             is_read_NE5550;             TR00;//先暂停             freTH0;//再读取             fre8;             fre|TL0;             TH00;             TL00;             TR01;             Nixie_num[0]fre/10000%10;//数码管显示频率             Nixie_num[1]fre/1000%10;             Nixie_num[2]fre/100%10;             Nixie_num[3]fre/10%10;             Nixie_num[4]fre/1%10;         }     } } 注意这里的fre必须使用unsigned int。 3.通过中断读取频率 接下来介绍第二种方式现将TH0和TL0置为0xFF这样检查到一个脉冲之后就会进入中断服务函数再中断服务函数内将频率,每隔1s读取一次频率并将频率置为0. void Timer0_Isr(void) interrupt 1 {     fre; } void Time0_Init(void) {     AUXR 0x80;                    //定时器0为1T模式     TMOD 0x04;                    //设置定时器0为16位自动重装载外部记数模式     TH0 TL0 0xFF;               //设置定时器0初始值     TR0 1;                        //定时器0开始工作     ET0 1;                        //开定时器0中断 } void main() {     Time0_Init();     Timer1_Init();     EA1;     while(1)     {         if(is_read_NE5551)         {             is_read_NE5550;             Nixie_num[0]fre/10000%10;             Nixie_num[1]fre/1000%10;             Nixie_num[2]fre/100%10;             Nixie_num[3]fre/10%10;             Nixie_num[4]fre/1%10;             fre0;         }     } } 三、完整代码演示 读取NE555其实很简单但是需要提醒一点P34和NE555相连的那个跳线帽用完记得拔下来其他项目可能需要用到矩阵键盘如果那个跳线帽忘记拔了会影响矩阵键盘的读取。 下面的代码是读取NE555频率并将其显示到数码管上 通过读取TH0和TL0来读取频率 main.c #include stc15.h #include intrins.hcode unsigned char Seg_Table[] { 0xc0, //0 0xf9, //1 0xa4, //2 0xb0, //3 0x99, //4 0x92, //5 0x82, //6 0xf8, //7 0x80, //8 0x90, //9 0xFF }; unsigned char Led_Num0xFF; #define LED_ON(x) Led_Num~(0x01x);P0Led_Num; P2|0x80;P20x9F;P20x1F; #define LED_OFF(x) Led_Num|0x01x; P0Led_Num; P2|0x80;P20x9F;P20x1F; #define LED_OFF_ALL() Led_Num0xFF; P00xFF; P2|0x80;P20x9F;P20x1F;#define NIXIE_CHECK() P2|0xC0;P20xDF;P20x1F; #define NIXIE_ON() P2|0xE0;P20xFF;P20x1F;void Time0_Init(void); void Timer1_Init(void); //1毫秒11.0592MHzunsigned char Nixie_num[]{10,10,10,10,10,10,10,10};//数码管要显示的数据 unsigned char location0; unsigned int fre0;//定义频率 bit is_read_NE5550;//每隔1s读取一次 void main() {Time0_Init();//注意定时器0的初始化一定要放在定时器1的前边因为定时器0初始化代码是抄的写的不够完备初始化时会干扰定时器1Timer1_Init();EA1;while(1){if(is_read_NE5551){TR00;freTH0;fre8;fre|TL0;TH00;//TH0和TL0清零TL00;TR01;//重新开始计数is_read_NE5550;//为了1s数的更精确在重新开始计时之后才重新开始数1s其实影响不大/*数码管显示读取到的数据*/Nixie_num[0]fre/10000%10;Nixie_num[1]fre/1000%10;Nixie_num[2]fre/100%10;Nixie_num[3]fre/10%10;Nixie_num[4]fre/1%10;}} } unsigned int count_1s0;//中间变量 void Timer1_Isr(void) interrupt 3 {P00x01location;NIXIE_CHECK();P0Seg_Table[Nixie_num[location]];NIXIE_ON();if(location8)location0;if(is_read_NE5550)//is_read_NE555为0时{if(count_1s1000){is_read_NE5551;count_1s0;}} }void Time0_Init(void) {AUXR 0x80; //定时器0为1T模式TMOD 0x04; //设置定时器0为16位自动重装载外部记数模式TH0 TL0 0x00; //设置定时器0初始值TR0 1; //定时器0开始工作ET0 1; //开定时器0中断 } void Timer1_Init(void) //1毫秒11.0592MHz {AUXR | 0x40; //定时器时钟1T模式TMOD 0x0F; //设置定时器模式TL1 0xCD; //设置定时初始值TH1 0xD4; //设置定时初始值TF1 0; //清除TF1标志TR1 1; //定时器1开始计时ET1 1; //使能定时器1中断 }通过中断读取频率 main.c #include stc15.h #include intrins.hcode unsigned char Seg_Table[] { 0xc0, //0 0xf9, //1 0xa4, //2 0xb0, //3 0x99, //4 0x92, //5 0x82, //6 0xf8, //7 0x80, //8 0x90, //9 0xFF }; unsigned char Led_Num0xFF; #define LED_ON(x) Led_Num~(0x01x);P0Led_Num; P2|0x80;P20x9F;P20x1F; #define LED_OFF(x) Led_Num|0x01x; P0Led_Num; P2|0x80;P20x9F;P20x1F; #define LED_OFF_ALL() Led_Num0xFF; P00xFF; P2|0x80;P20x9F;P20x1F;#define NIXIE_CHECK() P2|0xC0;P20xDF;P20x1F; #define NIXIE_ON() P2|0xE0;P20xFF;P20x1F;void Time0_Init(void); void Timer1_Init(void); //1毫秒11.0592MHzunsigned char Nixie_num[]{10,10,10,10,10,10,10,10};//数码管要显示的数据 unsigned char location0; unsigned int fre0;//定义频率 bit is_read_NE5550;//每隔1s读取一次 void main() {Time0_Init();//注意定时器0的初始化一定要放在定时器1的前边因为定时器0初始化代码是抄的写的不够完备初始化时会干扰定时器1Timer1_Init();EA1;while(1){if(is_read_NE5551){is_read_NE5550;/*数码管显示读取到的数据*/Nixie_num[0]fre/10000%10;Nixie_num[1]fre/1000%10;Nixie_num[2]fre/100%10;Nixie_num[3]fre/10%10;Nixie_num[4]fre/1%10;fre0;}} } unsigned int count_1s0;//中间变量 void Timer1_Isr(void) interrupt 3 {P00x01location;NIXIE_CHECK();P0Seg_Table[Nixie_num[location]];NIXIE_ON();if(location8)location0;if(is_read_NE5550)//is_read_NE555为0时{if(count_1s1000){is_read_NE5551;count_1s0;}} } void Timer0_Isr(void) interrupt 1 {fre; } void Time0_Init(void) {AUXR 0x80; //定时器0为1T模式TMOD 0x04; //设置定时器0为16位自动重装载外部记数模式TH0 TL0 0xFF; //设置定时器0初始值TR0 1; //定时器0开始工作ET0 1; //开定时器0中断 } void Timer1_Init(void) //1毫秒11.0592MHz {AUXR | 0x40; //定时器时钟1T模式TMOD 0x0F; //设置定时器模式TL1 0xCD; //设置定时初始值TH1 0xD4; //设置定时初始值TF1 0; //清除TF1标志TR1 1; //定时器1开始计时ET1 1; //使能定时器1中断 }
http://www.w-s-a.com/news/917108/

相关文章:

  • 网站与规划设计思路竞价培训课程
  • 网站建设设计视频专业设计企业网站
  • 湖南省建设工程网站cerntos wordpress
  • 主机屋的免费空间怎么上传网站广告公司的经营范围有哪些
  • 门户网站建设公司案例门户建设是什么意思
  • 深圳seo专家东莞网站关键词优化排名
  • 套用别人产品图片做网站如何在阿里云自主建网站
  • 网站开发需要用哪些东西wordpress页面参数
  • 大连模板网站制作哪家好wordpress 安装不上
  • 宝塔搭建网站首页图片点击率如何提高
  • 长沙找人做网站wordpress如何安装模板
  • 比较好的国外网站建设公司wordpress短代码可视化
  • 做新的网站网站个性化
  • 吉安做网站的英文网站 字体大小
  • 外贸网站服务商wordpress主题handsome
  • 云主机多个网站如何优化网站图片
  • 松江移动网站建设成都app开发制作公司
  • 锦州做网站的公司百度seo搜索营销新视角
  • 做画册找什么网站海南建设工程股份有限公司网站
  • 网站机房建设有助于网站备案
  • 北辰苏州网站建设抖音代运营投诉平台
  • 安徽住房与城乡建设部网站如何新建站点
  • 企业网站开发的感想网站开发公司所需投入资源
  • 如何拿网站后台账号wordpress 电影下载站源码
  • 公司网站建设方案书安卓应用市场免费下载安装
  • phpmysql网站设计建设好一个网站需要
  • 自己做的网站能被别人看到吗idea怎么做网页
  • 燕莎网站建设互联网排名前十的公司2021
  • 微软云怎么做网站微商城和小程序区别
  • 哈尔滨建站的系统网站到首页排名