找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2359|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+74HC595四位數(shù)碼管的驅(qū)動(dòng)程序不太理解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:950830 發(fā)表于 2021-7-18 22:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是數(shù)碼管的例程
LED[0]=1;
LED[1]=2;
LED[2]=3;
LED[3]=4;
主程序的這四句不太理解,也沒(méi)有注釋希望有大佬能解釋一下
  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í)鐘脈沖信號(hào)——上升沿有效
  14. sbit SCLK = P1^2;                                //打入信號(hào)————上升沿有效

  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ù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2021-7-18 23:50 | 只看該作者
就是把1,2,3,4放入數(shù)列LED的第0,1,2,3位
回復(fù)

使用道具 舉報(bào)

板凳
ID:950830 發(fā)表于 2021-7-20 10:39 | 只看該作者
lkc8210 發(fā)表于 2021-7-18 23:50
就是把1,2,3,4放入數(shù)列LED的第0,1,2,3位

這個(gè)1、2、3、4具體指的是什么呢,是讓數(shù)碼管顯示1、2、3、4嗎,如果是這的話,我就更懵了
回復(fù)

使用道具 舉報(bào)

地板
ID:94031 發(fā)表于 2021-7-20 10:49 | 只看該作者
把全部工程發(fā)出來(lái),否則無(wú)法看明白。
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2021-7-20 11:03 | 只看該作者
boboj 發(fā)表于 2021-7-20 10:39
這個(gè)1、2、3、4具體指的是什么呢,是讓數(shù)碼管顯示1、2、3、4嗎,如果是這的話,我就更懵了

1,2,3,4是數(shù)值
經(jīng)過(guò)一些運(yùn)算處理后就可以讓數(shù)碼管顯示1,2,3,4
有啥問(wèn)題?
回復(fù)

使用道具 舉報(bào)

6#
ID:934353 發(fā)表于 2021-7-20 11:13 | 只看該作者
boboj 發(fā)表于 2021-7-20 10:39
這個(gè)1、2、3、4具體指的是什么呢,是讓數(shù)碼管顯示1、2、3、4嗎,如果是這的話,我就更懵了

1,2,3,4就是數(shù)據(jù)呀,這四個(gè)的意思就是將LED[8]這個(gè)數(shù)組的一部分初始化,就是給數(shù)組中前四個(gè)數(shù)據(jù)賦值,因?yàn)橹蟮臄?shù)碼管顯示要用到這個(gè)數(shù)組。
回復(fù)

使用道具 舉報(bào)

7#
ID:950830 發(fā)表于 2021-7-25 15:16 | 只看該作者
開(kāi)心就好hhhh 發(fā)表于 2021-7-20 11:13
1,2,3,4就是數(shù)據(jù)呀,這四個(gè)的意思就是將LED[8]這個(gè)數(shù)組的一部分初始化,就是給數(shù)組中前四個(gè)數(shù)據(jù)賦值,因 ...

非常感謝,終于搞明白了
回復(fù)

使用道具 舉報(bào)

8#
ID:950830 發(fā)表于 2021-7-25 15:17 | 只看該作者
lkc8210 發(fā)表于 2021-7-20 11:03
1,2,3,4是數(shù)值
經(jīng)過(guò)一些運(yùn)算處理后就可以讓數(shù)碼管顯示1,2,3,4
有啥問(wèn)題?

非常感謝,搞明白了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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