导航:首页 > 操作系统 > 单片机多个开关组合

单片机多个开关组合

发布时间:2022-05-26 18:39:17

❶ 多个光电开关与单片机怎么连接比如说有12个光电开关,89C52单片机需要外接8255吗求电路图

不需要 如果单片机io不够用可以尝试用74hc595

❷ 两个单片机的空气开关加在一起可不可以当双片的用

不能连在一起使用的,因为是不可以联动的,只能当做手动开关使用。

❸ 单片机c语言多个开关优先选择问题

整理如下:

当p0.1口输入低电平(持续时间8秒左右)情况下,

如果p0.2出现低电平,即后面不做任何操作。

当p0.1口输入低电平(持续时间8秒左右)情况下,

如果p0.2不出现低电平,

当p0.3出现低电平后,即进行p0.4的赋值和延时输出操作;

p0.3不出现低电平即不对p0.4操作。

等到p0.1口的低电平消失后,又继续进行下一次重复的。


程序结构如下:

START:

IF(P0.1 == 1)GOTOSTART;

延时次数 = 0;

LP1:

延时 10ms;

IF(P0.1 == 1)GOTOSTART;

延时次数++;

IF (延时次数 < 800)GOTOLP1;

//以上,就确认了:P0.1输入低电平持续8秒左右

IF ((P0.2 == 1)AND(P0.3 == 0))

//如果p0.2不出现低电平,p0.3出现低电平后

P0.4 = 0;延时 10ms;

//即进行p0.4的赋值和延时输出操作;

LP2:

IF(P0.1 == 1)GOTOLP2

//等到p0.1口的低电平消失,

GOTOSTART;

//又继续进行下一次重复的

别忘了采纳。











❹ 单片机对开关状态进行检测时,两个开关量的状态有多少种组合

两个开关量,显然有:00、01、10、11四种状态。

❺ 单片机开关名称

开关在单片机中叫蜂鸣器。

扫描矩阵式按键阵列:多个按键组成矩阵形式接到I/O口上,单片机通过一定的扫描规则扫描按键状态。这种方式可以通过较少I/O口挂接很多按键,主要是解决方式1的端口有限问题。比如,8X8的键盘矩阵可以实现64个按键,而只占用16个I/O口,用方式1则需要64个I/O口。

硬件特征:

(1)单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方便,可以模块化应用。

(2)单片机有着较高的集成度,可靠性比较强,即使单片机处于长时间的工作也不会存在故障问题。

(3) 单片机在应用时低电压、低能耗,是人们在日常生活中的首要选择, 为生产与研发提供便利。

(4)单片机对数据的处理能力和运算能力较强,可以在各种环境中应用,且有着较强的控制能力。



❻ 单片机开关控制LED数码管的编码

一,什么是数码管

数码管,其实就是由多个led组合在一起的组合显示块;有共阴极的,也有共阳极的。使用的数码管不同,里面包含的led个数也会有相关的差异。我们通常使用的数码管,里面有8个led灯,大家可以参照生活中的数码管器件就一目了然了,你会发现,数码管显示的每一个数字或字母,都是一段一段组合拼接起来的,并不是像写的那样圆滑。其中,组合的每一个段,就是一个led灯。

二,点亮一个数码管

2.1.在点亮数码管之前,你还必须弄清楚,改数码管的接是共阴极还是共阳极的接法;其次,还得弄清楚是那几个(或一个) IO口是IO口 的断选位(也就是控制显示哪一个数码管,通常由IO口控制一个译码器来实现,因为这样更节约IO口资源)。

2.2.弄清楚断选位之后,还得知道,是哪些IO口控制我们的数码管上的led;

比如:

P0.0 控制数码管上的led.0;(注意:数码管上对应的led位,可以参照原理图上的或查阅相关资料获得,这里仅仅举列)

P0.1-->led.1 P0.2-->led2 ......

2.3.想要点亮数码管很容易,只要开启对应的数码管断选位,再设置数码管上led的值为点亮(有的数码管是共阴极接法,有的是共阳极接法,根据具体的设计,给出相关的高或低电平即可)就OK了。但是,我们要在数码管上显示我们想要的数字增么办呢?这个时候,就是考研创造力的时候了,有的数码管的资料会直接给出它的真值表,但有的却不一定找得到。在这个时候,我们就得根据我们想要显示的数字,点亮并熄灭对应数码管上的led来实现。(推荐:你可以自己先实验,找出0-9,或其他想要显示的字符所对应的IO口的值,来保存起来,这样你就可以重复利用啦!)

三,点亮多个数码管

3.1 我们想要点亮多个数码管,首先可以根据2.1,弄清楚你的数码管的断选位,然后周期性的改变断选位的值,以此动态逐个显示你的数码管。

3.2 在显示多个数码管时,建议周期大于100hz,这样人眼难以识别起关和开的瞬间,我们看起来就像时很多个数码管同时点亮了一样。

四,动态显示数码管

4.1 ,在动态显示数码管的值时,建议先根据2.2和2.3,把对应的数码管显示参数照准,并保存下来,这样你用起来也方便。

4.2, 动态显示数码管,我们可以在规定的时间周期,改变数码管对应led的开关个数来实现,比如说:

0 在数码管中显示的值为0xc0 1是0xf9

那么我们就可以在规定的时间里,切换该值,从而达到动态效果。

4.3 我们应该注意的时,扫描数码管(即显示多个数码管)应该与设置数码管的值(数码管中led的状态更新)区分开,扫描周期我们可以放短一点,而改变它的值的周期我们可以一秒或者是2秒改变一次。

4.4 消除余晖,大家实验后,可能会发现,你显示的值有的时候并不是想要的,它会跳动或者是亮灭不清晰,这个我们就叫做余晖效应。

产生余晖效应的原因是因为你在选则下一个数码管的时候,还保留了上一个数码管的显示值,所以我们消除余晖,只需要在改变数码管显示值的时候,先关闭所有数码管的显示,在值跟新完成后我们再打开显示。这里你不用担心关闭和开启会有闪烁,更新值的时间会很短,肉眼时几乎察觉不到滴。

5,示列代码

/*

芯片:stc89c52

器件:38译码器等

编译环境:UV4,C语言

*/

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

unsigned char code LedChar[] = {undefined

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

};//数码管显示值真值表缓存数组

unsigned char LedBuff[6] = {undefined

0xff,0xff,0xff,0xff,0xff,0xff

};//数码管显示值缓存数组

void main()

{undefined

unsigned char i =0;

unsigned int cnt = 0;

unsigned long sec = 0;

ENLED = 0;

ADDR3 = 1;

TMOD = 0x01;

TH0 = 0xfc;

TL0 = 0x67;

TR0 = 1;

while(1)

{undefined

if(TF0==1)

{undefined

TF0 = 0;

TH0 = 0xfc;

TL0 = 0x67;

cnt++;

if(cnt>=1000)

{undefined

cnt = 0;

sec++;

LedBuff[0] = LedChar[sec%10];

LedBuff[1] = LedChar[sec/10%10];

LedBuff[2] = LedChar[sec/100%10];

LedBuff[3] = LedChar[sec/1000%10];

LedBuff[4] = LedChar[sec/10000%10];

LedBuff[5] = LedChar[sec/100000%10];

}

switch(i)

{undefined

case 0:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];ENLED = 0;break;

case 1:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];ENLED = 0;break;

case 2:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];ENLED = 0;break;

case 3:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];ENLED = 0;break;

case 4:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];ENLED = 0;break;

case 5:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];ENLED = 0;break;

default:break;

}

}

}

}

以上代码,仅供参考,您需要根据自己原理图的设计来实现。

❼ 该如何理解单片机这种东西

单片机好比一个办公室,里面的人员就是程序,这个办公室有很多扇门(引脚),里面的人决定这些门是打开还是关闭,打开门是进来货还是出货。可以在单片机的datasheet里看到每扇门是干什么的。然后单片机有一个心脏,也就是晶振,它决定了办公室里人的工作效率,是快还是慢。

❽ 单片机如何与多个接近开关连接

我的解决办法是:因为对射式光电开关根据是否被挡光输出高低电平,将这个电平信号输入单片机的一个引脚,在程序里写一个数组,将输入的电平信号记录下来(就是各种010101...),然后通过串口再把这些信号输出到电脑;在电脑上下载一个串口助手,通过串口助手就可以接收并记录光电的开关的状态。

❾ 家里的所有的电器开关用一个单片机组合起来,然后用遥控器遥控开与关,需要购买哪些元器件,谢谢!

这个么说简单也简单说复杂还是挺复杂的,就看你做事的态度,现在先请你说说想要控制的具体电器名称(列出不同类型的几个电器即可),然后跟你说会遇到什么困难,先把困难都说了,考考你的恒心与毅力;

❿ 单片机实现双开关控制

/*程序功能:两个开关各按下一次时,计数器加一 */ /* */ /* 欢迎单片机爱好者学习交流! */ /* */ /***/ #include

阅读全文

与单片机多个开关组合相关的资料

热点内容
oppoa93加密便签在哪查找 浏览:16
两个数字的加减乘除运算编程 浏览:226
给手机加密码忘记了怎么办 浏览:601
单片机运算符 浏览:297
移动端微信商城源码 浏览:442
编程猫下一个背景在哪里 浏览:358
javaclasstype 浏览:238
乐高编程和乐高课的延伸 浏览:356
苹果手机怎么切换app美国账号 浏览:865
编译程序输入一个字符串 浏览:407
圆命令画法 浏览:308
如果给电脑e盘文件加密 浏览:802
javaswing项目 浏览:778
androidsdksetup 浏览:1005
pdf怎么设置中文 浏览:128
安卓手机用什么软件看伦敦金 浏览:966
魅族文件夹无名称 浏览:792
苏黎世无人机算法 浏览:876
核桃编程和小码王的融资 浏览:686
微积分教材pdf 浏览:728