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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7427|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久毛片 | 中文字幕第7页 | 日本黄色大片免费 | 无吗视频 | 亚洲女人的天堂 | 国产精品一区二区久久精品爱微奶 | 一级一级毛片免费看 | 精品国产高清一区二区三区 | 特黄视频| 亚洲精品电影在线观看 | h在线观看 | 美女福利视频一区 | 一区二区欧美在线 | 日韩精品一区二区三区视频播放 | 91国自产| 不卡一区二区三区四区 | 中国91av | 国产99久久久国产精品 | 天天操天天干天天透 | 国产中文字幕在线观看 | 国产一区二区小视频 | 成人一区av偷拍 | 九九久久精品视频 | 二区欧美 | 欧美不卡在线 | 成人毛片视频免费 | 一区二区三区影院 | 久草视频在线播放 | 国产95在线 | 欧美一区二区在线视频 | 国产 日韩 欧美 在线 | 亚洲社区在线 | 国产精品一区二区无线 | 国内精品视频一区二区三区 | 国内久久| 久久久久国产一区二区三区 | 欧美二区三区 | av乱码| 国产欧美一区二区三区在线看 | 国产精品欧美一区二区 | 久久人体视频 |