找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机入门 流水灯实验程序 P1口外38译码器

[复制链接]
跳转到指定楼层
楼主
#include <reg52.h>

typedef unsigned char uint8;//定义参数类型,规范书写格式

typedef unsigned int uint16;

uint16 i;         //定义i 用于非精确延时计数
uint8   ledbuf;//定义led变量缓存,起到中间变量作用

/*STC89C51  P1口外38译码器;6号接三极管b极,起到所有LED高电平总开关作用 见末尾图1*/

sbit ADDR0         =P1^0;
sbit ADDR1        =P1^1;
sbit ADDR2         =P1^2;
sbit ADDR3        =P1^3;
sbit ENLED  =P1^4;
/******** 38译码器引脚对应P1位置*********/

main()
{         
                i =0;
                cnt=0;
                ledbuf=0x01;
/************** 参数初始化*************/
          ADDR0         =0;
          ADDR1        =1;
          ADDR2         =1;
          ADDR3        =1;
          ENLED   =0;
/************** 38译码器设置*************/
                while(1)
        {
                P0=~ledbuf;                   //对P0赋值
                for(i=0;i<30000;i++);     //延时设置,这里注意 i 的值,如果uint8型,计数最大到255,超过256程序会死;这里 i 定义为uint1
                ledbuf<<=1;                  //中间变量左移,>>符号为右移
                if(ledbuf==0x00)            //是为了保证最后一个led灯正常亮,ledbuf需左移为0000 0000,如果写0x80,最后一个灯就直接跳过状态显示
                 {         
                    ledbuf = 0x01;        
                }
        }
}
/**************main 主函数*************/




图1:38译码器74HC138 LEDS6 为LED总控制开关
图2:LED电路



74HC138.pdf

239.4 KB, 下载次数: 8, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:299519 发表于 2021-2-22 13:35 | 只看该作者
138的真正奥义是地址译码。。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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