找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3156|回復(fù): 1
收起左側(cè)

HC595驅(qū)動8位led的8051程序

[復(fù)制鏈接]
ID:116454 發(fā)表于 2016-4-24 23:02 | 顯示全部樓層 |閱讀模式
HC595驅(qū)動8位led的8051程序

0.png
下面是部分程序預(yù)覽(完整版本請下載本帖附件): HC595驅(qū)動8位led的8051程序.zip (24.68 KB, 下載次數(shù): 18)
  1. #include <AT89X51.H>

  2. unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  3. unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  4. unsigned char  disbuf[4]={0,0,0,0};


  5. //-----------------------------------------------------------------------------
  6. // 函數(shù)原形定義
  7. #define uchar unsigned char

  8. void main (void);                                        // 主函數(shù)
  9. void LED4_Display (void);                        // LED顯示
  10. void LED_OUT(uchar X);                                // LED單字節(jié)串行移位函數(shù)

  11. unsigned char code LED_0F[];                // LED字模表

  12. sbit DIO = P1^0;                                //串行數(shù)據(jù)輸入
  13. sbit RCLK  = P1^1;                                //時(shí)鐘脈沖信號——上升沿有效
  14. sbit SCLK = P1^2;                                //打入信號————上升沿有效

  15. //-----------------------------------------------------------------------------
  16. // 全局變量
  17. uchar LED[8];        //用于LED的8位顯示緩存


  18. //*****************************************************************************
  19. // 主程序
  20. //
  21. void main (void)
  22. {

  23.         LED[0]=1;
  24.         LED[1]=2;
  25.         LED[2]=3;
  26.         LED[3]=4;

  27.         while(1)
  28.         {
  29.                 LED4_Display ();
  30.         }
  31. }

  32. void LED4_Display (void)
  33. {
  34.         unsigned char code *led_table;          // 查表指針
  35.         uchar i;
  36.         //顯示第1位
  37.         led_table = LED_0F + LED[0];
  38.         i = *led_table;

  39.         LED_OUT(i);                       
  40.         LED_OUT(0x01);               

  41.         RCLK = 0;
  42.         RCLK = 1;
  43.         //顯示第2位
  44.         led_table = LED_0F + LED[1];
  45.         i = *led_table;

  46.         LED_OUT(i);               
  47.         LED_OUT(0x02);               

  48.         RCLK = 0;
  49.         RCLK = 1;
  50.         //顯示第3位
  51.         led_table = LED_0F + LED[2];
  52.         i = *led_table;

  53.         LED_OUT(i);                       
  54.         LED_OUT(0x04);       

  55.         RCLK = 0;
  56.         RCLK = 1;
  57.         //顯示第4位
  58.         led_table = LED_0F + LED[3];
  59.         i = *led_table;

  60.         LED_OUT(i);                       
  61.         LED_OUT(0x08);               

  62.         RCLK = 0;
  63.         RCLK = 1;
  64. }

  65. void LED_OUT(uchar X)
  66. {
  67.         uchar i;
  68.         for(i=8;i>=1;i--)
  69.         {
  70.                 if (X&0x80) DIO=1; else DIO=0;
  71.                 X<<=1;
  72.                 SCLK = 0;
  73.                 SCLK = 1;
  74.         }
  75. }

  76. unsigned char code LED_0F[] =
  77. {// 0         1          2           3        4         5          6           7        8         9          A           b        C    d          E    F    -
  78.         0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
  79. };



復(fù)制代碼


評分

參與人數(shù) 2黑幣 +55 收起 理由
xjj904 + 5 很給力!
admin + 50 共享資料的黑幣獎勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:107291 發(fā)表于 2016-7-3 16:13 | 顯示全部樓層
大神,問一下,那個(gè)RCLK的不是一個(gè)脈沖嗎?不用延時(shí)?不太懂
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表