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

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

QQ登錄

只需一步,快速開始

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

藍(lán)橋杯單片機(jī)定時(shí)器進(jìn)階-數(shù)字鐘PROTEUS仿真程序

[復(fù)制鏈接]
ID:294858 發(fā)表于 2023-6-14 10:26 | 顯示全部樓層 |閱讀模式
■在藍(lán)橋杯單片機(jī)綜合訓(xùn)練平臺(tái)上,利用定時(shí)器T0、數(shù)碼管模塊和2個(gè)獨(dú)立按鍵(J5的2-3短接),設(shè)計(jì)一個(gè)秒表,具有清零、暫停、啟動(dòng)功能。
1.顯示格式為:分-秒.0.05秒(即50ms)08-26-18表示: 8分26秒900毫秒
2.獨(dú)立按鍵S4為:暫停/啟動(dòng)
獨(dú)立按鍵S5為:清零
按鍵均為按下有效。

已完成仿真與調(diào)試。

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

單片機(jī)源程序如下:
  1. #include "reg52.h"  

  2. sbit HC138_A = P2^5;        
  3. sbit HC138_B = P2^6;        
  4. sbit HC138_C = P2^7;        

  5.       
  6. sbit S5 = P3^2;        
  7. sbit S4 = P3^3;        


  8. //共陽4位數(shù)碼管的段碼數(shù)組
  9. unsigned char code SMG_NoDot[18] =
  10.     {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  11.      0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
  12.      0xbf,0x7f};

  13.                  

  14. char minute=0;
  15. char second=0;        
  16. char ms=0;                 
  17. void DisplaySMG_Dynamic();     
  18. void Delay(unsigned int time);         

  19. void DelaySMG(unsigned int time)
  20. {
  21.     while(time--);
  22. }

  23. void Delay(unsigned int time)
  24. {
  25.     while(time--);
  26. }

  27. void Init74HC138(unsigned char n)
  28. {
  29.     switch(n)
  30.     {
  31.         case 4:
  32.             HC138_A = 0;
  33.             HC138_B = 0;
  34.             HC138_C = 1;
  35.             break;
  36.         case 5:
  37.             HC138_A = 1;
  38.             HC138_B = 0;
  39.             HC138_C = 1;
  40.             break;
  41.         case 6:
  42.             HC138_A = 0;
  43.             HC138_B = 1;
  44.             HC138_C = 1;
  45.             break;
  46.         case 7:
  47.             HC138_A = 1;
  48.             HC138_B = 1;
  49.             HC138_C = 1;
  50.             break;
  51.         case 8:
  52.             HC138_A = 0;
  53.             HC138_B = 0;
  54.             HC138_C = 0;
  55.             break;
  56.     }
  57. }

  58. void DispaySMG_Bit(unsigned char value, unsigned char pos)
  59. {
  60.           Init74HC138(7);
  61.     P0 = 0xff;
  62.     Init74HC138(6);
  63.     P0 = (0x01 << pos);
  64.     Init74HC138(7);
  65.     P0 = value;
  66. }

  67. void DisplaySMG_Dynamic()
  68. {
  69.     DispaySMG_Bit(SMG_NoDot[minute/10],0);
  70.     DelaySMG(30);
  71.     DispaySMG_Bit(SMG_NoDot[minute%10],1);
  72.     DelaySMG(30);
  73.     DispaySMG_Bit(SMG_NoDot[16],2);
  74.     DelaySMG(30);
  75.     DispaySMG_Bit(SMG_NoDot[second/10],3);
  76.     DelaySMG(30);
  77.     DispaySMG_Bit(SMG_NoDot[second%10],4);
  78.     DelaySMG(30);
  79.     DispaySMG_Bit(SMG_NoDot[16],5);
  80.     DelaySMG(30);
  81.    
  82.     DispaySMG_Bit(SMG_NoDot[ms/10],6);
  83.     DelaySMG(30);
  84.     DispaySMG_Bit(SMG_NoDot[ms%10],7);
  85.     DelaySMG(30);
  86. }
  87. void InitTimer0()
  88. {
  89.         TMOD = 0X01;
  90.         TH0=(65535-50000)/256;
  91.         TL0=(65535-50000)%256;

  92.         ET0=1;
  93.         EA=1;
  94.         TR0=1;           
  95. }


  96. void ServiceTimer0() interrupt 1
  97. {
  98.     TH0=(65535-50000)/256;
  99.           TL0=(65535-50000)%256;
  100.           ms++;
  101.          if(ms ==20)
  102.          {
  103.                  second++;
  104.                  ms=0;
  105.              if(second==60)
  106.                  {
  107.                    minute++;
  108.                    second=0;
  109.                  }
  110.                  if(minute==60)
  111.                  {
  112.                    minute=0;
  113.                  }
  114.          
  115.          }
  116.          
  117. }

  118. void ScanKeys()
  119. {
  120.       
  121.         if(S5 == 0)
  122.         {
  123.                 Delay(100);
  124.                 if(S5 == 0)
  125.                 {
  126.                   minute=0;
  127.                                                 second=0;
  128.                                                 ms=0;
  129.                        while(S5 ==0)
  130.                                            {
  131.                                                      DisplaySMG_Dynamic();
  132.                                            }
  133.                 }
  134.         }
  135.         if(S4 == 0)
  136.         {
  137.                 Delay(100);
  138.                 if(S4 == 0)
  139.                 {
  140.                        TR0=~TR0;
  141.                                            while(S4 ==0)
  142.                                            {
  143.                                                      DisplaySMG_Dynamic();
  144.                                            }
  145.                         
  146.                 }
  147.         }
  148. }
  149.                           
  150. main()
  151. {
  152.           InitTimer0();
  153.     while(1)
  154.     {
  155.         DisplaySMG_Dynamic();
  156.        ScanKeys();
  157.     }
  158. }
復(fù)制代碼
51hei.png
Keil代碼與Proteus7.5版本的仿真dsn文件下載(其他版本打開會(huì)出錯(cuò)):
11 定時(shí)器進(jìn)階-數(shù)字鐘(更新后).7z (320.89 KB, 下載次數(shù): 13)

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 共享資料的黑幣獎(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ù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人品 | www.久久久久久久久久久久 | 精品一二三| 日韩美香港a一级毛片免费 国产综合av | 一级片aaa| 一区二区免费 | 毛片在线免费 | 一区在线免费视频 | 九九久久国产精品 | 亚洲免费精品 | 91精品久久久久久久 | 日韩在线视频一区 | 亚洲高清在线免费观看 | 国产成人免费视频网站视频社区 | 美女久久久久 | 污免费网站 | 国外成人在线视频 | 亚洲狠狠 | 黄色国产| 亚洲人在线观看视频 | 九九综合 | 99精品免费久久久久久日本 | 日韩午夜影院 | 亚洲精品视频在线看 | 午夜伦理影院 | 日韩毛片在线观看 | 国产中文在线 | 亚洲激情综合网 | 99成人 | 精品国产一区二区三区观看不卡 | 91秦先生艺校小琴 | 999精品视频 | 久久草在线视频 | 国产精品一区二区在线 | 日韩在线视频一区 | www.国产一区 | 国产精品污污视频 | 九九热这里只有精品在线观看 | 成人在线观看网址 | 黑人久久久 | 久久久久亚洲 |