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

51单片机开发:点阵屏显示数字

实验目标:在8x8的点阵屏上显示数字0。

点阵屏的原理图如下图所示,点阵屏的列接在P0端口,行接在74HC595扩展的DP端口上。

扩展口的使用详见:51单片机开发:IO扩展(串转并)实验-CSDN博客

要让点阵屏显示数字,得利用二极管的余辉和人眼暂留效应,实际上点阵屏从左往右一列一列依次点亮,由于间隔时间短(1ms),人眼看起来仿佛一直显示。

DPhDPgDPfDPeDPdDPcDPbDPa
01111100
0x7c,表示数字0最左边的竖。
P07P06P05P04P03P02P01P00
10111111
0xbf,表示数字0最左边的竖对应的那一列为低电平,即第2列(从1开始)

取模软件:

#include "reg52.h"typedef unsigned char u8;
typedef unsigned int u16;sbit SRCLK = P3^6;
sbit RCLK_2 = P3^5;
sbit SER = P3^4;#define LEDDZ_COL_PORT P0u8 ghc595_buf[] = {0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x00};//行,高电平点亮u8 gcol_buf[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//对应某一列为低电平void delay_10us(u16 ten_us){while(ten_us--);
}void delay_ms(u16 ms){delay_10us(ms*100);
}//扩展IO,先传高位再传低位
void hc595_write_data(u8 dat){u8 i=0;for(i=0;i<8;i++){SER = dat>>7;dat <<= 1;SRCLK=0;delay_10us(1);SRCLK=1;delay_10us(1);}RCLK_2=0;delay_10us(1);RCLK_2=1;
}void main(){u8 i=0;while(1){for(i=0;i<8;i++){LEDDZ_COL_PORT = gcol_buf[i];	  //列 hc595_write_data(ghc595_buf[i]);   //行delay_10us(100);hc595_write_data(0x00);//消除影}}
}

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

相关文章:

  • mysql DDL可重入讨论
  • DAY01 面向对象回顾、继承、抽象类
  • 127周一复盘 (165)玩法与难度思考
  • 【C语言常见概念详解】
  • 弹性分组环——RPR技术
  • 定制Centos镜像
  • Java---判断素数的三种方法
  • 多级缓存(亿级并发解决方案)
  • 代理模式 - 代理模式的应用
  • 编辑器Vim基本模式和指令 --【Linux基础开发工具】
  • 云计算如何与物联网(IoT)结合?
  • C#面试常考随笔4:int? 和 int的区别,以及int?的运用场景?
  • DeepSeek-R1试用
  • Vue 3 30天精进之旅:Day 06 - 表单输入绑定
  • [创业之路-269]:《创业讨论会》- 系统之韵:从麻雀到5G系统的共通性探索
  • 使用C#对指定的MYSQL数据库进行备份以及常见问题
  • 探索人工智能在计算机视觉领域的创新应用与挑战
  • Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)
  • STM32 对射式红外传感器配置
  • 12 款开源OCR发 PDF 识别框架
  • 危机13小时:追踪一场GitHub投毒事件
  • CVE-2020-0796永恒之蓝2.0(漏洞复现)
  • 游戏策划的分类
  • 单片机基础模块学习——PCF8591芯片
  • 深入探索 HTML5 拖拽效果 API:打造流畅交互体验
  • 【Healpix】python一种用于将球面划分为均匀区域的技术
  • Go:基于Go实现一个压测工具
  • 算法-加油站问题
  • UART ,IIC 和SPI三种总线协议
  • Padas进行MongoDB数据库CRUD