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

小企业网站推广咸阳seo公司

小企业网站推广,咸阳seo公司,装饰网站建设公司,wordpress百度cdn51单片机IO口控制 1.点亮LED灯 原理:根据电路图,指向IO口的引脚;拉低电平,灯亮、 如图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zfco4IjK-1690308697530)(C:/Users/xie19/Pictur…

51单片机IO口控制

1.点亮LED灯

原理:根据电路图,指向IO口的引脚;拉低电平,灯亮、

如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zfco4IjK-1690308697530)(C:/Users/xie19/Pictures/Camera Roll/屏幕截图 2023-07-19 014128.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ldzpl4XB-1690308697531)(C:/Users/xie19/Pictures/Camera Roll/屏幕截图 2023-07-19 014157.png)]

#include "reg52.h"sbit ledOne=P3^7;//根据电路图指定引脚
sbit ledTwo=P3^6;void main()
{ledOne=0; ledTwo=0;//拉低电平,灯亮
}

2.LED灯闪烁

原理:根据延时实现LED灯闪烁的效果;也要根据原理图指定引脚

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TpMUOFiQ-1690308697532)(C:/Users/xie19/Pictures/Camera Roll/屏幕截图 2023-07-19 014128.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ntz7JKWI-1690308697533)(C:/Users/xie19/Pictures/Camera Roll/屏幕截图 2023-07-19 014157.png)]

#include "reg52.h"
#include "intrins.h"sbit ledOne=P3^7; //根据电路图指定引脚
sbit ledTwo=P3^6;void Delay500ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){    ledOne=0;//置低电平,点亮灯ledTwo=0;//置低电平,点亮灯Delay500ms();  ledOne=1;//置高电平,灭灯ledTwo=1;//置高电平,灭灯Delay500ms();}         
}

3.按下按键点亮灯

3.1查询法控制点灯

  • 怎么知道sw1按键被按下
  • KEY1位置和GND接通,表现为低电平,值为0
  • 怎么知道sw1按键没有被按下
  • KEY1位置通过上拉电阻到5V,表现为高电平,值为1

通过下图得知

同理LED的分析,

KEY1接到STC89C52RC的P2.1口,我们只要不断检测P2.1口的值(0-按下,1-松开)就知道按键是否被按下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sYDfhi4N-1690308697533)(C:/Users/xie19/Pictures/Camera Roll/屏幕截图 2023-07-19 015556.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t82sTeun-1690308697534)(C:/Users/xie19/Pictures/Camera Roll/屏幕截图 2023-07-19 015619.png)]

/*
实现功能,按下按键一点亮灯
*/#include "reg52.h"
#include "intrins.h"sbit ledOne=P3^7; //根据电路图指定引脚
sbit key1=P2^1;void main()
{while(1){    if(key1==0) //KEY1位置和GND接通,表现为低电平,值为0{ledOne=0; 灯亮,给一个P3.7低电平}    }         
}
/*实现功能:按下按键一,LED亮;按下按键二,lED灭*/#include "reg52.h"
#include "intrins.h"sbit ledOne =P3^7; //根据电路图指定引脚
sbit key1   =P2^1;
sbit key2   =P2^0;void main()
{while(1){    if(key1==0) //KEY1位置和GND接通,表现为低电平,值为0{ledOne=0; //灯亮,给一个P3.7低电平}    if(key2==0){ledOne=1; //灯灭,给一个P3.7低电平}           }         
}
/*按下按键一,两盏灯亮;按下按键二,两盏灯灭;
*/#include "reg52.h"
#include "intrins.h"sbit ledOne =P3^7; //根据电路图指定引脚
sbit ledTwo =P3^6;
sbit key1   =P2^1;
sbit key2   =P2^0;void main()
{while(1){    if(key1==0) //KEY1位置和GND接通,表现为低电平,值为0{ledOne=0; //灯亮,给一个P3.7低电平ledTwo=0;}    if(key2==0){ledOne=1; //灯灭,给一个P3.7低电平ledTwo=1;}           }         
}

3.2软件消抖

软件消抖:为了防止开发板遭遇抖动导致灯亮灭(不是人为导致的);这里用延时,更科学的方法应该是用定时器。

#include "reg52.h"
#include "intrins.h"sbit ledOne =P3^7; //根据电路图指定引脚
sbit key1   =P2^1;
sbit key2   =P2^0;void Delay500us()		//@11.0592MHz
{unsigned char i;_nop_();i = 227;while (--i);
}void main()
{while(1){    if(key1==0) //KEY1位置和GND接通,表现为低电平,值为0{Delay500us();//这里延时一下,防止意外抖动,软件消抖if(key1==0){    ledOne=0; //灯亮,给一个P3.7低电平}   }    if(key2==0){Delay500us();//这里延时一下,防止意外抖动,软件消抖if(key2==0){    ledOne=1; //灯灭,给一个P3.7低电平}   }           }         
}

3.3IO口翻转(有一些代码会这么写)

#include "reg52.h"
#include "intrins.h"sbit ledOne =P3^7; //根据电路图指定引脚
sbit key1   =P2^1;
sbit key2   =P2^0;void Delay500us()		//@11.0592MHz
{unsigned char i;_nop_();i = 227;while (--i);
}void main()
{ledOne=1;while(1){    if(key1==0) //KEY1位置和GND接通,表现为低电平,值为0{Delay500us();//这里延时一下,防止意外抖动,软件消抖if(key1==0){    ledOne=!ledOne; //灯亮,给一个P3.7低电平(取反,也可以叫IO口状态翻转)}   }    if(key2==0){Delay500us();//这里延时一下,防止意外抖动,软件消抖if(key2==0){    ledOne=1; //灯灭,给一个P3.7低电平}   }           }         
}

3.4.记录状态位点灯

状态位的作用是:当按键被按下时,不着急点灯,在这里记下状态,在别的地方点灯;当业务比较复杂时,可以在当下记下状态,在别的地方实现;

#define的作用主要是让没有意义的数据变得有意义,让代码的可读性更好。

#include "reg52.h"
#include "intrins.h"#define off_status 0 
#define on_status  1 sbit ledOne =P3^7; //根据电路图指定引脚
sbit key1   =P2^1;
sbit key2   =P2^0;void Delay500us()		//@11.0592MHz
{unsigned char i;_nop_();i = 227;while (--i);
}void main()
{int ledMark=off_status;ledOne=1;while(1){    if(key1==0) //KEY1位置和GND接通,表现为低电平,值为0{Delay500us();//这里延时一下,防止意外抖动,软件消抖if(key1==0){    ledMark=on_status;//当按键被按下,记录状态位在别的地方点灯,适用与业务场景复杂;}   }    if(key2==0){Delay500us();//这里延时一下,防止意外抖动,软件消抖if(key2==0){    ledMark=off_status;}   }if(ledMark==on_status){ledOne=0;}else{ledOne=1;}           }         
}

4.震动传感器点灯

原理:当输出低电平的时候,震动,点亮灯

#include "reg52.h"
#include<intrins.h>sbit led1=P3^7;
sbit virbrate=P3^3;void Delay2000ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){if(virbrate==0) //模块说明,D0输出低电平震动{led1=0;Delay2000ms();led1=1;}          else{led1=1;}    }       }

5.震动控制继电器

继电器:电子开关

#include "reg52.h"
#include<intrins.h>sbit switcher=P1^1;
sbit vibrate = P3^3;void Delay2000ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){if(vibrate==0) //模块说明,D0输出低电平震动{switcher=0;//当发生震动适合,导通继电器,给继电器IN一个低电平Delay2000ms();switcher=1;//高电平,继电器N0和COM不通}          else{switcher=1;}    }       }

6.按键控制继电器开关

#include "reg52.h"
#include<intrins.h>sbit key1     =P2^1;
sbit key2     =P2^0;
sbit switcher =P1^1;void main()
{while(1){if(key1==0) //模块说明,D0输出低电平震动{switcher=0;//当发生震动适合,导通继电器,给继电器IN一个低电平}          if(key2==0){switcher=1;}    }       }

7.433M控制继电器开关

按下A按键,继电器亮;按下B按键,继电器灭;

#include "reg52.h"
#include<intrins.h>sbit D0_ON    =P1^2;
sbit D1_OFF   =P1^3;
sbit switcher =P1^1;void main()
{//查询方式哪个按键被按下 while(1){if(D0_ON==1) //收到遥控信号A,D0表现为高电平{switcher=0;//A被按下,我们导通继电器,给继电器IN一个低电平}          if(D1_OFF==1)//收到遥控信号C,D1表现为高电平{switcher=1;//B被按下,我们不导通继电器,给继电器IN一个高电平}    }       }

8.电动车简易报警器

硬件模块:51单片机,震动传感器,喇叭,继电器,433M模块

#include "reg52.h"
#include<intrins.h>#define J_ON 1
#define J_OFF 0
sbit switcher = P1^0;
sbit D0_ON = P1^1;
sbit D1_OFF = P1^2;
sbit vibrate = P1^3;void Delay2000ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}
void Delay500ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}
void main()
{int mark = J_OFF;while(1){//1. 如果a按键被按下,设定为开启警报模式if(D0_ON == 1){//长响,表示进入警报模式switcher = 0;Delay2000ms();switcher = 1;//设定警报模式标记mark = J_ON ;}//2. 如果b按键被按按下,设定为关闭警报模式if(D1_OFF == 1){//短响,表示进入解除警报模式switcher = 0;Delay500ms();switcher = 1;//设定警报解除模式标记mark = J_OFF ;}//3. 如果标记是在警报模式下if(mark == J_ON){//3.1 如果发生了震动if(vibrate == 0){//喇叭响,给继电器低电平,导通switcher = 0;}//3.2 如果不发生震动else{//喇叭不响,给继电器高电平,不导通switcher = 1;}}}
}
http://www.mmbaike.com/news/69572.html

相关文章:

  • 网站推广计划机构镇江seo公司
  • 深圳nft网站开发公司百度知道官网入口
  • 经营性网站备案信息查询沈阳百度推广优化
  • 怎么自己用手机做网站seo常用的工具
  • 网站你懂我意思正能量晚上不用下载直接进入seo网站搭建是什么
  • 个人网站官网网络营销的主要特点有哪些
  • 织梦网站底部黑链百度推广软件
  • flash网站设计欣赏代运营哪家公司最靠谱
  • 给自己家的公司做网站好做吗seo网站关键词排名快速
  • 郑州网站制作_郑州网页制作_做网站设计_河南网站制作网磁力搜索器kitty
  • 杭州微网站建设免费网站优化排名
  • 外贸网站的特色如何进行网络推广营销
  • 小说网站怎么推广南昌seo排名收费
  • 内容转载的网站怎么做西安seo高手
  • 做外贸网站需要多少钱怎么做推广
  • 网站信息化建设建议书seo综合优化公司
  • 自己做的网站怎么发到网上长沙建站工作室
  • 山东网站备案拍照重庆高端品牌网站建设
  • 钟表珠宝商城网站建设网站如何在百度刷排名
  • 做网站头片的高清图友情网
  • web实用网站开发实验报告企业qq官方下载
  • 网站建设有几种方式镇江seo快速排名
  • photoshop怎么做网站草图小吃培训
  • 网站规划名词解释网红推广一般怎么收费
  • 哪个网站做布料好自己怎么做引流推广
  • 无锡做网站优化公司网络营销课程个人总结
  • 企业做网站天津优化疫情政策
  • 龙华网站建设设计制作公司汕头seo排名收费
  • 女生做a视频的网站是什多少seo是什么公司
  • 可以做烟的网站吗seo教程论坛