|
单片机16X16点阵程序,内附接线图,源码
如果觉得点阵 闪动
是因为595读数据的原因
换成大点的晶振(24M)即可
电路原理图如下:
单片机源程序如下:
- /*****************************************************************************************
- * LED点阵实验 (左右移动) *
- ******************************************************************************************/
- #include <REG51.H>
- #include <intrins.h>
- #define NOP() _nop_() // 定义空指令 ,这个函数在库 <intrins.h> 中
- //SPI IO
- sbit MOSIO = P3^4;
- sbit R_CLK = P3^5;
- sbit S_CLK = P3^6;
- //变量声明
- unsigned long column; //点阵列
- unsigned long row; //点阵行
- unsigned long val;
- //点阵显示数组
- unsigned long code tab[] = {0x00010000, 0x00020000, 0x00040000, 0x00080000, 0x00100000, 0x00200000, 0x00400000, 0x00800000,
- 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000, 0x40000000, 0x80000000 };
- //函数声明
- void HC595SendData(unsigned long SendVal);
- void display();
-
- /*************主函数*****************************/
- void main(void)
- {
- unsigned int i, k;
- column = 0xffffffff; //全亮
- row = 0x00000000;
- for(i = 200; i > 0; i--)
- {
- display();
- }
- while(1)
- {
- for(k=0;k<16;k++)
- {
- column = tab[k];
- row = 0x00000000;
- for(i = 20; i > 0; i--)
- {
- display(); //横扫描 送入显示显示数据
- }
- }
- for(k = 0; k < 16; k++)
- {
- column = 0xffffffff;
- row = ~tab[k];
- for(i = 20; i > 0; i--)
- {
- display(); //纵扫描 送入显示显示数据
- }
- }
- }
- }
- /*********************************************************************************************************
- ** 函数名称: HC595SendData
- ** 功能描述: 向SPI总线发送数据
- *********************************************************************************************************/
- void HC595SendData(unsigned long SendVal)
- {
- unsigned char i;
-
- for(i = 0; i < 32; i++)
- {
- if((SendVal << i) & 0x80000000) MOSIO = 1; //set dataline high 0X8000 最高位与SendVal左移的最高位 进行逻辑运算
- else MOSIO = 0; // 如果为真 MOSIO = 1
- S_CLK = 0;
- NOP(); //产生方形波
- NOP();
- S_CLK = 1;
- }
-
- R_CLK = 0; //set dataline low
- NOP(); //产生方形波
- NOP();
- R_CLK = 1; //片选
- }
- void display()
- {
- val = (row & 0xffff0000) + ((column >> 16) & 0x0000ffff);
- HC595SendData(val);
- }
复制代码
所有资料51hei提供下载:
9 LED点阵.rar
(1.67 MB, 下载次数: 229)
|
评分
-
查看全部评分
|