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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2761|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

AT89S52單片機(jī)最小系統(tǒng)練習(xí) 4位抽獎(jiǎng)機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
實(shí)現(xiàn)4個(gè)功能 1.可設(shè)置上限的抽獎(jiǎng)方式一 2.4位隨機(jī)數(shù)抽獎(jiǎng) 3.倒計(jì)時(shí) 4.正計(jì)時(shí)

單片機(jī)代碼如下(詳細(xì)代碼見(jiàn)附件):
#include <reg52.h>
#include "main.h"
#include "delay.h"
#include "keyscan.h"
#include "disp.h"
#include "key_scan.h"
#include <stdio.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09, //0 1 2 3 4 5 6 7 8 9
             0x11,0xc1,0x63,0x85,0x61,0x71};    //SBUF送顯斷碼表   //A b C d E F
uchar code table_LED[]={0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00,0XFE,0XFC,0XF8,
                           0XF0,0XE0,0XC0,0X80,0X00,0X00,0X00,0X00,0X00 };
              
/*************函數(shù)聲明*****************************/  
void work0();
void work3();
void work4();
char w0,w2;
uchar w1,w3,t1;
char t,y,o,p,m,n,msta;
uchar f,g;

void main (){
/****************初始化各參數(shù)**********************/

char j;/*o,p,m,n,msta*/
char q,w,e,r,/*t,*/y;     //工作方式0送顯變量
int max,temp;
uchar z,x,c,v;
f=g=1;                        //循環(huán)控制變量初始化
o=-1;n=8,msta=0,t=-1;/*m=0;*/ //初始化工作方式0閃爍標(biāo)志位及跳轉(zhuǎn)信號(hào)參數(shù)
q=0;w=2;e=3;r=4;              //工作方式0參數(shù)初始化
//z=x=c=v=0;                  //抽獎(jiǎng)機(jī)參數(shù)初始化
   
    SBUF=table[0];
    cs4=0;
  for(j=0;j<20;j++)
   {delay(100);
    P0=table_LED[j];}
    cs4=1;
   
/****************進(jìn)入主循環(huán)**********************/
    while(1)
    {   
  

switch(msta)
  {
//工作方式0
     case 0:
       {   
        delay(5);  
         key_scan();      
        disp(q,w,e,r,t,y);
        keyscan(1);
        keyscan(2);
          if(ktz2==1)//個(gè)位開(kāi)始閃爍?
           { y=1;
            o++;   //閃爍指針下調(diào)
           switch(o)
           { case 0: t=0;break;
            case 1: t=1;break;
            case 2: t=2;break;
            case 3: t=3;break;
           }
           if(o==4)
            { o=-1;
            y=0;}
           }
    //0~7按鍵的翻譯                                
         if(key1>0)
     {
            for(p=0;p<=8;p++)      
            {
             if(key1&0x01)         
             {
              switch(t)
             { case 0: r=m;break;
              case 1: e=m;break;
              case 2: w=m;break;
              case 3: q=m;break;}}
             key1>>=1;
             m++;}
                  m=0;}
    //8~11按鍵的翻譯
      if(key2>0)
       {
              for(p=0;p<=2;p++)
                {
            if((key2&0x01)==1)
              {switch(t)
              { case 0: r=n;break;
               case 1: e=n;break;
               case 2: w=n;break;
               case 3: q=n;break;}}
              key2>>=1;
              n++;}
                          n=8;}
       //檢測(cè)跳轉(zhuǎn)信號(hào)
       if(k0==1)
        SBUF=table[8];
       if( ktz1==1)
        { msta=1;
        SBUF=table[1];
        max=q*1000+w*100+e*10+r;
        }
          break;          }
//工作方式1  可設(shè)置上限抽獎(jiǎng)         
    case 1:
    {temp=rand()%(max+1);
    z=temp/1000%10;
     x=temp/100%10;
     c=temp/10%10;
     v=temp/1%10;
     delay(5);
   disp(z,x,c,v,0,0);
//   delay(3);
//   v++;
//     if (v>9)
//     {c++;v=0;}
//     if(c>9)
//     {x++;c=0;}
//     if(x>9)
//     {z++;x=0;}
//     if(z>9)
//      z=0;
//
//  if((z==q)&&(x==w)&&(c==e)&&(v==r))   //將最大值送顯后清零
//   {for(i=0;i<4;i++)
//    {  disp(z,x,c,v,0,0);
//        delay(3); }
//         z=x=c=v=0;  }
     //檢測(cè)跳轉(zhuǎn)信號(hào)
     keyscan(1);
     keyscan(2);
     if(ktz1==1)
     {msta=3;
      SBUF=table[2];  }  
     if(ktz2==1)
      msta=2;
           break;}
    case 2:    //工作方式1抽獎(jiǎng)結(jié)果送顯
    {
     delay(5);
     disp(z,x,c,v,0,0);
     keyscan(2);
     if(ktz2==1)
      msta=1;
        break; }
   
   //工作方式2 抽獎(jiǎng)   
    case 3:
    {   //取隨機(jī)數(shù)
     q=rand()%10;
     w=rand()%10;
     e=rand()%10;
     r=rand()%10;
     delay(5);
     disp(q,w,e,r,0,0);
     keyscan(1);
     keyscan(2);
     //檢測(cè)跳轉(zhuǎn)信號(hào)
     if(ktz1==1)
     {msta=5;SBUF=table[3];w3=w2=9;w0=9;w1=5;}
//     if(ktz1==1)
//     { msta=0; SBUF=table[0];q=0;w=2;e=3;r=4;}
     if(ktz2==1)
      msta=4;
     break;}
   
    case 4:  //工作方式2抽獎(jiǎng)結(jié)果送顯
    {
     delay(5);
     disp(q,w,e,r,0,0);
     keyscan(2);
     if(ktz2==1)
      msta=3;
     break;
   
    }
   
    case 5:      //99分59秒倒計(jì)時(shí)
     {
      
      if(w3==0&&w2==0&&w1==0&&w0==0)
     {while(g){
      keyscan(1);
      delay(5);
      disp(0,0,0,0,0,0);
      f++;
      if(ktz1==1)
      {g=0;msta=6;SBUF=table[4];}
      if(f==200)
      {P2=0xff;
         f=0;
      delay(1000);}}   
     }
      work3();
     
     break;}
    case 6:       //正計(jì)時(shí)
     {
     
      work4();
       if(w3==9&&w2==9&&w1==5&&w0==9)
      {while(g)
       { keyscan(1);
        
        delay(5);
      disp(9,9,5,9,0,0);
      f++;
      if(f==200)
      {P2=0xff;
         f=0;
      delay(1000);}
      keyscan(1);
      if(ktz1==1)
      {g=0;}
     
      }}
       if(ktz1==1)
     {
      q=0;w=2; e=3;r=4;
      msta=0;
      SBUF=table[0];
      
    }
     
     break;}
              }
                      }}
      
           
/**************************************
       子函數(shù)
***************************************/
void work0(){
  
  
    t1++;
  if(t1==200)
  { w0--;
    t1=0;}
  if(w1==0&&w0==-1)
  {w1=5;
    w0=9;
    w2--;}
   
  if(w0==-1)
    {w0=9;
    w1--;}
   if(w2==-1)
   {w2=9;
    w3--;
   }
   disp(w3,w2,w1,w0,0,0);
   return;}
//倒計(jì)時(shí)
void work3(){
     delay(5);
     while(f){
      delay(5);
      keyscan(1);
      keyscan(2);
      key_scan();
      disp(w3,w2,w1,w0,t,y);
      if(ktz2==1)//個(gè)位開(kāi)始閃爍?
           { y=1;
            o++;   //閃爍指針下調(diào)
           switch(o)
           { case 0: t=0;break;
            case 1: t=1;break;
            case 2: t=2;break;
            case 3: t=3;break;
           }
           if(o==4)
            { o=-1;
            y=0;}
           }
    //0~7按鍵的翻譯                                
         if(key1>0)
     {
            for(p=0;p<=8;p++)      
            {
             if(key1&0x01)         
             {
              switch(t)
             { case 0: w0=m;break;
              case 1: w1=m;break;
              case 2: w2=m;break;
              case 3: w3=m;break;}}
             key1>>=1;
             m++;}
                  m=0;}
    //8~11按鍵的翻譯
      if(key2>0)
       {
              for(p=0;p<=2;p++)
                {
            if((key2&0x01)==1)
              {switch(t)
              { case 0: w0=n;break;
               case 1: w1=n;break;
               case 2: w2=n;break;
               case 3: w3=n;break;}}
              key2>>=1;
              n++;}
                          n=8;}
          if(ktz1==1)
            { f=0;delay(20);}
     }
      keyscan(1);
     if(ktz1==1)
     {msta=6;SBUF=table[4];w3=w2=w1=w0=0;}
        work0();
     keyscan(2);
     if(ktz2==1)
      f=1;
       return;
           
    }  
  //正計(jì)時(shí)
void work4(){
     uchar t;
      keyscan(1);
      keyscan(2);
        delay(5);
      disp(w3,w2,w1,w0,0,0);
      t++;
      if(t==200)
      {
       t=0;
       w0++;}
      if(w0==10)
      {w0=0;
       w1++;
        if(w1==6)
       {w1=0;
        w2++;}
       if(w2==10)
       {w2=0;
        w3++;}
            }
      if(ktz1==1)
      {msta=0;SBUF=table[0];}
      if(ktz2==1)
      {  f=1;
       while(f)
       { keyscan(1);
        keyscan(2);
        delay(5);
        disp(w3,w2,w1,w0,0,0);
        if(ktz2==1)
         f=0;
      if(ktz1==1)
      w0=w1=w2=w3=0;}}
    return;}
        
全部資料51hei下載地址:
小系統(tǒng)實(shí)驗(yàn).zip (68.24 KB, 下載次數(shù): 16)

評(píng)分

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

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品99久久久久久久vr | 九九热在线视频免费观看 | 精品av| 色婷婷综合成人av | 亚洲三级免费看 | a免费视频| 国产二区精品视频 | 人操人人| 免费一级淫片aaa片毛片a级 | 一区二区精品 | 亚洲精品av在线 | www.久久艹| 国产欧美精品 | 欧美一级淫片免费视频黄 | 99re热精品视频 | 亚洲天堂久久新 | 久久机热 | 天天干夜夜操 | 国产在线观看不卡一区二区三区 | 第四色影音先锋 | 亚洲综合在线播放 | 欧美成人h版在线观看 | 亚洲国产精品视频一区 | 久久中文字幕一区 | 亚洲欧美中文日韩在线v日本 | 精品福利在线视频 | 久久影院一区 | 欧美日韩激情 | 久久久久久久久久影视 | 精品日韩在线 | 91毛片在线观看 | 亚洲欧美在线观看 | 国产 欧美 日韩 一区 | 视频一区 国产精品 | 久久机热 | 亚洲精品视频在线 | 欧美日韩成人 | 国产一级大片 | 午夜网 | 精品日韩 | 日韩精品久久 |