整理拨码开关控制实验电路图.docx
- 文档编号:22809669
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:28
- 大小:4.25MB
整理拨码开关控制实验电路图.docx
《整理拨码开关控制实验电路图.docx》由会员分享,可在线阅读,更多相关《整理拨码开关控制实验电路图.docx(28页珍藏版)》请在冰豆网上搜索。
整理拨码开关控制实验电路图
拨码开关控制实验电路图
流程图
/*基本开关控制实验*/
//==宣告区=================================
#include
#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
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
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
#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
#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 #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 #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 #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-∇启动控制_程序:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 开关 控制 实验 电路图