|
單片機16X16點陣程序,內附接線圖,源碼
如果覺得點陣 閃動
是因為595讀數據的原因
換成大點的晶振(24M)即可
電路原理圖如下:
原理圖(不清晰可參考總原理圖).jpg (69.08 KB, 下載次數: 71)
下載附件
2018-9-3 01:47 上傳
單片機源程序如下:
- /*****************************************************************************************
- * 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);
- }
復制代碼
0.png (44.82 KB, 下載次數: 81)
下載附件
2018-9-3 01:50 上傳
所有資料51hei提供下載:
9 LED點陣.rar
(1.67 MB, 下載次數: 229)
2018-9-2 18:49 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|