找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2216|回复: 0
打印 上一主题 下一主题
收起左侧

单片机入门开关流水程序

[复制链接]
跳转到指定楼层
楼主
单片机AT89S51的P2口接8个发光二极管led,P1口低两位P1.0,P1.1接两个按钮开S1,S2。
要求:
1)S1键闭合,S2键断开,8只led低四位点亮,高四位熄灭(依次低位到高位循环点亮);
2)S1键断开,S2键闭合,8只led低四位熄灭,高四位点亮。(低四位和高四位交替闪烁)(注意画上时钟电路和复位电路。)
电路仿真原理图如下图所示
  
1)



源程序如下
#include <reg51.h>                        // 包含头文件reg51.h
#include <intrins.h>
#define uchar unsigned char
        uchar i,temp,shift        ;
void delay()  //延时程序 //
{
    uchar i,j;
        for(i=0;i<250;i++)
        for(j=0;j<250;j++);

}
void liushuiyi()        //第一个流水灯程序//
{

  P2=0x0f;
   delay();
   P2=~P2 ;
   delay ();
}
void liushuier()        //第二个流水灯程序//
{
    temp=0xfe;
        for(i=0;i<8;i++)
     {
      P2=temp;
       delay();
     temp=_crol_(temp,1);  }
}
void  main(  )                                 //主函数main( )
{        
        char state;
         do
         {        
                P1=0xff;                                // P1口为输入
                 state=P1;                        // 读入P1口的状态,送入state
                 state=state&0x03;                            // 屏蔽P1口的高6位
                 switch (state)                        // 判P1口低2位开关状态
                 {        
                        case 0: P2=0xf1; break;// P1.1、P1.0=00,点亮P2.0脚LED
                         case 1: liushuiyi();break;// P1.1、P1.0=01,点亮P2.1脚LED
                         case 2: liushuier();break;// P1.1、P1.0=10,点亮P2.2脚LED
                         case 3: P2=0xf8;break;// P1.1、P1.0=11,点亮P2.3脚LED 1111 0011
                 }
         }while ( 1 );
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表