標(biāo)題: 用74HC595移位寄存器靜態(tài)顯示數(shù)碼管(參考版程序) [打印本頁(yè)]

作者: liuda    時(shí)間: 2015-1-22 01:58
標(biāo)題: 用74HC595移位寄存器靜態(tài)顯示數(shù)碼管(參考版程序)
  1. #include <REG51.H>
  2. #include <intrins.h>
  3. #define  NOP() _nop_()  // 定義空指令 ,這個(gè)函數(shù)在庫(kù) <intrins.h> 中
  4. //SPI IO
  5. sbit MOSI = P3^4;
  6. sbit R_CLK = P3^5;
  7. sbit S_CLK = P3^6;
  8. //函數(shù)聲明
  9. void HC595SendData( unsigned char BT0);
  10. /*************主函數(shù)*****************************/       
  11. void main(void)
  12. {
  13.    while(1)
  14.    {   
  15. HC595SendData(0x82);//驅(qū)動(dòng)共陽(yáng)數(shù)碼管顯示6                
  16.    }
  17. }

  18. /*********************************************************************************************************
  19. ** 函數(shù)名稱(chēng): HC595SendData
  20. ** 功能描述: 向SPI總線(xiàn)發(fā)送數(shù)據(jù)
  21. *********************************************************************************************************/
  22. void HC595SendData( unsigned char BT0)
  23. {  
  24.   unsigned char i;
  25.   for(i = 0; i < 16; i++)//循環(huán)十六次后,就可以用下一個(gè)移位寄存器來(lái)控制了
  26.    {
  27.   
  28.         if((BT0<< i) & 0x80)  //判斷最高位是0還是1
  29.       {
  30.    MOSI = 1;// 如果為真,將1送入移位寄存器
  31. }
  32. else
  33. {
  34.    MOSI = 0;            
  35. }       
  36. S_CLK = 0;//移位一次
  37. NOP();
  38. S_CLK = 1;//上升沿有效
  39.    }  
  40.   R_CLK = 0; //移位結(jié)束取出數(shù)據(jù)
  41.   NOP();
  42.   R_CLK = 1; //上升沿有效

  43. }
復(fù)制代碼



作者: Gerage    時(shí)間: 2015-6-16 09:51
怎么沒(méi)有電路圖呢




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1