|
74hc595驅(qū)動(dòng)數(shù)碼管
單片機(jī)源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- typedef unsigned char u8;
- typedef unsigned int u16;
- #define HIGH 1
- #define LOW 0
- #define TH0_VALUE 0xDC
- #define TL0_VALUE 0x00
- #define CNT_VOICE_TIME 60
- //對(duì)芯片74hc164管腳定義
- sbit IO_74HC595_DATA = P1^7;
- sbit IO_74HC595_CLK = P1^6;
- sbit IO_74HC595_LATCH_CLK = P1^5;
- sbit IO_74HC595_DATA1 = P1^4;
- sbit IO_74HC595_CLK1 = P1^3;
- sbit IO_74HC595_LATCH_CLK1 = P1^2;
- sbit IO_BEEP = P1^4;
- //寫(xiě)數(shù)據(jù)到74hc595
- u8 code LedData[]=
- {
- 0xC0, //"0"
- 0xF9, //"1"
- 0xA4, //"2"
- 0xB0, //"3"
- 0x99, //"4"
- 0x92, //"5"
- 0x82, //"6"
- 0xF8, //"7"
- 0x80, //"8"
- 0x90, //"9"
- };
- //變量定義
- u8 u8SystemTime; //全部變量前面要注明類(lèi)型
- u8 BeepTime;
- u8 u8Voice_Time_Cnt;
- u8 Count;
- u8 DspBuf[2]=0; //存儲(chǔ)變量定義
- //時(shí)間變量定義
- u8 Second = 0;
- u8 Minute = 0;
- u8 Hour = 0;
- /***********************************************************
- 函數(shù)名稱(chēng): void DelayUs(u8 t)
- 函數(shù)功能: 大致延時(shí)長(zhǎng)度如下 t*2 + 5
- 入口參數(shù): t
- 出口參數(shù): 無(wú)
- 備 注:
- ***********************************************************/
- void DelayUs(u8 t)
- {
- while(--t);
- }
- /***********************************************************
- 函數(shù)名稱(chēng): void DelayUs(u16 t)
- 函數(shù)功能: 大致延時(shí)長(zhǎng)度如下 1ms
- 入口參數(shù): t
- 出口參數(shù): 無(wú)
- 備 注:
- ***********************************************************/
- void DelayMs(u16 t)
- {
- while(--t)
- {
- DelayUs(245);
- DelayUs(245);
- }
- }
- //發(fā)送數(shù)據(jù)到74hc595
- void HC595_SendByte(u8 Byte)
- {
- u8 i;
- for(i = 0; i < 8; i++)
- {
- IO_74HC595_DATA = Byte & 0x80;
- IO_74HC595_CLK = HIGH;
- IO_74HC595_CLK = LOW;
- Byte <<= 1;
- }
- }
- //74hc595輸出數(shù)據(jù)
- void HC595_OutData(void)
- {
- IO_74HC595_LATCH_CLK = LOW;
- _nop_();
- _nop_();
- _nop_();
- IO_74HC595_LATCH_CLK = HIGH;
- _nop_();
- _nop_();
- _nop_();
- IO_74HC595_LATCH_CLK = LOW;
- _nop_();
- _nop_();
- _nop_();
-
- }
- //2222發(fā)送數(shù)據(jù)到74hc595
- void HC595_Send2Byte(u8 Byte)
- {
- u8 i;
- for(i = 0; i < 8; i++)
- {
- IO_74HC595_DATA1 = Byte & 0x80; //先送高位
- IO_74HC595_CLK1 = HIGH;
- IO_74HC595_CLK1 = LOW;
- Byte <<= 1;
- }
- }
- //2222 74hc595輸出數(shù)據(jù)
- void HC595_Out2Data(void)
- {
- IO_74HC595_LATCH_CLK1 = LOW;
- _nop_();
- _nop_();
- _nop_();
- IO_74HC595_LATCH_CLK1 = HIGH;
- _nop_();
- _nop_();
- _nop_();
- IO_74HC595_LATCH_CLK1 = LOW;
- _nop_();
- _nop_();
- _nop_();
-
- }
- //刷新數(shù)碼管
- void HC595_Refresh(void)
- {
- HC595_SendByte(DspBuf[0]);
- HC595_OutData();
-
- HC595_Send2Byte(DspBuf[1]);
- HC595_Out2Data();
- }
- //定時(shí)器初始化
- void T0_Init(void)
- {
- TMOD |= 0x01;
- TH0 = TH0_VALUE;
- TL0 = TL0_VALUE;
- EA = 1; //打開(kāi)總中斷
- ET0 = 1; //打開(kāi)中斷使能
- TR0 = 1; //開(kāi)啟中斷
- }
- //定時(shí)器中斷服務(wù)
- void Time0_ISR(void) interrupt 1
- {
- TH0 = TH0_VALUE;
- TL0 = TL0_VALUE;
- u8SystemTime++;
- if(u8SystemTime == 100)
- {
- u8SystemTime = 0;
- Second++;
- if(Second == 10)
- {
- Second = 0;
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
74hc595驅(qū)動(dòng).zip
(39.29 KB, 下載次數(shù): 8)
2017-8-31 10:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|