亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qiangdaxitong.c

?? 基于AT89S52的智能搶答系統
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include<reg52.h>
unsigned char code LED_table[]={
0xc0,				               //"0"
0xf9,						       //"1"
0xa4,					           //"2"	        AAAA
0xb0,					           //"3"		   F    B
0x99,					           //"4"		   F    B
0x92,					           //"5"		    GGGG
0x82,				               //"6"		   E    C
0xf8,						       //"7"		   E    C
0x80,				               //"8"	        DDDD    H
0x90,				               //"9"
0xff						       //black
};

#define black 10				   // 空白 
							    
#define BEEP_ON  0x80			   //蜂鳴器(小數點)的亮滅
#define BEEP_OFF 0x00

#define	WriteDeviceAddress 0xa0	   //定義器件在IIC總線中的地址
#define	ReadDviceAddress 0xa1	  

#define  UP       KEY1			   //功能按鍵
#define  DOWN 	  KEY2
#define  SURE	  KEY3
#define  CANCEL	  KEY4

#define NOW_NO_    0x00			   //24C02存儲地址
#define GROUP_1	   0x01			   //各組最終分數
#define GROUP_2	   0x02
#define GROUP_3	   0x03
#define GROUP_4	   0x04
#define NOWgroup   0x05			   //進程存儲
#define NOWmark    0x06
#define NOWtime_m  0x07
#define NOWtime_s  0x08
#define NOWsave    0x09
#define NOWcancel  0x10
#define SAVEbegin  0x11			   //分數存儲入口

#define Aon()      A1=A2=1		   //數碼管選通函數
#define	Aoff()     A1=A2=0
#define ALLon()    A1=A2=B1=B2=B3=B4=C=1
#define NONE()     A1=A2=B1=B2=B3=B4=C=0

//                   定義全局變量
//===========================================================================
unsigned char LED=1,Beep,tt_1,tt_2,count,Time_temp=20;	  
unsigned char Number_A1[2],Number_A2[2],Number_C[2];
unsigned char Number_B1[2],Number_B2[2],Number_B3[2],Number_B4[2];
unsigned char Result[4],Mark,Time_m,Time_s,No_,Group,Save_NOW,Cancel_NOW;	  
unsigned int tt;			
bit A1,A2,B1,B2,B3,B4,C;		   //位變量,控制數碼管選通

//					 定義通信端口
//==========================================================================

sbit LED1=P2^7;					   //主控制顯示
sbit LED2=P2^6;					   
sbit LED3=P2^5;
sbit LED4=P2^4;
								
sbit LED5=P1^6;					   //各組分數顯示	  
sbit LED6=P1^7;
sbit LED7=P1^4;
sbit LED8=P1^5;
sbit LED9=P1^2;
sbit LED10=P1^3;
sbit LED11=P1^0;
sbit LED12=P1^1;

sbit LED13=P3^1;				   //倒計時顯示
sbit LED14=P3^0;

sbit KEY1=P2^3;					   //鍵盤
sbit KEY2=P2^2;
sbit KEY3=P2^1;
sbit KEY4=P2^0;

sbit SCL=P3^4;			           //I2C接口
sbit SDA=P3^5;

sbit BEEP=P0^7;					   //蜂鳴器接口

sbit KEYCHOOSE_1=P3^3;			   //功能按鍵    (鍵盤狀態選擇)
sbit KEYCHOOSE_2=P3^2;			   //搶答按鍵
//===========================================================================

/****************************************************************************
* 名    稱:Sys_Init()
* 功    能:初始化
* 入口參數:無
* 出口參數:無
****************************************************************************/
void Sys_Init()
{
  TMOD=0x11;             	//定時器/計數器0為定時器方式 16位工作模式  
  TH0=(65536-1000)/256;		//初始時間常數
  TL0=(65536-1000)%256;     //1.0ms
  TH1=(65536-50000)/256;	//初始時間常數
  TL1=(65536-50000)%256;    //50ms
  ET0=1;					//定時器/計數器0中斷允許
  ET1=1;					//定時器/計數器1中斷允許
  EA=1;						//總中斷允許
  TR0=1;					//啟動定時器/計數器開始工作
  TR1=1;					//啟動定時器/計數器開始工作
}

/****************************************************************************
* 名    稱:DisplayNumber()
* 功    能:在數碼管上顯示數字
* 入口參數:Num: 顯示數值 (0~99)  xx:數碼管數組
* 出口參數:無
****************************************************************************/
void DisplayNumber(unsigned char Num,unsigned char xx[2])	 
{
	EA=0;								             //禁止總中斷

	xx[0]=Num/10;			   	   	                 //拆分數字
	xx[1]=Num%10;
    if(xx[0]==0) xx[0]=black;                        //消隱無效"0"  

	EA=1;								             //總中斷允許
} 
/****************************************************************************
* 名    稱:Display_Scan()
* 功    能:數碼管選通掃描
* 入口參數:無
* 出口參數:無
****************************************************************************/
void Display_Scan() interrupt 1	                     //中斷服務程序,數碼管選通掃描
{ 
  TR0=0;										
  TH0=(65536-1000)/256;						         //高8位和低8位時間常數
  TL0=(65536-1000)%256;  
  TR0=1;								             //啟動定時器0
	
	if(LED>14) LED=1;
	LED1=LED2=LED3=LED4=LED5=LED6=LED7=LED8=LED9=LED10=LED11=LED12=LED13=LED14=1;  //全置暗
    if(A1) switch(LED)		                         //單數碼管控制
    {
	case 1:	P0=LED_table[Number_A1[0]];      LED1=0; break;	//分別選通LED1、LED2 低電平有效
    case 2: P0=LED_table[Number_A1[1]]-Beep; LED2=0; break;	
	}
	if(A2) switch(LED)
    {
	case 3:	P0=LED_table[Number_A2[0]];      LED3=0; break;	//分別選通LED3、LED4 低電平有效
    case 4: P0=LED_table[Number_A2[1]]-Beep; LED4=0; break;	
	}

	    if(B1) switch(LED)
    {
	case 5:	P0=LED_table[Number_B1[0]];      LED5=0; break;	  
    case 6: P0=LED_table[Number_B1[1]]-Beep; LED6=0; break;	
	}
		if(B2) switch(LED)
    {
	case 7:	P0=LED_table[Number_B2[0]];      LED7=0; break;	 
    case 8: P0=LED_table[Number_B2[1]]-Beep; LED8=0; break;	
	}						 
	    if(B3) switch(LED)
    {
	case 9:	 P0=LED_table[Number_B3[0]];      LED9=0;  break;  
    case 10: P0=LED_table[Number_B3[1]]-Beep; LED10=0; break;	
	}						 
	    if(B4) switch(LED)
    {
	case 11: P0=LED_table[Number_B4[0]];      LED11=0; break;
    case 12: P0=LED_table[Number_B4[1]]-Beep; LED12=0; break;	
	}						 
		if(C) switch(LED)
    {
	case 13: P0=LED_table[Number_C[0]];       LED13=0; break;
    case 14: P0=LED_table[Number_C[1]]-Beep;  LED14=0; break;	
	}					 
	LED++;					 
}
/****************************************************************************
* 名    稱:Time_Count()
* 功    能:后臺定時,通過“Time_temp”控制定時時長
* 入口參數:無
* 出口參數:無
*****************************************************************************/
void Time_Count() interrupt 3
{ 
  TR1=0;										
  TH1=(65536-50000)/256;						     //高8位和低8位時間常數
  TL1=(65536-50000)%256;  
  TR1=1;								             //啟動定時器0	 
  
	if(tt_1>=Time_temp) {tt++;tt_1=0;}			 
     else tt_1++;
	if(tt_2>=8) {count++;tt_2=0;}			
     else tt_2++;
   	if(count>4)  count=1;
}
/****************************************************************************
* 名    稱:delayms()
* 功    能:延遲X毫秒
* 入口參數:ms: 延遲毫秒數
* 出口參數:無
* 說    明: 12MHz條件下
*****************************************************************************/
void delayms(int ms)
{
   unsigned int i;
   for(;ms>0;ms--)	     
   {
      for(i=0;i<123;i++);   
   }					  
}
/****************************************************************************
* 名    稱:KEYchooose()
* 功    能:功能按鍵的選擇
* 入口參數:0、1
* 出口參數:無
*****************************************************************************/
void KEYchoose(unsigned char x)
{
  if(x) {KEYCHOOSE_1=0;KEYCHOOSE_2=1; }			     //選功能按鍵
   else {KEYCHOOSE_2=0;KEYCHOOSE_1=1;}			     //選搶答按鍵
  KEY1=KEY2=KEY3=KEY4=1;						     //全置高
}
/****************************************************************************
* 名    稱:Beeper()
* 功    能:蜂鳴器選通
* 入口參數:鳴響次數 n
* 出口參數:無
*****************************************************************************/
void Beeper(unsigned char n)
{
 unsigned char i;
 for(i=0;i<n;i++)
 {
  Beep=BEEP_ON;
  delayms(300); 
  Beep=BEEP_OFF; 
  delayms(100);
 }
}

//================================== I2C ====================================
/****************************************************************************
* 名    稱:I2C
* 功    能:外存儲器
* 入口參數:存儲數據、存儲地址;讀取地址
* 出口參數:無
****************************************************************************/

void Start() 				                         //開始總線
{
	SDA=1;
	SCL=1;
	SDA=0;
	SCL=0;
}

void Stop() 				                         //結束總線  
{
	SCL=0;
	SDA=0;
	SCL=1;
	SDA=1;
}

void NoAck() 				                         //發ACK0
{
	SDA=1;
	SCL=1;
	SCL=0;
}

bit TestAck() 				                         //測試ACK
{
	bit ErrorBit;
	SDA=1;
	SCL=1;
	ErrorBit=SDA;
	SCL=0;
	return(ErrorBit);
}

Write8Bit(unsigned char input) 				         //寫入8個bit到24c02
{													
	unsigned char temp;
	for(temp=8;temp!=0;temp--) 
	{
		SDA=(bit)(input&0x80);
		SCL=1;
		SCL=0;
		input=input<<1;
	}
}

void Write24c02(unsigned char ch,unsigned char address) //寫入一個字節到24c02
{
	Start();
	Write8Bit(WriteDeviceAddress);
	TestAck();
	Write8Bit(address);
	TestAck();

	Write8Bit(ch);
	TestAck();
	
	Stop();
	delayms(10);
}

unsigned char Read8Bit() 							 //從24c02中讀出8個bit
{														  
	unsigned char temp,rbyte=0;
	for(temp=8;temp!=0;temp--) 
	{
		SCL=1;
		rbyte=rbyte<<1;
		rbyte=rbyte|((unsigned char)(SDA));
		SCL=0;
	}
	return(rbyte);
}
unsigned char Read24c02(unsigned char address) 		 //從24c02中讀出1個字節
{
	unsigned char ch;

	Start();
	Write8Bit(WriteDeviceAddress);
	TestAck();
	Write8Bit(address);
	TestAck();
	Start();
	Write8Bit(ReadDviceAddress);
	TestAck();
	ch=Read8Bit();
	NoAck();
	Stop();
	return(ch);
}
/****************************************************************************
* 名    稱:SetMark()
* 功    能:設定分數,0~9之間
* 入口參數:無
* 出口參數:無
* 顯示描述:只有A1亮且閃
*****************************************************************************/
void SetMark()
{
  A2=0;								                 //關閉A2
  tt=0;
while(tt<=3)						                 //在3秒內設定
{
 if(CANCEL==0)  {delayms(150);if(CANCEL==0) break;}  //跳出
  else if(UP==0){delayms(150);if(UP==0){tt=0;if(Mark>=9)Mark=0;else Mark+=2;}}
  else if(DOWN==0){delayms(150);if(DOWN==0){tt=0;if(Mark==0)Mark=0;else Mark--;}}
  else if(SURE==0){delayms(150); break;}			 //跳出
 DisplayNumber(Mark,Number_A1);							
 if(count%2) A1=~A1;								 //閃爍
 }
 DisplayNumber(Mark,Number_A1);						 //顯示以及存儲
 Write24c02(Mark,NOWmark);
 A2=1;												 //開A2
}
/****************************************************************************
* 名    稱:SetTime()
* 功    能:設定分數,0~10之間
* 入口參數:無
* 出口參數:無
* 顯示描述:兩管皆亮且A2閃
*****************************************************************************/
void SetTime()
{
  tt=0;
  while(tt<=3)										 //在3秒內設定
  {
   DisplayNumber(Time_m,Number_A1);				
   DisplayNumber(Time_s,Number_A2);				
   if(CANCEL==0) {delayms(150);if(CANCEL==0) break;}
   if(UP==0){delayms(150);if(UP==0){tt=0;if(Time_m>=10) ime_m=0;else Time_m++;}}
    else if(DOWN==0) {delayms(150);if(DOWN==0){tt=0;  
   if(Time_s==0&&Time_m>=1) {Time_s=30;Time_m--;}else Time_s=0;}}
   else if(SURE==0)  {delayms(150); break;	}
   if(count%2) A2=~A2;								 //閃爍
  } 
  DisplayNumber(Time_m,Number_A1);					 //顯示以及存儲
  DisplayNumber(Time_s,Number_A2);				
  Write24c02(Time_m,NOWtime_m);
  Write24c02(Time_s,NOWtime_s);
}
/****************************************************************************
* 名    稱:Count_Down()
* 功    能:倒計時,按“SURE”、“CANCEL”跳出
* 入口參數:無
* 出口參數:1和0 (沒用)
* 顯示描述:A1、A2、C共同顯示,完成后回復原來數據,到秒提醒
*****************************************************************************/
bit Count_Down()
{
 char  mm;
 unsigned char ss,x;
 if(SURE==0) x=1;									 //判斷用SURE或CANCEL跳出
  else x=0;
 KEYCHOOSE_1=0; 
 Time_temp=20;										 //準確一秒定時
 if(!Time_s&&Time_m) {mm=Time_m-1;ss=60;}			 //判斷分的顯示
  else {mm=Time_m; ss=30;}
 do
 {
  for(tt=0;tt<ss;)									 //循環ss秒
  { 
   DisplayNumber(mm,Number_A1); 
   DisplayNumber(ss-tt,Number_A2);
   if(mm&&!(tt%3)) DisplayNumber(mm,Number_C);  	 //協調C中分和秒的顯示

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区精品在线| 中文字幕亚洲在| 免费一级片91| 日韩免费看的电影| 国产一级精品在线| 一区二区中文字幕在线| 欧美性大战久久| 免费在线观看日韩欧美| 国产欧美精品一区| 在线视频国内自拍亚洲视频| 日韩成人dvd| 久久精品亚洲乱码伦伦中文| 色综合中文字幕| 麻豆成人综合网| 国产精品网站在线观看| 91国偷自产一区二区三区成为亚洲经典 | 六月丁香婷婷色狠狠久久| 久久亚洲一区二区三区明星换脸| 国产成人av电影在线| 亚洲麻豆国产自偷在线| 日韩色在线观看| av中文一区二区三区| 亚洲3atv精品一区二区三区| 精品盗摄一区二区三区| 91在线视频18| 久久69国产一区二区蜜臀| 国产精品久久久久久久久果冻传媒| 欧美亚洲国产怡红院影院| 另类调教123区| 一区二区三区中文字幕| 精品成人佐山爱一区二区| 日本道精品一区二区三区| 国产一区二区中文字幕| 亚洲国产精品久久不卡毛片| 国产午夜一区二区三区| 欧美日韩精品系列| 国产成人免费在线观看| 三级欧美韩日大片在线看| 中文无字幕一区二区三区| 7777精品伊人久久久大香线蕉的 | 亚洲激情男女视频| 久久蜜桃香蕉精品一区二区三区| 日本福利一区二区| 国产91富婆露脸刺激对白| 日韩激情一区二区| 一区二区三区在线免费| 中文字幕欧美国产| 久久婷婷综合激情| 91麻豆精品国产综合久久久久久| 99精品黄色片免费大全| 国产剧情一区在线| 久久99精品国产91久久来源| 亚洲一区二区三区四区在线 | 精品福利一区二区三区| 欧美欧美午夜aⅴ在线观看| 91麻豆.com| av日韩在线网站| 国产丶欧美丶日本不卡视频| 美腿丝袜亚洲三区| 日韩电影免费在线观看网站| 一区二区免费视频| 中文字幕日本乱码精品影院| 国产亚洲午夜高清国产拍精品 | 婷婷中文字幕综合| 亚洲国产一区二区三区青草影视| 亚洲欧美日韩综合aⅴ视频| 国产欧美日韩在线观看| 久久综合久久综合久久| 精品免费国产二区三区| 欧美一区国产二区| 日韩欧美的一区二区| 日韩欧美中文一区| 日韩欧美一区二区不卡| 日韩午夜激情视频| 日韩免费视频一区| 久久中文字幕电影| 日本一区二区视频在线| 国产精品高潮呻吟| 亚洲视频网在线直播| 自拍偷拍亚洲综合| 亚洲综合激情网| 亚洲电影欧美电影有声小说| 午夜精品在线看| 日韩激情av在线| 美女脱光内衣内裤视频久久影院| 久久av资源站| 国产成人在线色| 99精品黄色片免费大全| 91成人网在线| 91精品欧美福利在线观看| 精品国产制服丝袜高跟| 国产欧美日韩另类一区| 亚洲欧美激情视频在线观看一区二区三区 | 精品久久久三级丝袜| 欧美激情艳妇裸体舞| 亚洲欧美区自拍先锋| 爽好久久久欧美精品| 久久精品国产精品亚洲综合| 国产高清无密码一区二区三区| 成人国产视频在线观看| 欧美影院一区二区| 精品少妇一区二区三区日产乱码| 中文字幕免费在线观看视频一区| 亚洲精品一二三| 美国av一区二区| 不卡高清视频专区| 欧美日韩国产在线观看| 久久你懂得1024| 亚洲美女视频在线| 免费在线欧美视频| 99精品欧美一区二区三区小说| 欧美群妇大交群的观看方式| 久久精品在这里| 亚洲午夜三级在线| 国产精品一区二区久久不卡| 在线观看网站黄不卡| 欧美精品一区二区三区在线| 伊人开心综合网| 国产麻豆9l精品三级站| 欧美三级日韩三级| 中文字幕av一区 二区| 视频一区在线播放| 99久久婷婷国产综合精品| 日韩欧美不卡在线观看视频| 亚洲人午夜精品天堂一二香蕉| 麻豆成人av在线| 日本道精品一区二区三区| 久久夜色精品国产噜噜av| 午夜伦欧美伦电影理论片| 成人一区二区三区| 精品美女一区二区| 亚洲五码中文字幕| 99视频精品在线| www成人在线观看| 日韩国产欧美三级| 色美美综合视频| 国产精品麻豆99久久久久久| 久久av资源站| 欧美一级夜夜爽| 婷婷丁香久久五月婷婷| 在线亚洲一区二区| 欧美国产国产综合| 久久99精品久久只有精品| 欧美日韩一区视频| 亚洲三级小视频| 成人福利视频在线看| 久久综合给合久久狠狠狠97色69| 亚洲v日本v欧美v久久精品| 色综合久久66| 亚洲欧美日韩综合aⅴ视频| 成人在线一区二区三区| 久久久亚洲精华液精华液精华液| 日韩av成人高清| 欧美一区二区在线播放| 香蕉成人啪国产精品视频综合网 | 樱花草国产18久久久久| 97精品视频在线观看自产线路二| 国产精品久久看| 成人免费毛片片v| 国产精品女上位| 成人免费看的视频| 国产精品久99| 成人精品亚洲人成在线| 亚洲国产精品av| 成人美女在线视频| 国产精品国产馆在线真实露脸| 成人黄色小视频| 亚洲日本电影在线| 色婷婷久久久综合中文字幕| 一区二区三区欧美| 欧美日韩一区久久| 日韩精品一二三四| 日韩一区二区在线观看视频| 老司机免费视频一区二区| 日韩欧美区一区二| 国内精品免费在线观看| 久久精品免视看| 91视频在线观看免费| 一区二区三区在线观看网站| 欧美日韩在线三区| 美女一区二区视频| 久久婷婷综合激情| 97精品国产露脸对白| 亚洲国产成人av网| 精品精品欲导航| 国产不卡一区视频| 亚洲与欧洲av电影| 欧美大尺度电影在线| 粉嫩av一区二区三区粉嫩| 亚洲欧美日韩在线播放| 3d动漫精品啪啪1区2区免费| 国产一区二区三区四| 综合久久久久久| 欧美一级电影网站| av不卡在线播放| 五月开心婷婷久久| 国产亚洲欧美在线| 日本韩国视频一区二区| 国内精品视频一区二区三区八戒| 中文字幕一区二区三区精华液 |