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

QQ登錄

只需一步,快速開始

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

求8位競賽搶答器C語言代碼,看圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
40黑幣
要這個(gè)圖這樣連的,網(wǎng)上有很多但連接不一樣,代碼用不了

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

使用道具 舉報(bào)

沙發(fā)
ID:357587 發(fā)表于 2018-6-27 17:41 | 只看該作者
#include<reg51.h>  sbit DIN=P3^0;//與max7219接口定義 sbit LOAD=P3^1; sbit CLK=P3^2;  sbit key0=P1^0;//8路搶答器按鍵 sbit key1=P1^1; sbit key2=P1^2; sbit key3=P1^3; sbit key4=P1^4; sbit key5=P1^5; sbit key6=P1^6; sbit key7=P1^7;  sbit key_clear=P2^0;//主持人時(shí)間設(shè)置、清除 sbit begin=P2^1;//主持人開始按鍵  sbit sounder=P3^7;//蜂鳴器  unsigned char second=30;//秒表計(jì)數(shù)值 unsigned char counter=0;//counter每100,minite加1 unsigned char people=0;//搶答結(jié)果  unsigned char num_add[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};//max7219讀寫地址、內(nèi)容 unsigned char num_dat[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89};  unsigned char keyscan()//鍵盤掃描函數(shù) {   unsigned char keyvalue,temp;      keyvalue=0;   P1=0xff;   temp=P1;   if(~(P1&temp))   {     switch(temp)         {           case 0xfe:             keyvalue=1;             break;           case 0xfd:             keyvalue=2;             break;           case 0xfb:             keyvalue=3;             break;           case 0xf7:             keyvalue=4;             break;           case 0xef:             keyvalue=5;             break;           case 0xdf:             keyvalue=6;             break;           case 0xbf:             keyvalue=7;             break;       case 0x7f:             keyvalue=8;             break;           default:             keyvalue=0;             break;         }   }    return keyvalue; }  void max7219_send(unsigned char add,unsigned char dat)//向max7219寫指令函數(shù) {   unsigned char        ADS,i,j;    LOAD=0;   i=0;   while(i<16)   {     if(i<8)         {           ADS=add;         }         else         {           ADS=dat;         }         for(j=8;j>=1;j--)         {           DIN=ADS&0x80;           ADS=ADS<<1;           CLK=1;           CLK=0;         }         i=i+8;   }   LOAD=1; }  void max7219_init()//max7219初始化函數(shù) {   max7219_send(0x0c,0x01);   max7219_send(0x0b,0x07);   max7219_send(0x0a,0xf5);   max7219_send(0x09,0xff); }  void time_display(unsigned char x)//時(shí)間顯示 {   unsigned char i,j;   i=x/10;   j=x%10;   max7219_send(num_add[1],num_dat[j]);   max7219_send(num_add[0],num_dat[i]); }  void scare_display(unsigned char x)//搶答結(jié)果顯示 {   unsigned char i,j;   i=x/10;   j=x%10;   max7219_send(num_add[3],num_dat[j]);   max7219_send(num_add[2],num_dat[i]); }  void holderscan()//搶答時(shí)間設(shè)置,0-60s {   time_display(second);   scare_display(people);   if(~key_clear)//如果有鍵按下,改變搶答時(shí)間   {     while(~key_clear);         if(people)//如果搶答結(jié)果沒有清空,搶答器重置         {           second=30;           people=0;         }         if(second<60)         {           second++;         }         else         {           second=0;         }   } }  void timer_init() {   EA=1;   ET0=1;   TMOD=0x01;   TH0=0xd8;//設(shè)定10ms中斷一次   TL0=0xef; }  void main() {   while(1)   {   do{     holderscan();   }while(begin);//開始前進(jìn)行設(shè)置,若未按下開始鍵   while(~begin);//防抖   max7219_init(); //芯片初始化   timer_init();          //中斷初始化   TR0=1;                  //開始中斷   do{     time_display(second);         scare_display(people);         people=keyscan();   }while((!people)&&(second));//運(yùn)行直到搶答結(jié)束或者時(shí)間結(jié)束   TR0=0;   } }  void timer0() interrupt 1 {   if(counter<100)   {     counter++;         if(counter==50)         {           sounder=0;         }   }   else   {     sounder=1;     counter=0;         second=second-1;   }   TH0=0xd8;//重新裝載   TL0=0xef;   TR0=1; }
回復(fù)

使用道具 舉報(bào)

板凳
ID:555451 發(fā)表于 2019-6-9 09:04 | 只看該作者
821128 發(fā)表于 2018-6-27 17:41
#include  sbit DIN=P3^0;//與max7219接口定義 sbit LOAD=P3^1; sbit CLK=P3^2;  sbit key0=P1^0;//8路搶答 ...

這是完整的嘛?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表