整理拨码开关控制实验电路图.docx

上传人:b****2 文档编号:1865182 上传时间:2023-05-01 格式:DOCX 页数:28 大小:4.25MB
下载 相关 举报
整理拨码开关控制实验电路图.docx_第1页
第1页 / 共28页
整理拨码开关控制实验电路图.docx_第2页
第2页 / 共28页
整理拨码开关控制实验电路图.docx_第3页
第3页 / 共28页
整理拨码开关控制实验电路图.docx_第4页
第4页 / 共28页
整理拨码开关控制实验电路图.docx_第5页
第5页 / 共28页
整理拨码开关控制实验电路图.docx_第6页
第6页 / 共28页
整理拨码开关控制实验电路图.docx_第7页
第7页 / 共28页
整理拨码开关控制实验电路图.docx_第8页
第8页 / 共28页
整理拨码开关控制实验电路图.docx_第9页
第9页 / 共28页
整理拨码开关控制实验电路图.docx_第10页
第10页 / 共28页
整理拨码开关控制实验电路图.docx_第11页
第11页 / 共28页
整理拨码开关控制实验电路图.docx_第12页
第12页 / 共28页
整理拨码开关控制实验电路图.docx_第13页
第13页 / 共28页
整理拨码开关控制实验电路图.docx_第14页
第14页 / 共28页
整理拨码开关控制实验电路图.docx_第15页
第15页 / 共28页
整理拨码开关控制实验电路图.docx_第16页
第16页 / 共28页
整理拨码开关控制实验电路图.docx_第17页
第17页 / 共28页
整理拨码开关控制实验电路图.docx_第18页
第18页 / 共28页
整理拨码开关控制实验电路图.docx_第19页
第19页 / 共28页
整理拨码开关控制实验电路图.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

整理拨码开关控制实验电路图.docx

《整理拨码开关控制实验电路图.docx》由会员分享,可在线阅读,更多相关《整理拨码开关控制实验电路图.docx(28页珍藏版)》请在冰点文库上搜索。

整理拨码开关控制实验电路图.docx

整理拨码开关控制实验电路图

拨码开关控制实验电路图

流程图

/*基本开关控制实验*/

//==宣告区=================================

#include//定义8051头文件,引入reg52.h

#defineSWP2//定义开关接至P2

#defineLEDP1//定义LED接至P1

//==主程式=================================

main()//主程序开始

{SW=0xff;//规划输入端口

while

(1)//无穷循环,程式一直跑

LED=SW;//读取开关(P2)状态,输出到LED(P1)

}//主程序结束

思考一下!

在本实验里,有没有“抖动”的困扰?

若希望拨码开关中的S1、S3、S5三个开关都on,则前四个LED亮;S2或S4或S6开关on,则后四个LED亮;S7及S8开关on,则所有LED全亮,程序应如何编写?

若将拨码开关换成一般家里墙壁上的开关,而LED换成继电器(RELAY),是否可作为家里的负载控制?

 

按钮ON-OFF控制实验

按钮ON-OFF控制实验电路图

流程图如下:

/*基本按钮ON-OFF控制实验*/

//==声明区=======================================

#include//定义8051头文件,引入reg52.h

sbitPB1=P2^0;//声明按钮1接至P2.0

sbitPB2=P2^1;//声明按钮2接至P2.1

sbitLED=P1^0;//声明LED为P1.0

//==主程式=======================================

main()//主程序开始

{LED=1;//关闭LED

PB1=PB2=1;//规划输入端口

while

(1)//无穷循环,程式一直跑

{

if(PB2==0)

LED=1;//若按下PB2,则关闭LED

elseif(PB1==0)

LED=0;//若按下PB1,则点亮LED

}//while循环结束

}//结束程序

思考一下!

在本实验里,有没有“抖动”的困扰?

若将按钮开关当成启动电机的ON-OFF开关,而LED换成继电器(RELAY),是否可作为电机控制?

若同时按下PB1与PB2按钮会怎样?

 

按钮切换式控制实验

按钮切换式控制实验电路图

流程图

实验代码:

/*按钮切换式控制实验*/

//==声明区=====================================

#include//定义8051头文件,引入reg52.h

sbitPB1=P2^0;//声明PB1接至P2.0

sbitLED=P1^0;//声明LED接至P1.0

voiddebouncer(void);//声明防弹跳函数

//==主程序=====================================

main()//主程式开始

{LED=1;//关闭LED

PB1=1;//规划P2.0为输入埠

while

(1)//无穷循环,程序一直跑

{if(PB1==0)//若按下PB1

{debouncer();//呼叫防弹跳函数(按下时)

LED=!

LED;//切换LED为反相

while(PB1!

=1);//若仍按住PB1,继续等

debouncer();//呼叫防弹跳函数(放开时)

}//if叙述结束

}//while循环结束

}//主程序结束

//==子程序=====================================

/*防弹跳函数函数,延迟约20ms*/

voiddebouncer(void)//防弹跳函数开始

{inti;//声明整数变数i

for(i=0;i<2400;i++);//计数2400次,延迟约20ms

}//防弹跳函数结束

思考一下!

在本实验里,改变debouncer函数的时间长短,看看有什么影响?

若按住PB1不放会怎样?

如何改善?

按钮开关应用电路图

流程图

代码如下:

/*按钮开关应用(两按钮控制七段显示器上下数)*/

//==声明区==========================================

#include//定义8051头文件,引入reg52.h文件

#defineSEGP0//定义七节显示器接至P0端口

/*声明七节显示器驱动信号阵列(共阳)*/

charcodeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//数字0-9

sbitPB1=P2^0;//声明按钮1接至P2.0

sbitPB2=P2^1;//声明按钮2接至P2.1

voiddebouncer(void);//声明防弹跳函数

//==主程式=================================

main()//主程序开始

{unsignedchari=0;//声明变量i初值=0

PB1=PB2=1;//规划输入端口

SEG=TAB[i];//输出数字至七段显示器

while

(1)//无穷循环,程式一直跑

{if(PB1==0)//判断PB1是否按下

{debouncer();//呼叫防弹跳函数

i=(i<9)?

i+1:

0;//若i<9则i=i+1,若i>=9清除为0

SEG=TAB[i];//输出数字至七段显示器

while(PB1==0);//PB1是否按住?

debouncer();//呼叫防弹跳函数

}//if叙述结束

if(PB2==0)//判断PB2是否按下

{debouncer();//呼叫防弹跳函数

i=(i>0)?

i-1:

9;//若i>0则i=i-1,i<=0重设为9

SEG=TAB[i];//输出数字至七段显示器

while(PB2==0);//PB1是否按住?

debouncer();//呼叫防弹跳函数

}//if叙述结束

}//while循环结束

}//主程序结束

//==子程序==================================

/*防弹跳函数函数,延迟约20ms*/

voiddebouncer(void)//防弹跳函数开始

{inti;//声明整数变量i

for(i=0;i<2400;i++);//计数2400次,延迟约20ms

}//防弹跳函数结束

思考一下!

在本实验里,若按钮按住不放,会怎样?

如何改善?

在本实验里,若PB1与PB2两个按钮同时按,会怎样?

 

BCD数字型拨码开关实验

BCD数字型拨码开关实验电路图

流程图

实验代码:

/*BCD数字型指拨开关实验*/

//==声明区======================================

#include//定义8051头文件,引入reg52.h文件

#defineSEGP0//定义七节显示器接至P0

#defineSWP2//定义开关接至P2

/*声明七节显示器驱动信号阵列(共阳)*/

charcodeTAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//数字0-9

#defineSW_H()SW&0x0f//读取开关值(P2清除高4bits)

//==主程序======================================

main()//主程序开始

{SW=0xff;//规划输入埠

while

(1)//无穷循环,程序一直跑

SEG=TAB[SW_H()];//读取开关值,输出至七节显示器(P0)

}//主程序结束

思考一下!

在本实验里,有没有“抖动”的困扰?

若把本单元的BCD数字型拨码开关,改为16进位数字型拨码开关,程序应如何修改?

多重按钮开关实验

多重按钮开关实验电路图

流程图

实验中的自编库函数

/*myio.h自己写的程序库*/

//==声明区==============================

#defineLEDP1//定义LED接至P1

voiddebouncer(void);//声明防弹跳函数

voiddelay10ms(int);//声明10毫秒延迟函数

voidalter(int);//声明交互闪烁函数

voidleft(int);//声明单灯左移函数

voidright(int);//声明单灯右移函数

voidpili(int);//声明霹雳灯函数

voidflash(int);//声明闪烁函数

//==自己写的子程序========================

/*防弹跳函数函数,延迟约20ms*/

voiddebouncer(void)//防弹跳函数开始

{delay10ms

(2);//延迟约20ms

}//防弹跳函数结束

/*延迟函数开始,延迟约x10ms*/

voiddelay10ms(intx)//延迟函数开始

{inti,j;//声明整数变量i,j

for(i=0;i

for(j=0;j<1200;j++);//计数1200次,延迟约10ms

}//延迟函数结束

/*高低位元交互闪烁函数,执行x次*/

voidalter(intx)//高低位元交互闪烁函数开始

{inti;//声明变量i

LED=0x0f;//初始状态(高位元亮,低位元灭)

for(i=0;i<2*x-1;i++)//i变量for循环执行2x-1次

{delay10ms(50);//延迟50*10m=0.5s

LED=~LED;//LED反相输出

}//i变量for循环结束

delay10ms(50);//延迟5010m=0.5s

}//高低位元交互闪烁函数结束

/*全灯闪烁函数,执行x次*/

voidflash(intx)//全灯闪烁函数开始

{inti;//声明变量i

LED=0x00;//初始状态(全亮)

for(i=0;i<2*x-1;i++)//i变量for循环执行2x-1次

{delay10ms(50);//延迟5010m=0.5s

LED=~LED;//P0反相输出

}//i变量for循环结束

delay10ms(50);//延迟5010m=0.5s

}//全灯闪烁函数结束

/*单灯左移函数,执行x圈*/

voidleft(intx)//单灯左移函数开始

{inti,j;//声明变量i,j

for(i=0;i

{LED=0xfe;//初始状态=11111110

for(j=0;j<7;j++)//j循环,左移7次

{delay10ms(25);//延迟2510m=0.25s

LED=(LED<<1)|0x01;//左移1位後,LSB设为1

}//j循环结束

delay10ms(25);//延迟2510m=0.25s

}//i循环结束*/

}//单灯左移函数结束

/*单灯右移函数,执行x圈*/

voidright(intx)//单灯右移函数开始

{inti,j;//声明变量i,j

for(i=0;i

{LED=0X7f;//初始状态=01111111

for(j=0;j<7;j++)//j循环,右移7次

{delay10ms(25);//延迟2510m=0.25s

LED=(LED>>1)|0x80;//左移1位後,MSB设为1

}//j循环结束

delay10ms(25);//延迟2510m=0.25s

}//i循环结束

}//单灯左移函数结束

/*霹雳灯函数,执行x圈*/

voidpili(intx)//霹雳灯函数开始

{inti;//声明变量i

for(i=0;i

{left

(1);//单灯左移一圈

right

(1);//单灯左移一圈

}//i循环结束

}//霹雳灯函数结束

多重按钮开关实验之一:

代码

/*多重按钮开关实验之1*/

//==声明区================================

#include//定义8051头文件,引入reg52.h文件

#include"myio.h"//自己写的I/O程序库

sbitPB1=P2^0;//声明PB1=P2.0

sbitPB2=P2^1;//声明PB2=P2.1

sbitPB3=P2^2;//声明PB3=P2.2

sbitPB4=P2^3;//声明PB4=P2.3

//==主程序================================

main()//主程序开始

{LED=0xff;//初始状态(LED全灭)

P2=0xff;//规划P2输入端口

while

(1)//无穷循环,程序一直跑

{if(PB1==0)//如果按下PB1

{debouncer();//防弹跳

alter(3);//高低位元交互闪烁三次

flash(3);}//全灯闪烁三次

elseif(PB2==0)//如果按下PB2

{debouncer();//防弹跳

left(3);//单灯左移三圈

flash(3);}//全灯闪烁三次

elseif(PB3==0)//如果按下PB3

{debouncer();//防弹跳

right(3);//单灯右移三圈

flash(3);}//全灯闪烁三次

elseif(PB4==0)//如果按下PB4

{debouncer();//防弹跳

pili(3);//霹雳灯三圈

flash(3);}//全灯闪烁三次

}//while循环结束

}//主程序结束

思考一下!

在本实验里,若同时按下多个按钮会如何?

在本实验里,若按住按钮不放会如何?

在本实验里,其中debouncer函数是个延迟20毫秒的函数,而delay10ms函数是个延迟10毫秒的函数,可否使用delay10ms函数取代debouncer函数?

如何修改?

在本实验里,其中alter函数是个高四位与低四位交替闪烁的函数,而flash函数是个8灯闪烁的函数,其不同在于其初始值。

请修改函数,再增加一个形式参数,以带入初始值,使之变成一个多用途的函数?

多重按钮开关实验之二流程图

/*多重按钮开关实验之2*/

//==声明区======================================

#include//定义8051头文件,引入reg52.h文件

#include"myio.h"//自己写的I/O程序库

#definePBP2//定义按钮开关接至P2

//==主程序======================================

main()//主程序开始

{LED=0xff;//初始状态(LED全灭)

while

(1)//无穷循环,程序一直跑

{PB=0xff;//规划输入埠

switch(~PB)//switch叙述开始

{case0x01:

//如果按下PB1

{debouncer();//防弹跳

alter(3);//交互闪烁三次

flash(3);//全灯闪烁三次

break;}//退出switch叙述

case0x02:

//如果按下PB2

{debouncer();//防弹跳

left(3);//单灯左移三圈

flash(3);//全灯闪烁三次

break;}//退出switch叙述

case0x04:

//如果按下PB3

{debouncer();//防弹跳

right(3);//单灯右移三圈

flash(3);//全灯闪烁三次

break;}//退出switch叙述

case0x08:

//如果按下PB4

{debouncer();//防弹跳

pili(3);//霹雳灯三圈

flash(3);//全灯闪烁三次

break;}//退出switch叙述

}//结束switch叙述

}//while结束

}//主程序结束

思考一下!

在本实验里,若同时按下多个按钮会如何?

在本实验里,若按住按钮不放会如何?

放开按钮后动作实验

 

 

实验代码:

/*按钮放开后才动作实验*/

//==声明区======================================

#include//定义8051头文件,引入reg52.h文件

#include"myio.h"//自己写的I/O程序库

#definePBP2//定义按钮开关接至P2

//==主程序======================================

main()//主程序开始

{LED=0xff;//初始状态(LED全灭)

while

(1)//无穷循环,程序一直跑

{PB=0xff;//规划P2为输入端口

switch(~PB)//switch叙述开始

{case0x01:

//如果按下PB1

{debouncer();//防弹跳

while(~PB==1);//等待PB1放开

debouncer();//防弹跳

alter(3);//交互闪烁三次

flash(3);//全灯闪烁三次

break;}//退出switch叙述

case0x02:

//如果按下PB2

{debouncer();//防弹跳

while(~PB==2);//等待PB2放开

debouncer();//防弹跳

left(3);//单灯左移三圈

flash(3);//全灯闪烁三次

break;}//退出switch叙述

case0x04:

//如果按下PB3

{debouncer();//防弹跳

while(~PB==4);//等待PB3放开

debouncer();//防弹跳

right(3);//单灯右移三圈

flash(3);//全灯闪烁三次

break;}//退出switch叙述

case0x08:

//如果按下PB4

{debouncer();//防弹跳

while(~PB==8);//等待PB4放开

debouncer();//防弹跳

pili(3);//霹雳灯三圈

flash(3);//全灯闪烁三次

break;}//退出switch叙述

}//结束switch叙述

}//while结束

}//主程序结束

•在本实验里,若将按钮按住不放会如何?

 

安全评价可针对一个特定的对象,也可针对一定的区域范围。

 

ON-OFF控制的另类思考:

●低压工业配线的电机on-off控制ö

●低压工业配线的电机正反转控制ö

低压工业配线的三相电机Y-∇启动控制ö

电机on-off控制_电路图

电机on-off控制_程序

(2)辨识和分析评价对象可能存在的各种危险、有害因素,分析危险、有害因素发生作用的途径及其变化规律。

(2)是否符合国家产业政策和清洁生产标准或要求。

电机正反转控制_电路图:

(1)前期准备工作。

包括明确评价对象和评价范围,组建评价组,收集国内外相关法律、法规、规章、标准、规范,收集并分析评价对象的基础资料、相关事故案例,对类比工程进行实地调查等内容。

电机正反转控制_程序:

1)规划实施对环境可能造成影响的分析、预测和评估。

主要包括资源环境承载能力分析、不良环境影响的分析和预测以及与相关规划的环境协调性分析。

4.建设项目环境影响评价文件的分级审批

4.广泛参与原则。

为了有别于传统的忽视环境价值的理论和方法,环境经济学家把环境的价值称为总经济价值(TEV),包括环境的使用价值和非使用价值两个部分。

三相电机Y-∇启动控制_电路图:

(2)防护支出法

(3)环境影响分析、预测和评估的可靠性;三相电机Y-∇启动控制_程序:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2