led点阵屏线性学习笔记 |
您所在的位置:网站首页 › 51单片机入门教程江科大 › led点阵屏线性学习笔记 |
原理图 OE接GND 595才会有输出 左边就是一个串行输入,SERCLK来一个上升沿SER进一位数据,RCLK打开了全部数据就出来了 sfr特殊功能寄存器声明 如sfr P0 = 0x80(地址); sbit 特殊位声明 sbit P0_1 = 0x81; 或 P0_1 = P0^1; 一个寄存器有8个位但只有1个物理地址 要操作其中一位不影响别的位需要用&=,|=,^=
定义一下74H595的输入接口 然后再通过循环给寄存器数据 再把移位寄存器的数据发送到并行寄存器中 就可以控制Dpa~Dph了 再写一个函数同时控制P00~P07 这个函数是先确定这一列要显示的数据,然后给Dpa~Dph赋值,然后确定这是那一列,再给P07~P00赋值 但是需要多个列显示这个方法就行不通 这里和动态数码管显示同理 延时显示的时间来控制屏幕刷新率 最后清楚当前显示避免拖影 再不断调用这个函数已达到动态显示的效果 这里的频闪在摄像头下仍然是很高的,这一类显示比较伤眼,这里可以推测一下显示频率,可以看出有四列,每列显示1ms,而FPS是一秒显示的帧数,所以显示的时长(Delay)就可以是 (1/FPS)/4 , 如果是60FPS就是(1/60)/4 = 4.16ms (1/60就是计算显示一次画面所需时长,一次画面所需时长/4就是计算有四列,每一列显示多久合适)当然这里在实际应用有极大的不准确性,需要测量程序在其它部分的时长,再重新消除这个误差才能达到稳定的帧数。但放到实际应用中我试了一下这里如果帧数太高的话会导致亮度变低。 这里可以用点阵屏做一个动画 用取模工具做一个8x32的像素图 把数据放入数组中 这里我犯了一个错误,忘了在最后加分号 这里再让行的显示随着Offset变化 利用定时器让offset每1秒变一次 这里再加一个判断让它重新开始 使用code关键字是为了将数组存储在程序存储器(也称为代码存储器或Flash存储器)中,而不是在数据存储器(RAM)中。这是因为51单片机的RAM通常非常有限,而程序存储器的空间相对较大。 但是如果放入flash这个数组就不能再更改了(类似常数) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |