找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1729|回復: 0
打印 上一主題 下一主題
收起左側(cè)

0.1~9.9累加 數(shù)碼管單片機代碼

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:328560 發(fā)表于 2018-5-12 22:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
代碼見附件部分

單片機源程序如下:

  1. /***************************************************************************************************   
  2. 工程名稱:        smg_0.1~9.9
  3. 功能描述:        控制數(shù)碼管低2位顯示從0.1到9.9累加,步進為0.1
  4. 硬件連接:  用8位杜邦線將J8與J12連接,2位杜邦線分別將J11_0與J15_DS1、J11_1與J15_DS2連接。
  5. 維護記錄:  2011-8-22
  6. ***************************************************************************************************/
  7. #include "reg51.h"       //包含頭文件

  8. sbit LE1=P2^0;           //位選573鎖存器使能
  9. sbit LE2=P2^1;           //段選573鎖存器使能


  10. #define uchar unsigned char
  11. #define uint  unsigned int

  12. uchar wei;
  13. float num;

  14. uchar code dis[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
  15.                    //  0    1    2    3    4    5    6    7   
  16.                      0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//0~F的段碼
  17.                    //  8    9    A    B    C    D    E    F  


  18. //**************************************************************************************************
  19. //延時函數(shù)
  20. //**************************************************************************************************
  21. delay(uint time)              //int型數(shù)據(jù)為16位,所以最大值為65535            
  22. {
  23.   uint  i,j;                  //定義變量i,j,用于循環(huán)語句
  24.   for(i=0;i<time;i++)         //for循環(huán),循環(huán)50*time次
  25.      for(j=0;j<50;j++);       //for循環(huán),循環(huán)50次
  26. }
  27. //**************************************************************************************************
  28. //動態(tài)掃描函數(shù)
  29. //**************************************************************************************************
  30. scan()
  31. {
  32.   uchar i;
  33.   for(i=0;i<10;i++)
  34.    {
  35.      //顯示個位
  36.      P1=0xbf;                 //0xbf=1011 1111,即選通個位
  37.      LE1=1;                   //鎖存位
  38.      LE1=0;                   //斷開鎖存,位選573的Q7~Q0仍保持
  39.      wei=num*10;
  40.      P1=dis[wei/10] | 0x80;   //dis[wei/10]為0~9的編碼,0x80為小數(shù)點
  41.      LE2=1;                   //鎖存段碼
  42.      LE2=0;                   //斷開鎖存,段選573的Q7~Q0仍保持
  43.      delay(100);              //延時保持一下,延時過大會閃動,延時過小會有重影   

  44.      P1=0x00;LE2=1;LE2=0;     //清除P1口數(shù)據(jù),以免造重影
  45.      //顯示十分位
  46.      P1=0x7f;                 //0xbf=0111 1111,即選通十分位
  47.      LE1=1;                   //鎖存位
  48.      LE1=0;                   //斷開鎖存,位選573的Q7~Q0仍保持
  49.      wei=num*10;
  50.      P1=dis[wei%10];          //0~9的編碼
  51.      LE2=1;                   //鎖存段碼
  52.      LE2=0;                   //斷開鎖存,段選573的Q7~Q0仍保持
  53.      delay(100);              //延時保持一下,延時過大會閃動,延時過小會有重影  

  54.      P1=0x00;LE2=1;LE2=0;     //清除P1口數(shù)據(jù),以免造重影   
  55.    }

  56.     if(num==9.9)num=0;        //掃描到顯示9.9時,重新開始掃描
  57.     num+=0.1;                 //num加0.1
  58. }
  59. //**************************************************************************************************
  60. //主函數(shù)
  61. //**************************************************************************************************
  62. void main()                   //主函數(shù)
  63. {
  64.      num=0;                   //初始化段碼為0
  65.      while(1)                 //進入while死循環(huán)
  66.       {
  67.         scan();               //數(shù)碼管掃描函數(shù)
  68.       }         
  69. }
復制代碼

所有資料51hei提供下載:
EX2.6 0.1~9.9累加.zip (18.78 KB, 下載次數(shù): 5)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表