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

標題: 制作一個單片機電子時鐘程序,每一位均可調節,可加減,調節時時鐘會停止計時 [打印本頁]

作者: 1351954488    時間: 2020-6-17 13:26
標題: 制作一個單片機電子時鐘程序,每一位均可調節,可加減,調節時時鐘會停止計時
制作一個電子時鐘,每一位均可調節,可加減,調節時時鐘會停止計時
6個按鈕  程序有注釋

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  2. #define DataPort P0 //定義數據端口 程序中遇到DataPort 則用P0 替換
  3. unsigned char k=0,h=0,m=0,s=0;
  4. sbit key1=P1^0;
  5. sbit key2=P1^1;
  6. sbit key3=P1^2;
  7. sbit key4=P1^3;
  8. sbit key5=P1^4;
  9. sbit key6=P1^5;
  10. unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  11. unsigned char code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  12. unsigned char TempData[8];
  13. sbit LATCH1=P2^2;//定義鎖存使能端口 段鎖存
  14. sbit LATCH2=P2^3;//                 位鎖存
  15. /*----------延時時間T=(2*t+5)us-------------------*/
  16. void DelayUs2x(unsigned char t)
  17.   {
  18.    while(--t);
  19.   }
  20. /*----------延時時間T=tms-------------------*/
  21. void DelayMs(unsigned char t)
  22.   {
  23.   while(t--)
  24.    {
  25.     DelayUs2x(245);
  26.     DelayUs2x(245);
  27.    }
  28.   }
  29. /*----------顯示子函數-------------------*/
  30. void Display(unsigned char FirstBit,unsigned char Num)
  31. {
  32.   unsigned char i;
  33.   for(i=0;i<Num;i++)
  34.   {
  35.    DataPort=0; //清空數據,防止有交替重影
  36.    LATCH1=1; //段鎖存
  37.    LATCH1=0;
  38.    DataPort= weima[i+FirstBit]; //取位碼
  39.    LATCH2=1; //位鎖存
  40.    LATCH2=0;
  41.    DataPort=TempData[i]; //取顯示數據,段碼
  42.    LATCH1=1; //段鎖存
  43.    LATCH1=0;
  44.    DelayMs(2); // 掃描間隙延時,時間太長會閃爍,太短會造成重影
  45.   }
  46. }
  47. /*-------------------------------------------------
  48.    定時器初始化子函數
  49. -------------------------------------------------*/
  50. void Init_Timer0(void)
  51. {
  52. TMOD|=0x01;
  53. TH0=(65536-20000)/256;
  54. TL0=(65536-20000)%256;
  55. EA=1;
  56. ET0=1;
  57. TR0=1;
  58. }


  59. /*------------------------------------------------
  60.                     主函數
  61. ------------------------------------------------*/
  62. main()
  63. {
  64. Init_Timer0();
  65. while(1)
  66. {
  67.   if(!key1)                                       
  68.     {
  69.    DelayMs(10);
  70.    if(!key1)
  71.       {
  72.      while(!key1)Display(0,8);
  73.      TR0=~TR0;
  74.          s++;
  75.      }
  76.    }
  77.   if(!key2)
  78.     {
  79.    DelayMs(10);
  80.    if(!key2)
  81.       {
  82.      while(!key2)Display(0,8);
  83.       TR0=~TR0;
  84.            m++;
  85.      }
  86.    }
  87.      if(!key3)
  88.     {
  89.    DelayMs(10);
  90.    if(!key3)
  91.       {
  92.      while(!key3)Display(0,8);
  93.       TR0=~TR0;
  94.            h++;
  95.      }
  96.    }
  97.    if(!key4)
  98.     {
  99.    DelayMs(10);
  100.    if(!key4)
  101.       {
  102.      while(!key4)Display(0,8);
  103.       TR0=~TR0;
  104.            s--;
  105.                     if(s==255)
  106.            {
  107.            s=59;
  108.            }

  109.           }
  110.    }
  111.       if(!key5)
  112.     {
  113.    DelayMs(10);
  114.    if(!key5)
  115.       {
  116.      while(!key5)Display(0,8);
  117.       TR0=~TR0;
  118.            m--;
  119.                    if(m==255)
  120.            {
  121.            m=59;
  122.            }

  123.           }
  124.    }
  125.       if(!key6)
  126.     {
  127.    DelayMs(10);
  128.    if(!key6)
  129.       {
  130.      while(!key6)Display(0,8);
  131.       TR0=~TR0;
  132.            h--;
  133.            if(h==255)
  134.            {
  135.              h=23;
  136.            }
  137.           }
  138.    }
  139.   if(k>=50)
  140.        {k=0;s++;}
  141.   if(s==60)
  142.      {s=0;m++;}
  143.   if(m==60)
  144.      {m=0;h++;}
  145.   if(h==24)
  146.      h=0;
  147.   TempData[0]=duanma[h/10];
  148.   TempData[1]=duanma[h%10];
  149.   TempData[2]=0x40;
  150.   TempData[3]=duanma[m/10];
  151.   TempData[4]=duanma[m%10];
  152.   TempData[5]=0x40;
  153.   TempData[6]=duanma[s/10];
  154.   TempData[7]=duanma[s%10];
  155.   Display(0,8);
  156.   }
  157.   
  158. }

  159. /*------------------------------------------------
  160. 定時器中斷子程序
  161. ------------------------------------------------*/
  162. void Timer0_isr(void) interrupt 1
  163. {
  164. TH0=(65536-20000)/256;
  165. TL0=(65536-20000)%256;
  166. k++;
  167. }
復制代碼

所有資料51hei提供下載:
電子時鐘.zip (16.42 KB, 下載次數: 36)



作者: 小萌新求教    時間: 2020-6-21 10:10
有原理圖和pcb嗎?
作者: 又是一個艷陽天    時間: 2020-6-22 21:56
請問涉及AD數模轉換嗎




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 色综合欧美 | 国产精品久久久久久久免费观看 | 日本不卡免费新一二三区 | 日韩精品一区二区三区在线播放 | 日韩精品一区二区三区中文在线 | 国产精品久久国产精品久久 | 色黄爽| av毛片 | 亚洲国产成人精品女人 | 国产四虎| 国产精品99久久久精品免费观看 | 成人免费视频一区二区 | 成人精品一区二区三区中文字幕 | 日韩一区二区在线免费观看 | 国产精品久久久久久久 | 国产精品一区二区三区免费观看 | 成人在线电影在线观看 | 亚洲免费视频网站 | 国产免费a| 一区二区三区欧美 | 国产视频精品视频 | 亚洲福利精品 | 久久免费福利 | 久久久久久久久久久久久9999 | 日韩在线视频免费观看 | 欧美在线视频一区二区 | 久久神马 | 欧美精品久久 | 91久久久久| 国产最好的av国产大片 | 精品一区二区在线观看 | 国产高清在线精品一区二区三区 | 高清视频一区二区三区 | 91精品国产一区二区三区 | 91精品国产色综合久久不卡98 | 蜜桃av人人夜夜澡人人爽 | 美女高潮网站 | 成人av色 | 欧美成人一区二区三区片免费 | 国产精品日韩 | 99精品一区二区 |