|
#include <reg51.h>
#include <intrins.h>
#define NOP() _nop_() /* 定義空指令 */
sbit MOSIO =P0^0;// DS 第14腳 串行數(shù)據(jù)輸入
sbit S_CLK =P0^3;// STCP 第12腳 存儲(chǔ)寄存器時(shí)鐘輸入
sbit R_CLK =P0^1;// SHCP 第11腳 移位寄存器時(shí)鐘輸入
void delay(unsigned int i); //函數(shù)聲名 延時(shí)
void HC595SendData(unsigned char SendVal);//函數(shù)聲名 595操作
void tabData(unsigned int tab); //函數(shù)聲名數(shù)組傳遞
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
// 此表為 //LED 的字模 0 1 2 3 4 5 6 7 8 9 A b c d E - L P U Hidden _ (20)
unsigned int i=0;
unsigned int tab1[2]=0;
unsigned int tab2[2]=0;
unsigned int tab3[2]=0;
void main()
{
while(1)
{
for(i=0;i<2;i++)
{
delay(100);// delay(100);delay(100);
tab3[i]=P3; tab2[i]=P2; tab1[i]=P1;
if(tab1[0]^tab1[1]) tabData(P1+1); //0-63
if(tab2[0]^tab2[1]) tabData(P2+128); //64-128
if(tab3[0]^tab3[1]) tabData(P3+256); //128-192
/* tab1[i]=P1;
if(tab1[0]^tab1[1]) tabData(P1+1); //0-63 */
}
}
}
/*********************************************************************************************************
** 函數(shù)名稱: 延時(shí)函數(shù)
*********************************************************************************************************/
void delay(unsigned int i)
{
unsigned int j;
for(i; i > 0; i--)
for(j = 300; j > 0; j--);
}
/*********************************************************************************************************
** 函數(shù)名稱: HC595SendData
** 功能描述: 向SPI總線發(fā)送數(shù)據(jù)
*********************************************************************************************************/
void HC595SendData(unsigned char SendVal)
{
unsigned char i;
for(i=0;i<8;i++)
{
if(SendVal&0x80)
MOSIO=0; //set dataline high 0X80 最高位與SendVal左移的最高位 進(jìn)行邏輯運(yùn)算
else
MOSIO=1; // 如果為真 MOSIO = 1
SendVal<<=1;
S_CLK=0;
NOP();
NOP();
S_CLK=1;
}
}
/*********************************************************************************************************
** 函數(shù)名稱: 數(shù)組接受
** 功能描述: 接受數(shù)組數(shù)轉(zhuǎn)化 發(fā)送到595
*********************************************************************************************************/
void tabData(unsigned int LedNumVal)
{
unsigned char HC595ge=0 , HC595bai=0 , HC595shi=0;
HC595bai = LED7Code[LedNumVal/100]; //百位
HC595SendData(HC595bai);
HC595shi = LED7Code[LedNumVal%100/10]; //十位
HC595SendData(HC595shi);
HC595ge = LED7Code[LedNumVal%10]; //個(gè)位
HC595SendData(HC595ge);
R_CLK=0; //set dataline low
NOP();
NOP();
R_CLK=1; //片選
}
|
-
-
通道號(hào)顯示通用程序.rar
2019-4-14 22:41 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
18.18 KB, 下載次數(shù): 9, 下載積分: 黑幣 -5
|