目标:8×8点阵显示一个心

1:显示原理(扫描)

点阵在显示图形时并不是对应的LED同时点亮,而是显示一行(行扫描)或一列(列扫描)后,快速切换到下一行或下一列,依次显示到最后一行或一列。利用余晖效应(人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失)就能看见一个完整的图形。

2:74HC595芯片在本电路中应用简介

8 位串行输入并行输出移位寄存器

74595 的数据端:
QA--QH: 八位并行输出端,可以直接控制点阵的 8 个点。
SER(14 脚): 串行数据输入端。
74595 的控制端说明:
SERCLK(11 脚):上升沿时数据寄存器的数据移位。 QA-->QB-->QC-->...-->QH;下
降沿移位寄存器数据不变。(脉冲宽度: 5V 时,大于几十纳秒就行了。)
RCLK(12 脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄
存器数据不变。通常我将 RCK 置为低点平,当移位结束后,在 RCK 端产生一
个正脉冲( 5V 时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。

上升沿下降沿解释:

数字电路中,把电压的高低用逻辑电平来表示。逻辑电平包括高电平和低电平这两种。不同的元器件形成的数字电路,电压对应的逻辑电平也不同。在TTL门电路 中,把大于3.5伏的电压规定为逻辑高电平,用数字1表示;把电压小于0.3伏的电压规定为逻辑低电平,用数字0表示。数字电平从低电平(数字“0”)变 为高电平(数字“1”)的那一瞬间(时刻)叫作上升沿。

硬件描述语言中,用“posedge”表示“上升沿”。

上升沿就是从0变成1中间的过程
下降沿就是从1变成0中间的过程

3.硬件

普中51开发板

注意:在使用点阵时需要调整跳线帽如下图——使74HC595芯片使能(即13脚为低电平)

    OE与GND相连

从开发板原理图中可以看出P0口控制点阵的列(即从左到右你要在哪一列显示),74HC595控制显示的数据(即在选中的那一列中哪些点亮,哪些点不亮)

要使一个LED点亮需要对应的列(P0_n)为低电平,对应的74HC595数据输出(Q)为高电平

4:代码

未消影

本列隐约显示上一列数据

#include <REGX52.H>sbit SER=P3^4;
sbit RCK=P3^5;
sbit SRCLK=P3^6;void MatrixLED_Init(void)//初始化函数,在产生上升沿前应为低电平
{RCK=0;SRCLK=0;
}void MatrixLED_Show(unsigned char Column,unsigned char Date)
{unsigned char i;for(i=0;i<8;i++){SER=Date&(0x80>>i);SRCLK=1;SRCLK=0;}RCK=1;RCK=0;P0=~(0x80>>Column);}
void main()
{unsigned char a;unsigned char LED[]={0x00,0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18};MatrixLED_Init();while(1){for(a=0;a<8;a++){MatrixLED_Show(a,LED[a]);}}
}

消影

解决办法:

未消影的显示过程:

①第一列数据  ②选择第一列       ③第二列数据  ④选择第二列....第八列

当第二列数据传进来时,第一列仍被选择(即显示过程为①②>②③>③④),故第一列隐约显示第二列数据

消影显示过程:

①第一列数据  ②选择第一列      (延时1ms   列清零 )      ③第二列数据  ④选择第二列.....第八列

则显示过程为①②>空白>③④

#include <REGX52.H>sbit SER=P3^4;
sbit RCK=P3^5;
sbit SRCLK=P3^6;void Delay1ms()        //@11.0592MHz
{unsigned char i, j;i = 2;j = 199;do{while (--j);} while (--i);
}void MatrixLED_Init(void)
{RCK=0;SRCLK=0;
}void MatrixLED_Show(unsigned char Column,unsigned char Date)
{unsigned char i;for(i=0;i<8;i++){SER=Date&(0x80>>i);SRCLK=1;SRCLK=0;}RCK=1;RCK=0;P0=~(0x80>>Column);Delay1ms();P0=0xFF;
}
void main()
{unsigned char a;unsigned char LED[]={0x00,0x18,0x3C,0x1E,0x0F,0x1E,0x3C,0x18};MatrixLED_Init();while(1){for(a=0;a<8;a++){MatrixLED_Show(a,LED[a]);}}
}

消影

51单片机之8×8点阵显示(74HC595)相关推荐

  1. 51单片机8*8点阵显示“中国”

    #include <reg52.h> #include <intrins.h> //位移函数 sbit DIO=P3^4; //2片74HC595数据输入端 sbit S_CL ...

  2. 51单片机—按键控制点阵显示

    名称:按键控制 8X8LED 点阵屏显 示图形 说明:每次按下 K1 时,会使 8X8LED 点阵屏循环显示不同图形.本例同时使用外部中断和定 时中断 #include"reg52.h&qu ...

  3. 51单片机七段数码管显示时钟无按键控制—①—74HC595版

    参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...

  4. 51单片机 IIC OLED驱动显示通用程序模板

    51单片机 IIC OLED驱动显示通用程序模板 本模板是通过中景园OLED屏幕资料中提取保留ASCII字符集,点阵大小:6x8和8X16. 汉字取模方式 取模软件:pctolcd2002 /汉字取模 ...

  5. 基于51单片机的16X64点阵仿真

    目录 一.项目需求 二.仿真图 三.代码 四.资料清单 资料下载地址:基于51单片机的16X64点阵仿真 一.项目需求 16X64点阵上显示汉子,并且可以左右移动. 二.仿真图 左移 右移 三.代码 ...

  6. 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...

    现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变. 矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线 /***** ...

  7. 51单片机 DHT11+LCD12864温湿度显示 + Proteus仿真

    51单片机 DHT11+LCD12864温湿度显示 + Proteus仿真 采用的接线方式是IIC接口,在Proteus里面仿真太慢了,不知道是电脑古老问题还是怎么,看图像就知道了,有多卡,感觉电脑运 ...

  8. 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真

    51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...

  9. 51单片机ADC0832模数转换+ LCD1602显示+Proteus仿真

    51单片机ADC0832模数转换+ LCD1602显示+Proteus仿真 Proteus仿真 在Proteus SP2仿真过程中发现无法读取ADC0832的数据.解决办法:在proteus安装目录下 ...

最新文章

  1. linux驱动:TI+DM8127+GPIO(四)之设备
  2. 文远知行A轮再获数千万美元融资 商汤科技和农银国际跟投
  3. sklearn数据集变换
  4. python实现二叉树和它的七种遍历
  5. Spring MVC开发环境搭建
  6. deepnode处理过的图片_教你用PS快速修复图片脏乱和瑕疵,快来一起学习吧!
  7. java eofexception_EOFException异常详解
  8. ABB机器人指令列表分类详解
  9. php ucfirst();函数
  10. python练习题:u2.1求三角形斜边长度
  11. CSS transform属性+js requestAnimationFrame函数实现旋转方块以及调整转动速度
  12. Linux下的图片编辑软件
  13. 七牛云存储使用经历到底怎么样
  14. firefox的about:config说明及配置
  15. 怎么在node环境使用es6语法? bable有什么作用? 发布环境下移除console
  16. IC - 什么是数字IC设计?
  17. Arduino通过串口透传ESP 13板与java程序交互
  18. tp5 {if}判断标签 在Html页面中使用
  19. 浅谈子网、子网掩码、保留地址
  20. 笔记:期权定价-无套利理论

热门文章

  1. 固高控制卡相关要点分析2
  2. 25 个超棒的 Python 脚本合集(迷你项目)
  3. ef+mysql配置
  4. 北京2017年7月开始 社保最低缴费
  5. android 图片加载 软引用_android Listview 软引用SoftReference异步加载图片
  6. C++ 标准库之typeid
  7. Linux 批量处理dos2unix
  8. 微信小程序的wxml、wxss、js、json的理解
  9. Handlebars 介绍
  10. 【Vue开发实战课后题】子组件为何不可以修改父组件传递的props?