一、LED点阵发光原理
8*8单色单片机结构图如下:
从电路图中很简单的就可以看出来,想要点亮点阵中的某一个LED灯。只要使得那个灯所在的行输出高电平,所在列输出低电平就好。
二、点阵扫描实验
1 /***********************************************
2 实验名称: 点阵扫描
3 实验说明: 扫描每个LED灯,检查点阵是否完好
4 实验时间: 2014/12/24
5 ***********************************************/
6 #include 7 #include 8 9 #define uchar unsigned char 10 #define uint unsigned int 11 12 sbit MOSIO = P3^4;//输入口 13 sbit R_CLK = P3^5;//锁存器时钟 14 sbit S_CLK = P3^6;//移位寄存器时钟 15 16 //data3:右边半块列数据;data2:左边半块列数据 17 //data1:下边半块行数据;data0:上边半块行数据 18 void HC595Pro(uchar data3,uchar data2,uchar data1,uchar data0); 19 20 void main() 21 { 22 uint i,j; 23 uchar d; 24 25 while(1) 26 { 27 //全亮 28 HC595Pro(0x00,0x00,0xFF,0xFF); 29 for(i=0;i<40000;i++); //延时40ms 30 31 /*行扫描*/ 32 //上半块行扫描 33 d = 0x01; 34 for(i=0;i<8;i++) 35 { 36 HC595Pro(0x00,0x00,0x00,d); 37 d <<= 1; 38 for(j=0;j<20000;j++); //延时20ms 39 } 40 //下半块行扫描 41 d = 0x01; 42 for(i=0;i<8;i++) 43 { 44 HC595Pro(0x00,0x00,d,0x00); 45 d <<= 1; 46 for(j=0;j<20000;j++); //延时20ms 47 } 48 49 /*列扫描*/ 50 //左半快列扫描 51 d = 0xFE; 52 for(i=0;i<8;i++) 53 { 54 HC595Pro(0xFF,d,0xFF,0xFF); 55 //如果还想用跟行扫描一样的形式,看main()最下面注释行 56 d = _crol_(d,1); //循环左移 57 for(j=0;j<20000;j++); //延时20ms 58 } 59 //右半块列扫描 60 d = 0xFE; 61 for(i=0;i<8;i++) 62 { 63 HC595Pro(d,0xFF,0xFF,0xFF); 64 d = _crol_(d,1); 65 for(j=0;j<20000;j++); //延时20ms 66 } 67 /****************************************************** 68 b1 = 0x01; 69 for(i = 0; i<8; i++) 70 { 71 HC595Pro(0xFF, ~b1, 0xFF, 0xFF); 72 b1 <<= 1; 73 for(j=0; j<20000; j++); 74 } 75 76 b1 = 0x01; 77 for(i = 0; i<8; i++) 78 { 79 HC595Pro(~b1, 0xFF, 0xFF, 0xFF); 80 b1 <<= 1; 81 for(j=0; j<20000; j++); 82 } 83 ******************************************************/ 84 } 85 } 86 87 void HC595Pro(uchar data3,uchar data2,uchar data1,uchar data0) 88 { 89 uchar i; 90 //先移入的会被后面移入的数据推移到后面的595中,所以需要先移入data3 91 for(i=0;i<8;i++) 92 { 93 //先移入高位再移入低位,移位寄存器移入的第一位就是输出的最高位 94 MOSIO = data3 >> 7; 95 data3 <<= 1; 96 S_CLK = 0;//给一个上升沿,移位 97 S_CLK = 1; 98 } 99 for(i=0;i<8;i++) 100 { 101 MOSIO = data2 >> 7; 102 data2 <<= 1; 103 S_CLK = 0; 104 S_CLK = 1; 105 } 106 for(i=0;i<8;i++) 107 { 108 MOSIO = data1 >> 7; 109 data1 <<= 1; 110 S_CLK = 0; 111 S_CLK = 1; 112 } 113 for(i=0;i<8;i++) 114 { 115 MOSIO = data0 >> 7; 116 data0 <<= 1; 117 S_CLK = 0; 118 S_CLK = 1; 119 } 120 121 //上升沿时将移位寄存器数据移到锁存器中用于显示,平时保持低电平,数据不变 122 R_CLK = 0; 123 R_CLK = 1; 124 R_CLK = 0; 125 126 } 这里我用到的是16*16的点阵。其实也就是4个8*8的小点阵组成起来的。其结构图如下: 1 2 3 4 这里只是简单示意一下。。。其中4个小块都是与一个相对应的74HC595相连。每个74HC595又是级联的,入口只有一个,我们需要输入相对应的行,列电平情况来控制LED灯的亮灭。 根据74HC595的结构可以知道,输入的数据是8位8位的输入的。最开始输入的8位数据会被后面的输入数据推移到第四个74HC595中。 所以实际输入时,是先输入2和4的列数据,再输入1和3的列数据,然后再是3和4的行数据,最后才是1和2的行数据。 三、16*16点阵倒计时 1 /*********************************************************************** 2 实验名称: 16*16点阵数字倒计时 3 实验时间: 2014/12/26 4 ***********************************************************************/ 5 #include 6 #include 7 8 #define uchar unsigned char 9 #define uint unsigned int 10 11 sbit MOSIO = P3^4; 12 sbit R_CLK = P3^5; 13 sbit S_CLK = P3^6; 14 15 void HC595Pro(uchar data3,uchar data2,uchar data1,uchar data0); 16 17 void main() 18 { 19 uint i,c; 20 uchar j; 21 i = 100; 22 23 while(1) 24 { 25 //显示数字10 26 for(c=i;c>0;c--)//延时 27 for(j=0;j<16;j++) 28 { 29 //字模取出来的数据是跟实际实际所需数据相反的,所以要取反。 30 //函数对应的参数分别表示列2,列1,行2,行1 31 HC595Pro(~tab1[2*j+1],~tab1[2*j],tab0[2*j],tab0[2*j+1]); 32 } 33 HC595Pro(0xFF,0xFF,0x00,0x00);//清屏 34 35 //显示数字09 36 for(c=i;c>0;c--) 37 for(j=0;j<16;j++) 38 { 39 HC595Pro(~tab2[2*j+1],~tab2[2*j],tab0[2*j],tab0[2*j+1]); 40 } 41 HC595Pro(0xFF,0xFF,0x00,0x00);//清屏 42 43 //显示数字08 44 for(c=i;c>0;c--) 45 for(j=0;j<16;j++) 46 { 47 HC595Pro(~tab3[2*j+1],~tab3[2*j],tab0[2*j],tab0[2*j+1]); 48 } 49 HC595Pro(0xFF,0xFF,0x00,0x00);//清屏 50 51 //显示数字07 52 for(c=i;c>0;c--) 53 for(j=0;j<16;j++) 54 { 55 HC595Pro(~tab4[2*j+1],~tab4[2*j],tab0[2*j],tab0[2*j+1]); 56 } 57 HC595Pro(0xFF,0xFF,0x00,0x00);//清屏
设计资源 培训 开发板 精华推荐
- Kintex-7系列电源模块
- 【物联网】鸿蒙智能WiFi开关+1773010A
- 使用 ON Semiconductor 的 STK402-030 的参考设计
- EVAL-ADG5412FEBZ,ADG5412F 过压保护四通道 SPST 评估板
- 触发式语音报时系统及语音识别电路
- 具有关断功能的 LT1129CQ 5V 低压差稳压器电源的典型应用电路
- ADR444A 4.096 Vout 超低噪声、LDO XFET 电压基准的典型应用,具有电流吸收器和电流源
- L5980、0.7A降压型开关稳压器评估板
- 使用 Analog Devices 的 LT1506CR-3.3SYNC 的参考设计
- LTC3851AIMSE-1、1.8V/5A 转换器的典型应用电路来自具有脉冲跳跃操作的设计实例
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知