当前位置: 首页 > news >正文

单片机-LED点阵实验

 

要将第一个点点亮,则 1 脚接高电平 a 脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第 1 脚要接高电平,而(a、b、c、d、e、f、g、h )这些引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第 a 脚接低电平,而(1、2、3、4、5、6、7、8)接高电平,那么第一列就会点亮。 

 需求:控制LED点阵输出数字0

#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay_10us(u16 ten_us){
    while(ten_us--);
}


//定义595芯片控制管脚
sbit srclk=P3^6;//移位寄存器
sbit rclk=P3^5;//存储寄存器
sbit ser=P3^4;//串行数据输入口

//宏定义P0口
#define LEDDZ_PORT P0

//LED点阵取行数据-取模
gled_row[8]={0x00,0x7E,0x81,0x81,0x81,0x81,0x7E,0x00};

/*

gled_row[48]={0x00,0x00,0x00,0x00,0x7E,0x10,0x10,0x10,0x7E,0x00,0x7E,0x02,0x02,0x02,0x00,0x7E,

0x02,0x02,0x02,0x00,0x7E,0x52,0x52,0x52,0x00,0x3C,0x42,0x42,0x42,0x3C,0x00,0x18,

0x24,0x12,0x24,0x18,0x00,0x00,0x00,0x00};   //输出的是HELLO❤

*/     


//LED点阵取列-对P0口赋值
gled_col[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};


//封装函数往595中写数据
void hc595_write_data(u8 data1){
    u8 i=0;
    for(i=0;i<8;i++){
        ser=data1>>7;//优先移最高位
        data1<<=1;//次高位移到最高位
        srclk=0;
        delay_10us(1);
        srclk=1;
        delay_10us(1);
    }
        rclk=0;
        delay_10us(1);
        rclk=1;   
}


void main(){
    u8 i=0;
    while(1){
        for(i=0;i<8;i++){
            LEDDZ_PORT=gled_col[i]; //P0控制点阵列
            hc595_write_data(gled_row[i]);//74HC595控制点阵行
            delay_10us(100);//等待显示稳定
            hc595_write_data(0x00);//消隐操作
        }
    }
}

/*  此段代码实现的是动态输出HELLO❤  */

void main(){
    u8 i=0;
    u8 offset=0;
    u8 count=0;
    while(1){
        for(i=0;i<8;i++){
            LEDDZ_PORT=gled_col[i];
            hc595_write_data(gled_row[i+offset]);
            delay_10us(100);
            hc595_write_data(0x00);
        }
        count++;
        if(count>10){
        count=0;
            offset++;
            if(offset>40){
            offset=0;

            }
        }
    }

http://www.lryc.cn/news/516660.html

相关文章:

  • 微服务-Nacos(注册中心)
  • 【Linux知识】shell编程知识科普
  • 小程序学习06——uniapp组件常规引入和easycom引入语法
  • 平安产险安徽分公司携手安徽中医药临床研究中心附属医院 共筑儿童安全防护网
  • C语言练习:求数组的最大值与最小值
  • c++ thread线程join、detach、joinable方法
  • 【算法刷题】leetcode hot 100 哈希篇
  • linux系统(ubuntu,uos等)连接鸿蒙next(mate60)设备
  • 支付宝实名认证
  • GO随想:GO的并发等待
  • kubernetes第五天
  • 扩散模型论文概述(三):Stability AI系列工作【学习笔记】
  • JVM调优,参数在哪里设置的?
  • 2024年最新Stable Diffusion 新手入门教程,安装使用及模型下载
  • Ubuntu 20.04安装gcc
  • IT运维的365天--024 闲置路由器关闭了dhcp,如何知道它的IP是啥
  • kaggle竞赛:纽约出租车行程时间NYC Taxi Trip Duration
  • Freemarker模板进行判空
  • C++ const关键字(八股总结)
  • Linux 清楚历史命令
  • 服务器双网卡NCCL通过交换机通信
  • Redis哨兵(sentinel)
  • 小白学Pytorch
  • ros2笔记-2.5.3 多线程与回调函数
  • 第5章:Go语言错误处理和异常
  • 题库刷题知识点总结
  • GraphRAG:LLM之Graphrag接入milvus
  • adb使用及常用命令
  • omnipeek分析beacon帧
  • Java数组问题