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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機不同P口數(shù)碼管顯示仿真+源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:163705 發(fā)表于 2018-1-22 16:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
此程序可使用不同P口的任意單片機引腳驅(qū)動數(shù)碼管顯示。包含程序和仿真,仿真已驗證OK。

分享給各位學(xué)習(xí)參考。


單片機源程序如下:
  1. #include "reg51.h"

  2. #define uchar unsigned char                   //重命名關(guān)鍵字
  3. #define uint unsigned int                   //重命名關(guān)鍵字

  4. sbit K1=P3^0;                //開始/暫停
  5. sbit K2=P3^1;                //復(fù)位

  6. sbit GPIO_A=P1^0;        //數(shù)據(jù)端a
  7. sbit GPIO_B=P0^1;        //數(shù)據(jù)端b
  8. sbit GPIO_C=P1^1;        //數(shù)據(jù)端c
  9. sbit GPIO_D=P1^2;        //數(shù)據(jù)端d
  10. sbit GPIO_E=P0^2;        //數(shù)據(jù)端e
  11. sbit GPIO_F=P1^3;        //數(shù)據(jù)端f
  12. sbit GPIO_G=P0^3;        //數(shù)據(jù)端g
  13. sbit GPIO_H=P1^4;        //數(shù)據(jù)端dp
  14. sbit L1=P2^0;                //數(shù)碼管1位選
  15. sbit L2=P2^1;                //數(shù)碼管2位選
  16. sbit L3=P2^2;                //數(shù)碼管3位選

  17. unsigned char code DIG_CODE[10] = {0,1,2,3,4,5,6,7,8,9};
  18. //0、1、2、3、4、5、6、7、8、9的顯示碼

  19. unsigned char DisplayData[3];
  20. //用來存放要顯示的3位數(shù)的值

  21. uchar i,Key_Flag_Idx;           //定義變量
  22. uint Second_Counts;                   //定義變量
  23. bit Key_State;                           //定義變量

  24. void DelayMS(uint ms)           //延時子函數(shù)
  25. {
  26.         uchar t;                           //定義變量
  27.         while(ms--)
  28.         for(t=0;t<120;t++);
  29. }

  30. void DuanXuan(unsigned char dat)           //發(fā)送段碼0~9
  31. {
  32.         if(dat==0)
  33.         {GPIO_H=0;GPIO_G=0;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'0'
  34.         if(dat==1)
  35.         {GPIO_H=0;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;}        //'1'
  36.         if(dat==2)
  37.         {GPIO_H=0;GPIO_G=1;GPIO_F=0;GPIO_E=1;GPIO_D=1;GPIO_C=0;GPIO_B=1;GPIO_A=1;}        //'2'
  38.         if(dat==3)
  39.         {GPIO_H=0;GPIO_G=1;GPIO_F=0;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'3'
  40.         if(dat==4)
  41.         {GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;}        //'4'
  42.         if(dat==5)
  43.         {GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;}        //'5'
  44.         if(dat==6)
  45.         {GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;}        //'6'
  46.         if(dat==7)
  47.         {GPIO_H=0;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'7'
  48.         if(dat==8)
  49.         {GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'8'
  50.         if(dat==9)
  51.         {GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'9'
  52.         if(dat==10)
  53.         {GPIO_H=0;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=0;GPIO_B=0;GPIO_A=0;}        //全滅
  54. }

  55. void DuanXuan2(unsigned char dat)           //發(fā)送段碼0.~9.
  56. {
  57.         if(dat==0)
  58.         {GPIO_H=1;GPIO_G=0;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'0.'
  59.         if(dat==1)
  60.         {GPIO_H=1;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;}        //'1.'
  61.         if(dat==2)
  62.         {GPIO_H=1;GPIO_G=1;GPIO_F=0;GPIO_E=1;GPIO_D=1;GPIO_C=0;GPIO_B=1;GPIO_A=1;}        //'2.'
  63.         if(dat==3)
  64.         {GPIO_H=1;GPIO_G=1;GPIO_F=0;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'3.'
  65.         if(dat==4)
  66.         {GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;}        //'4.'
  67.         if(dat==5)
  68.         {GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;}        //'5.'
  69.         if(dat==6)
  70.         {GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;}        //'6.'
  71.         if(dat==7)
  72.         {GPIO_H=1;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'7.'
  73.         if(dat==8)
  74.         {GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'8.'
  75.         if(dat==9)
  76.         {GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;}        //'9.'
  77. }

  78. void DigDisplay()                   //數(shù)碼管顯示子函數(shù)
  79. {
  80.         unsigned int j;                   //定義變量

  81.         L1=0;                          //位選
  82.         DuanXuan(DisplayData[0]);//發(fā)送段碼
  83.         j = 100;                                                   //掃描間隔時間設(shè)定
  84.         while(j--);       
  85.         L1=1;                           //消隱

  86.         L2=0;                          //位選
  87.         DuanXuan2(DisplayData[1]);//發(fā)送段碼
  88.         j = 100;                                                   //掃描間隔時間設(shè)定
  89.         while(j--);       
  90.         L2=1;

  91.         L3=0;                           //位選
  92.         DuanXuan(DisplayData[2]); //發(fā)送段碼
  93.         j = 100;                                                   //掃描間隔時間設(shè)定
  94.         while(j--);       
  95.         L3=1;          
  96. }

  97. void Key_Event_Handle()                 //處理按鍵事件
  98. {
  99.         if(Key_State==0)
  100.         {
  101.                 Key_Flag_Idx=(Key_Flag_Idx+1)%2;           //讓變量Key_Flag_Idx保持在小于2的值
  102.                 switch(Key_Flag_Idx)
  103.                 {
  104.                         case 1:                               
  105.                         ET0=1;
  106.                         TR0=1;                //開啟定時器
  107.                         break;
  108.                         case 0:       
  109.                         ET0=0;
  110.                         TR0=0;                //關(guān)閉定時器
  111.                         break;
  112.                 }
  113.         }
  114. }

  115. void main()
  116. {
  117.         DuanXuan(10);
  118.    
  119.         TMOD=0x01;                                //定時器0方式1
  120.         TH0=(65536-50000)/256;                //定時器0:50ms
  121.         TL0=(65536-50000)%256;
  122.         EA=1;              
  123.     while (1)
  124.     {
  125.                 if(Key_State!=K1)                  //開始按鍵按下時
  126.                 {
  127.                         DelayMS(10);                  //按鍵去抖
  128.                         Key_State=K1;
  129.                         Key_Event_Handle();          //執(zhí)行按鍵處理函數(shù)
  130.                 }
  131.                 if(K2==0)                                                 //復(fù)位按鍵按下時
  132.                 {
  133.                         ET0=0;
  134.                         TR0=0;                //關(guān)閉定時器
  135.                         i=0;                                                          //清零計數(shù)
  136.                         Second_Counts=0;                                  //清零秒
  137.                         Key_Flag_Idx=0;
  138.                 }
  139.                 DisplayData[0] = DIG_CODE[Second_Counts/100%10];          //顯示百位
  140.                 DisplayData[1] = DIG_CODE[Second_Counts/10%10];          //顯示十位
  141.                 DisplayData[2] = DIG_CODE[Second_Counts%10];          //顯示個位
  142.                 DigDisplay();                 //執(zhí)行數(shù)碼管顯示函數(shù)
  143.     }
  144. }


  145. //T0中斷函數(shù)
  146. ……………………

  147. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
不同P口數(shù)碼管顯示.zip (87.99 KB, 下載次數(shù): 38)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:87734 發(fā)表于 2018-1-23 21:34 | 只看該作者
不錯哦,謝謝
回復(fù)

使用道具 舉報

板凳
ID:346484 發(fā)表于 2019-6-12 21:41 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

地板
ID:475957 發(fā)表于 2019-10-16 16:31 | 只看該作者
學(xué)習(xí)中,非常感謝
回復(fù)

使用道具 舉報

5#
ID:605586 發(fā)表于 2020-3-9 17:10 | 只看該作者
特別感謝,糾結(jié)這個不同口的段接法很久了!!!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲一区二区三区在线 | 欧美日产国产成人免费图片 | 一级看片免费视频 | 欧美日韩精品影院 | 少妇午夜一级艳片欧美精品 | 一级毛片播放 | 中文字幕精品一区 | 中文字幕不卡视频在线观看 | 精品国产区 | 一本一道久久a久久精品综合蜜臀 | 亚洲人一区 | 中文在线视频 | 日本一区二区三区精品视频 | 欧美日韩国产精品一区 | 成年人免费看 | 欧美自拍第一页 | av黄色片在线观看 | 亚洲精品一区二区在线 | 日本视频一区二区三区 | 欧美一级片 | 日本一区二区不卡 | 日韩毛片在线观看 | 欧美日韩18 | 成人av网站在线观看 | 在线观看免费高清av | 911精品美国片911久久久 | 91精品国产一区二区 | 91精品久久久久久久久中文字幕 | 国产精品视频一二三区 | 99日韩| 一区二区三区视频免费观看 | 亚洲精品乱码久久久久久黑人 | 免费一区| 99久久久久 | 亚洲欧美在线一区 | 国产精品中文字幕在线观看 | 黄色片网站国产 | 亚洲国产中文字幕 | 欧美专区日韩 | av色站 | 国产欧美一区二区在线观看 |