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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

CD4094的應用,驅動四位數碼管

  [復制鏈接]
跳轉到指定樓層
樓主
用CD4094來驅動數碼管可以解放更多的I/O口,同時也能提高數碼管的驅動電流。只需要三個I/O就能驅動多位數碼管。
我這里用的是四位數碼管,里面包含了共陰極數碼管的驅動和共陽極數碼管的驅動,讓初學者更容易上手。

下圖所示的是共陰極的四位數碼管




  1. #include<reg51.h>

  2. sbit KEY = P3^2; // 定義按鍵使用的 I/O 口 P3.2


  3. sbit STR4094=P1^0; //鎖存器移位使能端,H 使能
  4. sbit D4094=P1^1; //串行數據輸出端,H 使能
  5. sbit CLK4094=P1^2; //串行時鐘輸出端,H 使能輸出狀態使能端,H 使能
  6. //sbit E4094=P1^3; //輸出狀態使能端,H 使能,直接接高電平
  7. #define HOWMANY4094 2 //定義 4094 個數

  8. unsigned char bdata P4,P5;//定義模擬 I/O 口 P4, P5 口

  9. //unsigned char code TABLE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
  10. unsigned char code TABLE[]  ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
  11.                   //數字顯示編碼表:  0    1    2   3    4    5     6    7   8    9     A     b   C    d    E    F   空
  12.                   //當 P4 輸出相應的數值時,數碼管就會按照上面的數字進行顯示。例如:P4=0xB0,數碼管就顯示"3"
  13.                  //以上編碼可以使用附贈目錄下的 數碼管段位計算小程序計算。方便又快捷。

  14. void update4094()
  15. {
  16.         unsigned char i,j,tt;
  17.         STR4094=0;
  18.         for (j=HOWMANY4094;j>0;j--)
  19.         {
  20.                 tt=*(&P4+j-1);
  21.                 for(i=0;i<8;i++)
  22.                 {
  23.                         D4094=(tt&0x80)>0;//數據腳
  24.                         CLK4094=0;
  25.                         CLK4094=1;
  26.                         tt<<=1;
  27.                 }
  28.         }
  29.         STR4094=1;
  30. }

  31. void delay_ms(unsigned short ms)
  32. {
  33.         unsigned short i;
  34.         unsigned char j;
  35.         for(i=0;i<ms;i++)
  36.         {
  37.                 for(j=0;j<200;j++);
  38.                 for(j=0;j<102;j++);
  39.         } //for(i=0;i<ms;i++)
  40. }
  41. /*
  42. void delay_us(unsigned short us)
  43. {
  44.         while(us--);
  45. }
  46. */

  47. void disp(unsigned char *p) //數碼管按位顯示函數,
  48. {
  49.         unsigned char i,x=1;
  50.         for(i=0;i<4;i++)
  51.         {
  52.                 P5=~x; //選擇一位數碼管
  53.                 P4=TABLE[p[i]]; //查表顯示一個數字。
  54.                 update4094(); //顯示數字。
  55.                 delay_ms(5);
  56.                 x<<=1; //數碼管選擇位左移 1 位
  57.         }
  58. }
  59. //將一個短整型數,個,十,百,千位分別填入一個 4 位數組,用于數碼管顯示
  60. void deal_value(unsigned short input,unsigned char *p) //數據處理函數
  61. {
  62.         //unsigned short kk;
  63.         unsigned char ge,shi,bai,qian; //定義輸入的整型變量的個,十,百,千位 數值

  64.             qian= input%10000/1000;
  65.                 bai = input%1000/100;
  66.                 shi = input%100/10;
  67.                 ge  = input%10;
  68.                        
  69.                 p[0]=qian;        //千位
  70.                 p[1]=bai;        //百位
  71.                 p[2]=shi; //十位
  72.                 p[3]=ge; //個位

  73. }

  74. void main(void)
  75. {
  76.         unsigned short kk=0; //聲明一個短整型變量,作為數碼管顯示的數字
  77.         unsigned char dis_buff[4];
  78.         unsigned char i;
  79.         bit last_key,this_key;
  80.         while(1)
  81.         {
  82.                 if(++i>=50) //循環增加 50 次,大約 1 秒鐘
  83.                 {
  84.                         i=0;
  85.                         kk++; //大約 1 秒鐘時,顯示值增加 1。
  86.                         if(kk>9999) kk=0;
  87.                         deal_value(kk,&dis_buff); //將 kk 值分解為個位,十位,百位,千位,裝入緩沖區
  88.                 }
  89.                 disp(dis_buff); //用數碼管顯示 kk 每一個顯示過程大概 20ms
  90.                 last_key=this_key;
  91.                 this_key=KEY;
  92.                 if((last_key==1)&&(this_key==0)) //如果按鍵被按下,從 0 開始重新顯示
  93.                 {
  94.                         kk=0;
  95.                         deal_value(kk,&dis_buff); //將 kk 值分解為個位,十位,百位,千位,裝入緩沖區
  96.                 }
  97.         }
  98. }





















復制代碼

打開的keil的時候如果提示你sub4094.C什么什么的話請忽略,或是自己在重新建立一個工程,將我的程序復制進去。解釋一下為什么會出現這個問題,是因為我的程序根目錄下有一個sub4094.c的文件,但是主函數中沒有調用,keil提示未啟用,所以請個位放心。

寫這個程序的時候本想是分段展開的,結果后來都匯總到一個.C里了,所以就多了那么一個文件。

CD4094 四位數碼管.zip

150.5 KB, 下載次數: 111, 下載積分: 黑幣 -5

評分

參與人數 2黑幣 +101 收起 理由
963214785 + 1 共享資料的黑幣獎勵!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

來自 2#
ID:126297 發表于 2018-2-13 13:43 | 只看該作者
深受啟迪!謝謝樓主分享!
請問老師:為什么用共陽極數碼管顯示的時候,除了個位的數碼管顯示正常外,其它各位的數碼管顯示均不正常呢?我反復對照共陰極數碼管的例子,找不出問題所在。還請樓主不吝賜教
回復

使用道具 舉報

來自 3#
ID:126297 發表于 2018-2-13 13:51 | 只看該作者
感謝樓主分享!非常受啟發。
只是在仿真共陽極數碼管的時候,除了個位上的數值顯示正常外,其它三位(千位、百位。十位)上的數值均顯示不正常。具體的現象是,只有當各個位上的數值都相同的時候,才正常顯示,如果不相同就不能正常顯示。我反復對照共陰極的程序和仿真原理圖,發現除了數碼管的段碼不相同,以及共陽極的仿真原理圖上加入了反相器外,其它沒有任何不同的地方。但是共陽極的仿真結果就是不正常,不知是什么原因

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:56331 發表于 2016-8-4 15:46 | 只看該作者
自己下自己的程序也是要扣黑幣的????
回復

使用道具 舉報

5#
ID:56331 發表于 2016-8-4 15:46 | 只看該作者
下載了自己的程序怎么還扣幣呢?
回復

使用道具 舉報

6#
ID:152838 發表于 2016-12-7 11:07 | 只看該作者
好東西,需要贊一個
回復

使用道具 舉報

7#
ID:152422 發表于 2016-12-15 18:38 | 只看該作者
資料里面有仿真就好了。
回復

使用道具 舉報

8#
ID:56331 發表于 2017-1-6 09:01 | 只看該作者
gshuxiao8 發表于 2016-12-15 18:38
資料里面有仿真就好了。

里面帶有仿真的,你沒有仔細看?
回復

使用道具 舉報

9#
ID:197773 發表于 2017-5-8 22:49 | 只看該作者
支持一下
回復

使用道具 舉報

10#
ID:187675 發表于 2017-5-13 11:36 | 只看該作者
請教

按照樓住的圖和程序,仿真時顯示不全是什么問題?



回復

使用道具 舉報

11#
ID:56331 發表于 2017-8-3 16:37 | 只看該作者
rs7cai 發表于 2017-5-13 11:36
請教

按照樓住的圖和程序,仿真時顯示不全是什么問題?

你是不是沒有按照我的定義去編輯,我的實物都是沒有任何問題的!
回復

使用道具 舉報

12#
ID:232860 發表于 2017-9-13 13:50 | 只看該作者
樓主好厲害。我也在弄。
回復

使用道具 舉報

13#
ID:232860 發表于 2017-9-13 14:17 | 只看該作者
樓主的P5的作用是什么呢?
回復

使用道具 舉報

14#
ID:344751 發表于 2018-6-4 16:23 | 只看該作者
謝謝分享
回復

使用道具 舉報

15#
ID:344751 發表于 2018-6-4 16:53 | 只看該作者
請樓主加我qq,想請教有關CD4094級聯的問題,感謝!qq:732373166
回復

使用道具 舉報

16#
ID:56331 發表于 2018-9-5 00:28 | 只看該作者
zhnjun63 發表于 2018-2-13 13:43
深受啟迪!謝謝樓主分享!
請問老師:為什么用共陽極數碼管顯示的時候,除了個位的數碼管顯示正常外,其它 ...

你需要調用共陽級的數碼管程序,調用錯了的話會出現顯示的都是反碼
回復

使用道具 舉報

17#
ID:56331 發表于 2018-9-5 00:29 | 只看該作者
zhnjun63 發表于 2018-2-13 13:51
感謝樓主分享!非常受啟發。
只是在仿真共陽極數碼管的時候,除了個位上的數值顯示正常外,其它三位(千位 ...

共陰和共陽是正好為反碼 所以你會發現其實程序沒有變,但是我用反相器也能實現一樣的效果。
回復

使用道具 舉報

18#
ID:56331 發表于 2018-9-5 00:30 | 只看該作者
linux100 發表于 2017-9-13 14:17
樓主的P5的作用是什么呢?

P5是我虛擬出一組輸出口
回復

使用道具 舉報

19#
ID:412814 發表于 2019-1-2 11:00 | 只看該作者
謝謝樓主分享,先收藏了慢慢看
回復

使用道具 舉報

20#
ID:280006 發表于 2019-6-24 14:41 | 只看該作者
昭通音響-小倪 發表于 2018-9-5 00:29
共陰和共陽是正好為反碼 所以你會發現其實程序沒有變,但是我用反相器也能實現一樣的效果。

不用反相器,應該怎么弄?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区三区在线观看 | 欧美日韩国产一区二区三区 | 国产一区二区三区久久久久久久久 | 一区二区三区不卡视频 | 日韩在线精品视频 | 91精品午夜窝窝看片 | 成人亚洲精品 | 亚洲自拍偷拍av | 日韩精品一区二区不卡 | 一区二区三区国产 | 亚洲不卡在线观看 | 97精品超碰一区二区三区 | 黄色av观看 | 91在线播 | 欧美精品一区二区在线观看 | 欧美一级黄色免费看 | 黄色大片视频 | 久久精品国产99国产精品 | 欧美成人一区二区三区片免费 | 久久69精品久久久久久久电影好 | 日韩 国产 在线 | 免费在线看黄 | 一级黄色片免费在线观看 | 免费不卡视频 | 91高清在线观看 | 亚洲一区欧美 | 欧美在线色 | 日韩www视频 | 成人美女免费网站视频 | 欧美精品一二三 | 亚洲欧洲激情 | 黄色一级电影免费观看 | 91精品国产麻豆 | 国产女人与拘做受免费视频 | 国产一级一级毛片 | 久久久性色精品国产免费观看 | 日本精品视频在线观看 | 中文在线一区 | 性色av香蕉一区二区 | 久夜精品| 欧美在线一区视频 |