51單片機+74hc595鎖存器驅(qū)動一個靜態(tài)數(shù)碼管
實驗開發(fā)板HC6800 v2.8 (淘寶可以查到)
將JP2 與JP3相連即可,注意排線要反接
代碼如下:
/*
* 標(biāo)題: 試驗數(shù)碼管上如何顯示數(shù)字(共陽極) *
* *
* 連接方法:P2 與P3 用8PIN排線連接 *
* *
* *
/
#include
#include
void delay(unsigned int i); //函數(shù)聲名
// 此表為 LED 的字模,0~F
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
sbit lock=P3^5;//12,storage register clock input
sbit clk=P3^6;//11,shift register clock input
sbit dat=P3^4;//14,serial data input
/*將顯示數(shù)據(jù)串行發(fā)送到74hc595*/
void sendTo(unsigned char k)
{
unsigned char i;
for(i=0;i<8;i++)
{
dat=k&0x01;
clk=0;//移位寄存器移位
_nop_();
_nop_();
clk=1;
k>>=1;//發(fā)送數(shù)據(jù)右移一位
}
}
void main()
{
unsigned int LedNumVal=0 ,C ; //定義變量
while(1)
{
if (++C>= 300)
{ LedNumVal++ ; //每隔300個掃描周期加一次
C =0; //每隔300個掃描清零
}
lock=0;
// 將字模送到14,serial data input
sendTo(LED7Code[LedNumVal%10]&0x7f);
//LED7 0x7f為小數(shù)點 共陰和共陽此處也是不一樣;
_nop_();
_nop_();
lock=1;//所存數(shù)據(jù)
delay(300); //調(diào)用延時程序
}
}
/*
* *
* 延時程序 *
* *
*/
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
評論