|
為什么在LED點(diǎn)陣顯示的時(shí)候里面的 通過 595 發(fā)送 2 個(gè)字節(jié)的數(shù)據(jù) 的函數(shù)中
SER = dat >> 7; //從最高位開始發(fā)送
dat <<= 1;
一位一位的給dat了那單片機(jī)是怎么得到的,
還有就是顯示的時(shí)候怎么一直用不到段選的數(shù)組
求大佬幫忙看看,謝謝!謝謝!
#include "reg51.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit SRCLK=P3^6; sbit RCLK=P3^5; sbit SER=P3^4;
u8 ledduan[]={0x00,0x00,0x3E,0x41,0x41,0x41,0x3E,0x00}; // 類 似 于 動(dòng)態(tài)數(shù)碼管的段選
u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; // 類 似 于動(dòng)態(tài)數(shù)碼管的位選
void Hc595SendByte(u8 dat)
{ u8 a;
SRCLK = 1; RCLK = 1;
for(a=0;a<8;a++) //發(fā)送 8 位數(shù)
{ SER = dat >> 7;
dat <<= 1;
SRCLK = 0; //發(fā)送時(shí)序
_nop_();
_nop_(); SRCLK = 1;
}
RCLK = 0;
_nop_(); _nop_(); RCLK = 1;
}void main() { u8 i=0;
while(1) { for(i=0;i<8;i++) { Hc595SendByte(ledwei); LED1(ledwei); delay(10); } }
}
|
|