亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 51單片機+PC機控制的秒表倒計時Proteus仿真代碼 [打印本頁]

作者: BriefMeteor    時間: 2020-6-26 09:52
標題: 51單片機+PC機控制的秒表倒計時Proteus仿真代碼
PC機通過串口以字符方式向單片機發送一二位十進制數值(仿真時串口發送器的顯示設置為Echo Typed),波特率為9600,單片機收到后將其顯示到數碼管上,當P3.2引腳按鍵按下時開始做秒表倒計時(這里使用的是定時器),數值減到0停止,P3.5端口的LED燈閃爍三下。這里附上程序和仿真圖,有需要的可以下載。

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


單片機源程序如下:
  1. #include <reg52.h>
  2. sbit key = P3^2;
  3. sbit led = P3^5;
  4. typedef unsigned char uchar;
  5. typedef unsigned int uint;

  6. uchar smg[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
  7. uchar time,s=0,over = 0;
  8. char m = 0;
  9. uchar num[2];



  10. void delay(uint x)
  11. {
  12.         uchar y;
  13.         for(x;x>0;x--)
  14.                 for(y=110;y>0;y--);       
  15. }


  16. void time_uart_init()
  17. {
  18.         TMOD = 0x21;
  19.         SCON = 0x50;
  20.         TH0=0XFC;
  21.         TL0=0X18;       
  22.         TH1 = 0xfd;
  23.         TL1 = 0xfd;       
  24.         ET0=1;
  25.         EA=1;
  26.         TR0=1;       
  27.         TR1 = 1;
  28.         ES = 1;
  29.        
  30. }

  31. void smg_some()
  32. {
  33.         char num_[2];
  34.         char i;
  35.         num_[0] = time/10;
  36.         num_[1] = time%10;                       
  37.         for(i=6;i<8;i++)
  38.         {
  39.                 P1=(0x01<<i);
  40.                 P0=~smg[num_[i-6]];
  41.                 delay(1);
  42.                 P0=0xff;
  43.                 delay(1);
  44.         }
  45. }


  46. void main()
  47. {
  48.         uchar j = 0;
  49.         time_uart_init();
  50.         while(1)
  51.         {       
  52.                 smg_some();
  53.                 if(key == 0)
  54.                 {
  55.                         m = 1;
  56.                         while(!key);
  57.                 }
  58.                 if(over)
  59.                 {
  60.                         for(j = 0;j<6;j++)
  61.                         {
  62.                                    led = ~led;
  63.                                 delay(1500);
  64.                         }
  65.                         over = 0;
  66.                 }
  67.         }
  68. }


  69. void Timer0() interrupt 1
  70. {
  71.         static uint i;
  72.         TH0=0XFC;
  73.         TL0=0X18;
  74.         i++;
  75.         if(i==1000)
  76.         {
  77.                 if(m)
  78.                 {
  79.                         time--;
  80.                         if(time<=0)
  81.                         {
  82.                            time = 0;
  83.                            over = 1;
  84.                            m = 0;
  85.                         }
  86.                 }       
  87.                 i = 0;       
  88.         }       
  89. }

  90. void serve() interrupt 4
  91. {
  92.         uchar temp;
  93.         if(RI)
  94.         {
  95.                 RI = 0;
  96.                 temp = SBUF-0x30;
  97.                 num[1]=num[0];
  98.                 num[0]=temp;       
  99.                 time=num[1]*10+num[0];                                       
  100.         }

  101. }
復制代碼

所有資料51hei提供下載:
PC機控制的倒計時秒表發揮部分.zip (101.58 KB, 下載次數: 28)






歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1