当前位置:首页 > 单片机 > 单片机
[导读]一、LED点阵发光原理8*8单色单片机结构图如下:从电路图中很简单的就可以看出来,想要点亮点阵中的某一个LED灯。只要使得那个灯所在的行输出高电平,所在列输出低电平就好。二、点阵扫描实验 1 /*******************

一、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的小点阵组成起来的。其结构图如下:

1234

这里只是简单示意一下。。。其中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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭