51单片机设计多路开关状态指示器

发布者:bettylove最新更新时间:2017-12-31 来源: eefocus关键字:51单片机  多路开关  状态指示器 手机看文章 扫描二维码
随时随地手机看文章

1.实验任务
  如图4.3.1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。
2.电路原理图
多路开关状态指示
                      图4.3.1
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;
(2). 把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1-K4端口上;
4.  程序设计内容
(1). 开关状态检测
  对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。
(2). 输出控制
  根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。
5.程序框图

多路开关状态指示

                               图4.3.2
6.方法一(汇编源程序)
                                     ORG 00H
START:                        MOV A,P1
                                      ANL A,#0F0H
                                      RR A
                                      RR A
                                      RR A
                                      RR A
                                      XOR A,#0F0H
                                      MOV P1,A
                                      SJMP START
                                      END
7.方法一(C语言源程序)
#include
unsigned char temp;
void main(void)
{
  while(1)
    {
      temp=P1>>4;
      temp=temp | 0xf0;
      P1=temp;
    }
}
8.方法二(汇编源程序)
                                      ORG 00H
START:                         JB P1.4,NEXT1
                                      CLR P1.0
                                      SJMP NEX1
NEXT1:                       SETB P1.0
NEX1:                          JB P1.5,NEXT2
                                      CLR P1.1
                                      SJMP NEX2
NEXT2:                       SETB P1.1
NEX2:                          JB P1.6,NEXT3
                                      CLR P1.2
                                      SJMP NEX3
NEXT3:                       SETB P1.2
NEX3:                          JB P1.7,NEXT4
                                      CLR P1.3
                                      SJMP NEX4
NEXT4:                       SETB P1.3
NEX4:                          SJMP START
                                      END
9.方法二(C语言源程序)
#include
void main(void)
{
  while(1)
    {
      if(P1_4==0)
        {
          P1_0=0;
        }
        else
          {
            P1_0=1;
          }
      if(P1_5==0)
        {
          P1_1=0;
        }
        else
          {
            P1_1=1;
          }
      if(P1_6==0)
        {
          P1_2=0;
        }
        else
          {
            P1_2=1;
          }
      if(P1_7==0)
        {
          P1_3=0;
        }
        else
          {
            P1_3=1;
          }
    }
}


关键字:51单片机  多路开关  状态指示器 引用地址:51单片机设计多路开关状态指示器

上一篇:基于51单片机的模拟开关
下一篇:基于51单片机的广告灯左移电路设计与程序分析

推荐阅读最新更新时间:2024-03-16 15:51

51单片机C语言学习笔记2: 51单片机编程下载方式
编译完程序,要下载,当然离不开编程器。当时候上课的书上也没讲到下载的办法,做试验也只是在试验箱上下载完事。要自己弄的话,要怎么才能玩得转呢?在网上查了一下,要玩转单片机,要具备三样东西:51芯片+编程器+仿真器,当然仿真器是不必要的。记得我的第一台编程器是TOP851,可以花了300多大洋,当时还是自费的。记得我自己买的第一颗51单片机芯片是正宗的Intel 8051,可以TOP851不支持Intel的51芯片,可郁闷啦,连51单片机的鼻祖也不支持,可想而知后来的人都过了河拆了桥J 后来又再买了一块芯片:AT89C51,当时候还有点疑惑,我学的是8051啊,可是这是89C51啊?书上没讲这芯片,怎么办呢?现在想想可知多么可笑,但这
[单片机]
51单片机实现控制网卡芯片进行数据传输的设计
在网络技术应用日益广泛的今天,网络传输是最经济有效的数据传输方式。如何利用廉价的51单片机来控制网卡芯片进行数据传输,加载TCP/IP协议连接到互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,采用发送小数据包的方式以避免分段,来简化TCP协议和UDP协议,实现互联接入。 硬件设计与实现 系统的硬件结构框图如图1所示。本系统的微控制器是Winbond公司的78E58,网络接口芯片是与NE2000系列兼容的ReaLTEk公司的RTL8019AS。RTL8019AS内置了10BASE-T收发器,外接一个隔离LPF滤波器,经RJ-45接口输出。外部RAM
[单片机]
<font color='red'>51单片机</font>实现控制网卡芯片进行数据传输的设计
基于51单片机+bmp180的数字海拔计程序
12684液晶屏,bmp180传感器,51单片机 单片机源程序如下: #include reg51.h #include math.h //Keil library #include stdlib.h //Keil library #include stdio.h //Keil library #include INTRINS.H //Keil library #include absacc.h #include lcd.h #include BMP180.H /*定义传感器内部的EEPROM存储单元里面11个值*/ #define uchar unsigned char #define uint
[单片机]
基于<font color='red'>51单片机</font>+bmp180的数字海拔计程序
51单片机实现菜单问题
这个思路应该是没问题的,但是需要设置的状态量啥的有点多,还有一些菜单项的id值啥的都不能冲突,还有那个按键扫描填充状态值函数,理论上是具有可实现性的,估计也得动会脑筋或者还会有各种bug。这个菜单系统对于具有深层次菜单项时候优势才明显,其实一般做的菜单,就用那个已经成熟且我多次用的结构体方式实现的就足够了,而且很容易实现。我现在就不需要花大量精力去思考这个如何完善和实现性了(而且emwein那些gui早就考虑过这些问题了),还是需要思考更重要,更有价值有意义的问题,操作系统内核的实现 关于12864屏幕上绘制菜单图标,圆形,矩形啥的,没必要深入去研究,只要会画一个具有代表性的矩形即可,实际上这些直接用取模的方式更加直接明了,
[单片机]
<font color='red'>51单片机</font>实现菜单问题
基于W79E2051单片机的模拟流星雨LED控制电路设计
基于W79E2051单片机和LED恒流专用驱动芯片MBI5026设计了一款模拟流星雨LED控制电路,LED使用高亮白色,可根据需要接上36,48,64颗LED,通上电源,一字型排开的LED,会产生从上到下,从最亮的到渐暗的流星雨效果,效果逼真,可作为屋外,广场装饰灯. W79E2051单片机具有标准的串行输出口,可方便地向具有相同通信协议的驱动芯片MBI5026进行通信,同时对定时要求不高的场合,我们完全可以使用单片机内部的RC振荡时钟,这样单片机的外围元件及极简单,仅需要复位元件即可,由于流星雨效果是有着随机特性,在多个灯管同时使用时,为了达到伪随机效果,我们还推荐使用单片机的内部RC时钟.这样效果会更好.同时W79E2051在
[单片机]
基于W79E20<font color='red'>51单片机</font>的模拟流星雨LED控制电路设计
为什么51单片机晶振使用11.0592
用11.0592晶振的原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则波特率都是有偏差的,比如9600,用定时器取0XFD,实际波特率10000,一般波特率偏差在4%左右都是可以的。 所以也还能用STC90C516 晶振12M 波特率9600 ,倍数时误差率6.99%,不倍数时误差率8.51%,数据肯定会出错。 这也就是串口通信时大家喜欢用11.0592MHz晶振的原因,在波特率倍速时,最高可达到57600,误差率0.00%。 用12MHz,最高也就4800,而且有0.16%误差率,但在允许范围,所以没多大
[单片机]
采用MXT8051单片机实现基站温控仪的设计
引言 移动基站分布在全国各地,覆盖面广,各地气候差异大。解决好散热问题,是基站正常运作的关键因素之一。本文介绍的温控仪,利用温度传感器采集信号,然后通过单片机进行A/D转换、处理、运算得到室内外温度,并且根据当前室内外温差,计算出风机风速。然后利用PWM方式控制可控硅对交流220V斩波,实现风机风速调制。从而实现了利用自然冷源达到降低基站内部温度的目的。 系统设计 本温控仪是以MXT8051单片机为核心,整个硬件系统(如图1)分为温度信号采集、显示、键盘、控制输出、通信接口和存储模块。该仪表工作流程是:单片机通过集成的A/D采样室内室外温度,根据温差调制风机风速。键盘部分实现对温控仪参数的设置,如风机启动温度、停止温度等参数。
[单片机]
采用MXT80<font color='red'>51单片机</font>实现基站温控仪的设计
51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa+ 1.3.10 相关介绍 摘自《ATK-MPU6050六轴传感器模块用户手册_V1.0》 MPU6050 自带了数字运动处理器,即 DMP,并且,InvenSense 提供了一个 MPU6050 的嵌入式运动驱动库,结合 MPU6050 的 DMP,可以将我们的原始数据,直接转换成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到 yaw、roll 和 pitch。 使用内置的 DMP,大大简化了四轴
[单片机]
【<font color='red'>51单片机</font>快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved