久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2356|回復: 7
打印 上一主題 下一主題
收起左側

單片機+74HC595四位數碼管的驅動程序不太理解

[復制鏈接]
跳轉到指定樓層
樓主
ID:950830 發表于 2021-7-18 22:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是數碼管的例程
LED[0]=1;
LED[1]=2;
LED[2]=3;
LED[3]=4;
主程序的這四句不太理解,也沒有注釋希望有大佬能解釋一下
  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. // 函數原形定義
  7. #define uchar unsigned char

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

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

  12. sbit DIO = P1^0;                                //串行數據輸入
  13. sbit RCLK  = P1^1;                                //時鐘脈沖信號——上升沿有效
  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. };
復制代碼

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

地板
ID:94031 發表于 2021-7-20 10:49 | 只看該作者
把全部工程發出來,否則無法看明白。
回復

使用道具 舉報

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

1,2,3,4是數值
經過一些運算處理后就可以讓數碼管顯示1,2,3,4
有啥問題?
回復

使用道具 舉報

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

1,2,3,4就是數據呀,這四個的意思就是將LED[8]這個數組的一部分初始化,就是給數組中前四個數據賦值,因為之后的數碼管顯示要用到這個數組。
回復

使用道具 舉報

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

非常感謝,終于搞明白了
回復

使用道具 舉報

8#
ID:950830 發表于 2021-7-25 15:17 | 只看該作者
lkc8210 發表于 2021-7-20 11:03
1,2,3,4是數值
經過一些運算處理后就可以讓數碼管顯示1,2,3,4
有啥問題?

非常感謝,搞明白了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠爱视频 | 久久综合九九 | 国产精品不卡一区 | 777zyz色资源站在线观看 | 欧美日韩成人在线 | 波多野结衣精品 | 亚洲人成在线观看 | 人成在线视频 | 免费在线观看成人 | 亚洲一级毛片 | 91精品在线播放 | 亚洲中午字幕 | 男人天堂av网站 | 欧美成人综合 | 国产精品a免费一区久久电影 | 久久久久国产精品一区三寸 | 国产成人高清视频 | 狠狠色综合网站久久久久久久 | 成人在线视频免费观看 | 欧美一区二区三区在线观看 | 欧美日韩亚洲一区 | 一区免费观看 | 九色av| 精品国产乱码久久久久久果冻传媒 | 精品一二区 | 视频一区在线观看 | 久久久精品 | 精品欧美一区免费观看α√ | 久久久久av | 精品99在线 | 日韩欧美三区 | 大乳boobs巨大吃奶挤奶 | 黄网站在线观看 | 国产成人精品一区二区三区四区 | 亚洲精品免费看 | 日韩图区 | 中文字幕一区二区三区四区五区 | 亚洲成人福利 | 欧美精选一区二区 | www.日韩免费| 精品伦精品一区二区三区视频 |