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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9638|回復: 6
收起左側

單片機電子秒表時鐘 數碼管顯示 可設置時間 可用于秒表暫停、清零 Proteus仿真程序

  [復制鏈接]
ID:474538 發表于 2020-5-22 16:29 | 顯示全部樓層 |閱讀模式
電子秒表時鐘 數碼管顯示 可設置時間 可用于秒表暫停、清零蜂鳴器按鍵音
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
VT4KN81_DOV~XFCRO[@R}[9.png 5OPR}WRO`U@A0LLIB0H{I]J.png

單片機源程序如下:
  1. #include<reg51.h>
  2. #include"delay.h"
  3. #include"intrins.h"
  4. unsigned char code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //定義共陰極LED7段顯示碼

  5. unsigned char dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   //定義數碼管位碼
  6. unsigned char hour=23,min=58,sec=52,week=1;                 //定義初始時間為23時58分52秒
  7. unsigned char tcount;                           //定義50ms計數變量
  8. unsigned char flag=0;
  9. sbit KEY1=P1^0;
  10. sbit KEY2=P1^1;
  11. sbit KEY3=P1^2;

  12. sbit key1=P1^3;
  13. sbit key2=P3^6;
  14. sbit key3=P3^7;

  15. sbit LED1=P1^7;
  16. sbit LED2=P1^6;
  17. sbit LED3=P1^5;
  18. sbit LED4=P1^4;

  19. sbit BEEP=P3^0;
  20. void display(unsigned char,unsigned char,unsigned char,unsigned char);

  21. void delay(unsigned int time)//定義延時函數
  22.         {
  23.                 unsigned int j = 0;
  24.                 for(;time>0;time--)
  25.                         for(j=0;j<125;j++);
  26.         }

  27. void Delay100us()                //@11.0592MHz
  28. {
  29.         unsigned char i, j;

  30.         _nop_();
  31.         _nop_();
  32.         i = 2;
  33.         j = 100;
  34.         do
  35.         {
  36.                 while (--j);
  37.         } while (--i);
  38. }

  39. void main(void)
  40. {
  41.          TMOD=0x01;                  //定時/計數器0設為方式1
  42.          TH0=(65536-50000)/256;      //定時50ms初值的高八位送入TH0
  43.          TL0=(65536-50000)%256;      //定時50ms初值的低八位送入TL0
  44.          EA=1;                       //開CPU中斷
  45.          ET0=1;                      //開定時/計數器0的中斷
  46.          TR0=1;                      //啟動定時器0
  47.         while(1)
  48.         {
  49.                 if(key1==0)
  50.                 {         BEEP=0;Delay100us();BEEP=1;
  51.                          hour=0;min=0;sec=0;
  52.                 }
  53.                 if(key2==0)
  54.                 {        BEEP=0;Delay100us();BEEP=1;
  55.                         TR0=0;
  56.                 }
  57.                 if(key3==0)
  58.                 {        BEEP=0;Delay100us();BEEP=1;
  59.                         TR0=1;
  60.                 }
  61.                
  62.                 if(KEY1==0)
  63.             {        delay(180);
  64.                     if(KEY1==0)
  65.                         {
  66.                         TR0=0;
  67.                         flag++;
  68.                         if(flag>4)
  69.                         {
  70.                                 flag=0;
  71.                                 TR0=1;
  72.                                 LED1=1;LED2=1;LED3=1;LED4=1;
  73.                         }
  74.                         }

  75.                 }
  76.                 switch(flag)
  77.                 {
  78.                         case 1:        LED1=0;LED2=1;LED3=1;LED4=1;
  79.                                if(KEY2==0)
  80.                                {
  81.                                      delay(180);
  82.                                          if(KEY2==0)
  83.                                          {
  84.                                             hour++;
  85.                                          if(hour>23)
  86.                                          hour=0;
  87.                                          }
  88.                                    }
  89.                                    if(KEY3==0)
  90.                                    {
  91.                                      delay(150);
  92.                                          if(KEY3==0)
  93.                                          {
  94.                                             hour--;
  95.                                          if(hour<0)
  96.                                          hour=23;
  97.                                          }
  98.                                    }
  99.                                    display(hour,min,sec,week);
  100.                                    break;

  101.                         case 2:        LED1=1;LED2=0;LED3=1;LED4=1;
  102.                                if(KEY2==0)
  103.                                {
  104.                                      delay(180);
  105.                                          if(KEY2==0)
  106.                                          {
  107.                                             min++;
  108.                                          if(min>59)
  109.                                          min=0;
  110.                                          }
  111.                                    }
  112.                                    if(KEY3==0)
  113.                                    {
  114.                                      delay(180);
  115.                                          if(KEY3==0)
  116.                                          {
  117.                                             min--;
  118.                                          if(min<0)
  119.                                          min=59;
  120.                                          }
  121.                                    }
  122.                                    display(hour,min,sec,week);
  123.                                    break;

  124.                         case 3:        LED1=1;LED2=1;LED3=0;LED4=1;
  125.                                if(KEY2==0)
  126.                                {
  127.                                      delay(180);
  128.                                          if(KEY2==0)
  129.                                          {
  130.                                             sec++;
  131.                                          if(sec>59)
  132.                                          sec=0;
  133.                                          }
  134.                                    }
  135.                                    if(KEY3==0)
  136.                                    {
  137.                                      delay(180);
  138.                                          if(KEY3==0)
  139.                                          {
  140.                                             sec--;
  141.                                          if(sec<0)
  142.                                          sec=59;
  143.                                          }
  144.                                    }
  145.                                    display(hour,min,sec,week);
  146.                                    break;

  147.                         case 4:LED1=1;LED2=1;LED3=1;LED4=0;
  148.                               if(KEY2==0)
  149.                                {
  150.                                      delay(180);
  151.                                          if(KEY2==0)
  152.                                          {
  153.                                             week++;
  154.                                          if(week>7)
  155.                                          week=1;
  156.                                          }
  157.                                    }
  158.                                    if(KEY3==0)
  159.                                    {
  160.                                      delay(180);
  161.                                          if(KEY3==0)
  162.                                          {
  163.                                             week--;
  164.                                          if(week<1)
  165.                                          week=7;
  166.                                          }
  167.                                    }
  168.                                    display(hour,min,sec,week);
  169.                                    break;

  170.                         case 5:LED1=1;LED2=1;LED3=1;LED4=1;flag=0;TR0=1;

  171.                         default:break;
  172.                
  173.                
  174.                 }
  175.              display(hour,min,sec,week);
  176.         }
  177. }


  178. void display(unsigned char hour,unsigned char min,unsigned char sec,unsigned char week)
  179. {
  180.         
  181.         P0=LED[hour/10];            //小時的十位送數碼管1位顯示
  182.         P2=0xfe;
  183.         delay(1);
  184.         P2=0xff;
  185.         
  186.         P0=LED[hour%10];            //小時的個位送數碼管2位顯示
  187.         P2=0xfd;
  188.         delay(1);
  189.         P2=0xff;
  190.         
  191.         P0=LED[min/10];                //橫杠送數碼管3位顯示
  192.         P2=0xfb;
  193.         delay(1);
  194.         P2=0xff;
  195.         
  196.         P0=LED[min%10];             //分的十位送數碼管4位顯示
  197.         P2=0xf7;
  198.         delay(1);
  199.         P2=0xff;
  200.         
  201.         P0=LED[sec/10];             //分的個位送數碼管5位顯示
  202.         P2=0xef;
  203.         delay(1);
  204.         P2=0xff;
  205.         
  206.         P0=LED[sec%10];                 //橫杠送數碼管6位顯示
  207.         P2=0xdf;
  208.         delay(1);
  209.         P2=0xff;
  210.         
  211.         P0=LED[10];             //秒的十位送數碼管7位顯示
  212.         P2=0xbf;
  213.         delay(1);
  214.         P2=0xff;
  215.         
  216.         P0=LED[week];             //秒的個位送數碼管8位顯示
  217.         P2=0x7f;
  218.         delay(1);
  219.         P2=0xff;
  220. }



  221. void T0_time() interrupt 1    //定時器中斷處理函數
  222. {
  223.         TH0=(65536-50000)/256;      //重新將定時50ms初值的高八位送TH0
  224.         TL0=(65536-50000)%256;      //重新將定時50ms初值的低八位送TH0
  225.         tcount++;                   //定時50ms時間到加1
  226.         if(tcount==20)              //判斷是否到1s
  227.         {
  228.         tcount=0;                   //到1s,變量清0
  229.         sec++;                      //秒計數變量加1
  230.         if(sec==60)                 //判斷秒是否到60
  231.         {
  232.         sec=0;                      //到60,秒變量清0
  233. ……………………

  234. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
BH0D5I49(EXUO_XU6)J(RWB.png
所有資料51hei提供下載:
電子時鐘設計.zip (126.91 KB, 下載次數: 298)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:543424 發表于 2020-10-18 23:01 來自手機 | 顯示全部樓層
你好為什么仿真器可以,做PcB不能運行不知道什么原因?
回復

使用道具 舉報

ID:543424 發表于 2020-10-19 18:43 來自手機 | 顯示全部樓層
能給個原理圖嗎?謝謝
回復

使用道具 舉報

ID:859847 發表于 2020-12-14 02:25 | 顯示全部樓層
請問一下,去掉一個星期的數碼管的是怎么做的呀
回復

使用道具 舉報

ID:867309 發表于 2020-12-26 18:41 來自手機 | 顯示全部樓層
#include"delay.h" #include"intrins.h"這倆頭文件那去了
回復

使用道具 舉報

ID:328014 發表于 2020-12-27 02:13 | 顯示全部樓層
1463409593 發表于 2020-12-26 18:41
#include"delay.h" #include"intrins.h"這倆頭文件那去了

delay.h延時程序樓主已經提供了,intrins.h是Keil自帶的
回復

使用道具 舉報

ID:841319 發表于 2020-12-30 16:05 | 顯示全部樓層
會吃不飽手機內存
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一本色道精品久久一区二区三区 | 久久国产香蕉 | 中文字幕在线欧美 | 福利影院在线看 | 97人人澡人人爽91综合色 | 最新黄色在线观看 | 亚洲精品小视频在线观看 | av一区二区三区四区 | 亚洲精品久久久久久国产精华液 | 婷婷开心激情综合五月天 | 亚洲一二三区av | 成人久久视频 | 日日夜夜天天 | 国产免费色 | 日韩欧美成人一区二区三区 | 欧美性极品xxxx做受 | 欧美一区二区三区视频在线观看 | 18性欧美 | 久久久久久免费看 | 欧美精品久久久久久久久久 | 九九热精品在线 | 亚洲国产成人精品久久 | 中文在线视频观看 | 伊人色综合久久久天天蜜桃 | 黄色三级免费 | 搞黄视频免费看 | 91精品国产一区二区在线观看 | 国产精品国产精品 | 日韩午夜影院 | 欧美国产精品久久久 | 国产成人网 | 亚洲不卡在线观看 | 国产一级电影在线观看 | 精品亚洲一区二区三区 | 亚洲三区在线观看 | 成人福利网 | 久久久久久久久国产 | 亚洲毛片在线观看 | 国产精品免费视频一区 | 免费在线观看av网站 | 精品亚洲永久免费精品 |