cache[1] = temp[0] >> j | temp[1] << (8 - j);
}
displayBuff[0] = ROW_NUM[2 * i]; //上8行码值,上为高位
displayBuff[1] = ROW_NUM[2 * i + 1]; //下8行码值,上为高位
displayBuff[2] = ~cache[0]; //每一行对应的左8列码值,左为高位
displayBuff[3] = ~cache[1]; //每一行对应的右8列码值,左为高位
InputTo595(displayBuff, 4);
_nop_();
OutputFrom595();
DelayX10us(5);//显示时间延时,太长会引起闪烁感
}
}
}
mode = ~mode; //移位8次后模式反转,下一半汉字第一行码值的地址即将存到基准指针
if (mode == 0) num++; //mode再次为0时,即屏幕已显示到下一个字
if (num == wordsCount)
{
num = 0;
moveLeft = ~moveLeft; //反向滚动
}
}
}
/**
* 将displayBuff数组输入级联的595芯片,最后一个元素先输入,从低位到高位顺序输入
* @param displayBuff 输入数组地址
* @param len 要输入的数组元素个数,从数组第一个元素开始计
*/
void InputTo595(uchar *displayBuff, uchar len)
{
uchar i, j;
for (j = len; j > 0; j--)
{
for (i = 0; i < 8; i++)
{
DS_595 = displayBuff[j - 1] & 0x01 ; //先输入最低位
displayBuff[j - 1] >>= 1;
SHCP_595 = 0;
_nop_();
SHCP_595 = 1; //上升沿,输入到移位寄存器
}
}
}
void OutputFrom595() //595输出
{
STCP_595 = 0;
_nop_();
STCP_595 = 1;
STCP_595 = 0;
}
//延时10us的倍数,误差5us
void DelayX10us(uchar multi)
{
do
{
_nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_();
} while (--multi);
}
上一篇:8051系列单片机软件精确延时研究(一)
下一篇:4个74HC595级联控制16x16点阵横向滚动带仿真(一)
推荐阅读最新更新时间:2026-03-21 16:16
- Er3105Di 500Ma宽输入电压同步降压稳压器内部默认参数选择典型应用示意图
- 使用 LTC2377CMS-16、16 位、500ksps、低功耗 SAR ADC 的典型应用
- L7806C负输出电压电路的典型应用
- LT3959 的典型应用 - 具有 6A、40V 开关的宽输入电压范围升压/SEPIC/反相转换器
- LPS33W适配器板,标准DIL24插座
- 使用 Analog Devices 的 LT3470AIDDB 的参考设计
- MC33364通用输入电池充电器典型应用电路
- AM2G-2405SH30Z 5V 2W DC/DC 转换器的典型应用
- 用于电池测试解决方案的 ADP1972 降压或升压、PWM 控制器的典型应用
- LT1121IS8-3.3 5V 低压差稳压器的典型应用电路,用于具有关断的电池供电电源



IGBT模块:技术、驱动和应用(上海海事大学 PPT课件)
virtual51 8051动态可视化虚拟机模拟器 V2.0 源代码及EXE
LED点阵论文
非常经典的关于LLC的杨波博士论文
XC6406PP60DL






京公网安备 11010802033920号