xuyaqi 发表于 2020-5-25 11:31 #include<reg52.h> typedef unsigned char u8; typedef unsigned int u16; hanzi[]={0xC3,0xc3,0xc3,0xc3,0x42,0x42,0x24,0x24}; // lie[] ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { while(1) { u8 i; u16 j; for(i=0;i<8;i++) { /* for(j=0;j<500;j++)*/ P1=~lie[ i];//位选 P0=hanzi[ i];//段选 } } } 不行 用仿真直接全亮 我加个延迟循环 也是一闪一闪的 显示内容也不对 仿真不行 |
wulin 发表于 2020-5-25 10:48 哦哦 我又对着书写一遍一摸一样的程序 还是有问题 就感觉很奇怪 现在知道了 多谢 |
用 P0 P1 口点亮 8x8 led点阵 /* 用 P0 P1 口点亮 8x8 led点阵 P1 位选 P0 段选 */ #include<reg52.h> typedef unsigned char u8; typedef unsigned int u16; hanzi[]={0xC3,0xc3,0xc3,0xc3,0x42,0x42,0x24,0x24}; // lie[] ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { while(1) { u8 i; for(i=0;i<8;i++) { P1=~lie[i];//位选 P0=hanzi[i];//段选 } } } |
这是仿真软件的缺陷,不是程序问题,高速动态扫描无法得到预想效果。 |
74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。 所以595在没有新的数据刷新时可以保持的 ![]() |