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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7615|回復: 0
收起左側

STC89C52RC數碼管LED顯示動態2(0-99計數)源程序注釋很詳細

[復制鏈接]
ID:246182 發表于 2017-11-5 11:21 | 顯示全部樓層 |閱讀模式
STC 89C52RC 數碼管LED顯示動態2(0-99計數)

單片機源程序如下:
  1. /***************************************************************************
  2. 標題:        數碼管的顯示
  3. 效果:        顯示00-99,動態顯示+變化顯示
  4. 工作于:LY5A-L2A開發板
  5. 作者:        林洋電子吧
  6. 說明:        此例程將數碼管顯示內容用一個函數打包,要顯示直接調用即可。
  7. ******************************************************************************/
  8. //頭文件:
  9. #include "reg51.h"

  10. //變量定義:
  11. unsigned int table[]=
  12.                         {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  13.                                         //表:共陽數碼管 0-9
  14. //引腳定義:               
  15. sbit SMG_q = P1^0;        //定義數碼管陽級控制腳(千位)
  16. sbit SMG_b = P1^1;        //定義數碼管陽級控制腳(百位)
  17. sbit SMG_s = P1^2;        //定義數碼管陽級控制腳(十位)
  18. sbit SMG_g = P1^3;        //定義數碼管陽級控制腳(個位)

  19. //函數聲明:
  20. void display(unsigned int da);//定義顯示函數,參數為顯示內容,只顯示兩位數
  21. void delay1(void);
  22. //函數聲明:
  23. void delay2(unsigned char tmp);        //延時子函數
  24. //數據定義:
  25. code unsigned char tmpled[50]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,0X81,0X82,
  26.                                                                 0X84,0X88,0X90,0XA0,0XC0,0XC1,0XC2,0XC4,0XC8,0XD0,
  27.                                                                 0XE0,0XE1,0XE2,0XE4,0XE8,0XF0,0XF1,0XF2,0XF4,0XF8,
  28.                                                                 0XF9,0XFA,0XFC,0XFD,0XFE,0XFF,0XFF,0X00,0XFF,0X00};
  29.                                                                         //定義數組常量,前面加"code"表示常量在程序代碼中存放,
  30.                                                                         //不占用RAM。該數組為發光二極管的輸出數據

  31. //主函數,C語言的入口函數:                        
  32. void main(void)  
  33. {
  34.         unsigned int i=0;                //作為查表的索引號
  35.         unsigned int ldata;        //變量用作0~9999計數
  36.         unsigned int j;                        //此變量作為計數跳變刷新時間
  37.         unsigned char k;                                //定義變量
  38.         
  39.         //while(1)
  40.         //        {                                                          //無限循環

  41. //          }
  42.         
  43.         while(1)
  44.         {        
  45.                 j=800;                        
  46.                 while(j--)
  47.                         {               
  48.                         display(ldata);        //刷新5000次,約1秒,注:在C語言里是沒有周期可計算的哦~~~
  49.                   }                                                
  50.                 if(ldata<9999)
  51.                         ldata++;                //刷新完成約1秒,變量做加計數
  52.                 else
  53.                         ldata=0;
  54.                
  55.                 //for(k=0;i<50;k++)
  56.                 //        {                                      //循環輸出40個數據
  57.                 //        P2=~tmpled[k];                        //"~"這個符號是取反,因發光二極管采用共陽極,所以將數據取反再輸出
  58.                 //        delay2(100);                                //調用延時子函數,改變參數大小,調整變化速度
  59.                 //  }
  60.         }
  61. }

  62. //顯示函數,參數為顯示內容,顯示四位數
  63. void display(unsigned int da)
  64. {
  65.         SMG_q=0;                        //選擇千位數碼管
  66.         P0=table[da/1000];        //獲取千位值,查表輸出定義好的數碼管段值與P0口,顯示相應的0-9
  67.         delay1();                        //延時
  68.         P0=0XFF;                        //清除數碼管顯示,因是共陽型,所以不是0
  69.         SMG_q=1;                        //關閉千位數碼管
  70.         
  71.         SMG_b=0;                        //選擇百位數碼管
  72.         P0=table[(da%1000)/100];        //獲取百位值,查表輸出定義好的數碼管段值與P0口,顯示相應的0-9
  73.         delay1();                        //延時
  74.         P0=0XFF;                        //清除數碼管顯示,因是共陽型,所以不是0
  75.         SMG_b=1;                        //關閉百位數碼管
  76.         
  77.         SMG_s=0;                        //選擇十位數碼管
  78.         P0=table[((da%1000)%100)/10];        //獲取十位值,查表輸出定義好的數碼管段值與P0口,顯示相應的0-9
  79.         delay1();                        //延時
  80.         P0=0XFF;                        //清除數碼管顯示,因是共陽型,所以不是0
  81.         SMG_s=1;                        //關閉十位數碼管

  82.         SMG_g=0;                        //選擇個位數碼管
  83.         P0=table[((da%1000)%100)%10];        //獲取個位值,查表輸出定義好的數碼管段值與P0口,顯示相應的0-9
  84.         delay1();                        //延時
  85.         P0=0XFF;                        //清除數碼管顯示,因是共陽型,所以不是0
  86.         SMG_g=1;                        //關閉個位數碼管
  87.                
  88. }

  89. ……………………

  90. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
STC 89C52RC 數碼管LED顯示動態2(0-99計數).rar (17.51 KB, 下載次數: 37)


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品视频在线 | 久久精品国产亚洲 | 一级黄色小视频 | 久久免费国产视频 | 日韩视频在线观看 | 青青青草视频在线观看 | 伊人春色在线 | 亚洲综合日韩 | 91小视频在线观看 | 成人av一区二区三区在线观看 | 久久综合久色欧美综合狠狠 | 久久久激情 | www.jiujiu| 狠狠操天天操 | 精品在线一区 | 中文在线观看免费网站 | 狠狠干狠狠干 | 毛片tv | 欧美国产日韩在线 | 永久黄网站色视频免费观看w | 欧美日韩一区二区三区视频 | 青青草视频污 | 久久久蜜桃 | 亚洲激情一区二区 | 婷婷免费视频 | 成人性色生活片 | 美女无遮挡网站 | 国产一级片免费看 | 国产欧美日韩 | 四虎影院最新地址 | 欧美三级在线视频 | 亚洲色妞| 中文字幕在线一区 | 亚洲国产成人在线 | 超碰777 | 国产天堂网 | 97在线观看视频 | 色黄大色黄女片免费中国 | 国产日韩欧美一区 | 日韩少妇 | 精品视频久久 |