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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4137|回復(fù): 0
收起左側(cè)

8位數(shù)碼管1302顯示時(shí)間的單片機(jī)仿真與代碼

[復(fù)制鏈接]
ID:232524 發(fā)表于 2017-11-6 19:36 | 顯示全部樓層 |閱讀模式
1、注意時(shí)序圖時(shí)要連續(xù),不能中間突然加一個(gè)高電平或者低電平,上一個(gè)為高,下一時(shí)序則為低,不能變化,直到程序完成
2、注意秒分時(shí)等寄存器的數(shù)據(jù)范圍,要使CE=1不能直接改變time[0],這樣會(huì)超出范圍
3、定義全局變量在.h文件里定義extern,但不可在前加code

8位數(shù)碼管1302顯示時(shí)間仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
0.png

單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<DS1302.h>
  3. #define u8 unsigned char

  4. sbit KEY1=P3^0;         //定義功能按鍵
  5. sbit KEY2=P3^1;         //定義加按鍵
  6. sbit KEY3=P3^2;         //定義減按鍵

  7. u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段顯示0~9
  8. u8 code smgwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行顯示                                 

  9. //********延時(shí)函數(shù)***********//
  10. void delay(unsigned int i)
  11. {
  12.    while(i--);
  13. }

  14. //******顯示函數(shù)*********//
  15. void display_all()
  16. {
  17.    int k;
  18.    for(k=0;k<8;k++)
  19.    {         
  20.       switch(k)
  21.           {
  22.               case 0: P1=smgduan[time[2]/16];break;
  23.                   case 1: P1=smgduan[time[2]%16];break;
  24.                   case 2: P1=0x40;break;
  25.                   case 3: P1=smgduan[time[1]/16];break;
  26.                   case 4: P1=smgduan[time[1]%16];break;
  27.                   case 5: P1=0x40;break;
  28.                   case 6: P1=smgduan[time[0]/16];break;
  29.                   case 7: P1=smgduan[time[0]%16];break;
  30.           }
  31.           P2=smgwei[k];
  32.           delay(100);
  33.           P1=0x00;
  34.    }
  35. }

  36. //*********顯示分*********//
  37. void display_fen()
  38. {
  39.   int k;
  40.   for(k=2;k<5;k++)
  41.   {
  42.      switch(k)
  43.          {
  44.             case 2: P1=0x40;break;
  45.                 case 3: P1=smgduan[time[1]/16];break;
  46.                 case 4: P1=smgduan[time[1]%16];break;
  47.          }
  48.          P2=smgwei[k];
  49.          delay(100);
  50.          P1=0x00;
  51.   }
  52. }

  53. //***********顯示秒**********//
  54. void display_miao()
  55. {
  56.   int k;
  57.   for(k=5;k<8;k++)
  58.   {
  59.      switch(k)
  60.          {
  61.             case 5: P1=0x40;break;
  62.                 case 6: P1=smgduan[time[0]/16];break;
  63.                 case 7: P1=smgduan[time[0]%16];break;
  64.          }
  65.          P2=smgwei[k];
  66.          delay(100);
  67.          P1=0x00;
  68.   }
  69. }

  70. //**********顯示時(shí)***********//
  71. void display_shi()
  72. {
  73.   int k;
  74.   for(k=0;k<3;k++)
  75.   {
  76.      switch(k)
  77.          {
  78.             case 0: P1=smgduan[time[2]/16];break;
  79.                 case 1: P1=smgduan[time[2]%16];break;
  80.                 case 2: P1=0x40;break;
  81.          }
  82.          P2=smgwei[k];
  83.          delay(100);
  84.          P1=0x00;
  85.   }
  86. }

  87. //*********按鍵判斷處理函數(shù)****************//
  88. void anjian()
  89. {
  90.    int b=1;           //設(shè)置變量b,判斷當(dāng)為0時(shí)按下減按鍵變?yōu)樽畲笾?br />
  91.    delay(100);
  92.    if(!KEY1)
  93.    {
  94.      while(!KEY1);        //判斷按鍵是否松開
  95.          DS1302_Writer(0x8e,0x00);
  96.      DS1302_Writer(0x80,time[0]|0x80);//暫停DS1302計(jì)時(shí)
  97.          while(KEY1)                                          //秒加減
  98.          {
  99.            if(!KEY2){time[0]++;if((time[0]&0x0f)>0x09) time[0]=time[0]+6;while(!KEY2);}         //因?yàn)槭荁CD碼,所以要加6
  100.            if(!KEY3){if(time[0]==0)b--;time[0]--;if((time[0]&0x0f)>0x09) time[0]=time[0]-6;while(!KEY3);}         //因?yàn)槭荁CD碼,所以要減6  
  101.            if(time[0]>0x59)  time[0]=0;           //不能超過最大值和最小值
  102.            if(!b)        {time[0]=0x59;b=1;}  
  103.            display_miao();                                  //顯示秒
  104.          }
  105.          while(!KEY1);
  106.          while(KEY1)
  107.          {
  108.            if(!KEY2){time[1]++;if((time[1]&0x0f)>0x09) time[1]=time[1]+6;while(!KEY2);}
  109.            if(!KEY3){if(time[1]==0)b--;time[1]--;if((time[1]&0x0f)>0x09) time[1]=time[1]-6;while(!KEY3);}
  110.            if(time[1]>0x59)  time[1]=0;
  111.            if(!b)        {time[1]=0x59;b=1;}                     
  112.            display_fen();
  113.          }
  114.          while(!KEY1);
  115.          while(KEY1)
  116.          {
  117.            if(!KEY2){time[2]++;if((time[2]&0x0f)>0x09) time[2]=time[2]+6;while(!KEY2);}
  118.            if(!KEY3){if(time[2]==0)b--;time[2]--;if((time[2]&0x0f)>0x09) time[2]=time[2]-6;while(!KEY3);}          
  119.            if(time[2]>0x24)  time[2]=0;
  120.            if(!b)        {time[2]=0x24;b=1;}
  121.            display_shi();
  122.          }
  123.          while(!KEY1)
  124.          {
  125.             DS1302_STOP();        //DS1302獲取改變后的值
  126.          }
  127.          while(KEY1)
  128.          {
  129.            display_all();  //顯示改變后的值,等待按鍵KEY1按下確認(rèn)時(shí)間
  130.          }
  131. ……………………

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

所有資料51hei提供下載:
DS1302時(shí)間顯示.zip (74.3 KB, 下載次數(shù): 17)


評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品视频在线观看 | 成人国产精品免费观看视频 | 成人av播放 | 天天在线操 | 欧美精品一区三区 | 91中文 | 黄网站在线观看 | 国产精品久久久久久久久免费 | 国产成人免费观看 | 亚洲欧洲精品在线 | 超碰在线国产 | 久草www | 99精品一级欧美片免费播放 | 国产女人与拘做视频免费 | 99国产视频 | 国产成人综合在线 | 欧美一区二区三区久久精品 | 国产在线一区观看 | 色婷婷综合网站 | 久久久区 | 国产成人精品一区二区三区四区 | 在线免费黄色小视频 | 日韩有码在线播放 | 69av在线视频 | 91资源在线| 99精品99 | 久久亚洲一区二区 | 天天狠狠 | 欧美日韩国产在线观看 | 精国产品一区二区三区 | 91精品国产手机 | 精品国产一区二区三区免费 | 亚欧洲精品在线视频免费观看 | 久草新在线| 中国免费黄色片 | 亚洲va国产日韩欧美精品色婷婷 | 精品一区视频 | 日日操视频| 91精品中文字幕一区二区三区 | 久久久久久av| 99亚洲精品|