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

標題: 按下按鍵響30次 [打印本頁]

作者: liuyang    時間: 2012-5-29 18:41
標題: 按下按鍵響30次
/*
必要操作:連接左上角3個跳線
*/
#include <AT89X52.H>     //包含頭文件
#define led P0       //定義LED口
#define shuma P0      //定義數碼管數據口
sbit LED_0=P1^0;      //定義4個控制腳
sbit LED_1=P1^1;
sbit LED_2=P1^2;
sbit LED_3=P1^3;
sbit buz=P3^4;       //定義蜂鳴器所在口

unsigned char flag;      //定義測試部分標志
/*=====0-9=====A-G=====*/
unsigned char a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
             0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
            //共陽極數碼管的段碼0 1 2 3 4 5 6 7 8 9 A B C D E F
void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4);
void Delay(unsigned long i)    //延時函數
{
 while(i--);
}
void delayx(unsigned int x)     //延時函數,有效效果為數碼管不閃爍
{
   unsigned int i;
   for(i=0;i<x;i++);
}
void main(void)
{
 unsigned char d;     //定義狀態變量d
 unsigned int i;
 flag=1;
 led=0xff;       //LED全滅
 buz=1;
 for(;;)
 {

  if(flag==1)
  {
   //蜂鳴器響1次,進入第一測試
   Delay(1000);
   buz=0;
   Delay(1000);
   buz=1;
   d=0X01;       //d的初始值即燈的初試狀態
   while(d!=0)      //實現8次左移,如果d中唯一的位1移動出范圍,則重新賦值開始
   {
    led=~d;      //反向輸出點亮
    Delay(5000);    //延時
    d<<=1;      //左移動一位
    Delay(5000);    //延時
   }        //當左移到頭則從for(;;)下面重新開始,循環左移效果
   flag++;       //LED測試完畢,開始測試數碼管
   led=0;
  }

  if(flag==2)
  {
   //蜂鳴器響2次,進入第二測試
   Delay(1000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(1000);
   buz=0;
   Delay(1000);
   buz=1;
   d=0x01;
   while(d!=0)      //實現8次左移,如果d中唯一的位1移動出范圍,則重新賦值開始
   {
    LED_0=0;LED_1=1;LED_2=1;LED_3=1;
    P0=P2;
    P0=~d;      //反向輸出點亮
    Delay(1500);    //延時
    d<<=1;      //左移動一位
    Delay(1500);    //延時
   }
   d=0x01;
   while(d!=0)      //實現8次左移,如果d中唯一的位1移動出范圍,則重新賦值開始
   {
    P0=P2;
    LED_0=1;LED_1=0;LED_2=1;LED_3=1;
    P0=~d;      //反向輸出點亮
    Delay(1500);    //延時
    d<<=1;      //左移動一位
    Delay(1500);    //延時
   }
   d=0x01;
   while(d!=0)      //實現8次左移,如果d中唯一的位1移動出范圍,則重新賦值開始
   {
    P0=P2;
    LED_0=1;LED_1=1;LED_2=0;LED_3=1;
    P0=~d;      //反向輸出點亮
    Delay(1500);    //延時
    d<<=1;      //左移動一位
    Delay(1500);    //延時
   }
   d=0x01;
   while(d!=0)      //實現8次左移,如果d中唯一的位1移動出范圍,則重新賦值開始
   {
    P2=P3;
    LED_0=1;LED_1=1;LED_2=1;LED_3=0;
    P0=~d;      //反向輸出點亮
    Delay(1500);    //延時
    d<<=1;      //左移動一位
    Delay(1500);    //延時
   }
   flag++;
  }

  if(flag==3)
  {
   //蜂鳴器響3次,進入第三測試
   Delay(1000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(1000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(1000);
   buz=0;
   Delay(1000);
   buz=1;
   for(i=0;i<300;i++)    //數碼管顯示1234持續一段時間
   {
    P2=P3;
    display(1,2,3,4);
   }
   flag++;
  }
  if(flag==4)       //蜂鳴器效果
  {
   buz=0;
   Delay(1000);
   buz=1;
   Delay(3000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(3000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(3000);
   buz=0;
   Delay(8000);
   buz=1;
   Delay(1000);
   buz=0;
   Delay(8000);
   buz=1;
   Delay(8000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(3000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(3000);
   buz=0;
   Delay(1000);
   buz=1;
   Delay(10000);
   flag=1;
  }
 }
}

void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4)
{
   shuma=a[d1]; //選中第一位,發送第一位段碼
   LED_0=0;  //第一位顯示
   delayx(100);  //延時顯示
   LED_0=1;  //第一位關顯示

   shuma=a[d2]; //選中第二位,發送第二位段碼,以下原理同上
   LED_1=0;
   delayx(100);
   LED_1=1;

   shuma=a[d3]; //選中第三位,發送第三位段碼,以下原理同上
   LED_2=0;
   delayx(100);
   LED_2=1;

   shuma=a[d4]; //選中第四位,發送第四位段碼,以下原理同上
   LED_3=0;
   delayx(100);
   LED_3=1;
}





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产午夜精品一区二区三区视频 | 国产一区二区三区精品视频 | 成人欧美一区二区三区黑人免费 | 欧美成人xxx | 四虎网站在线观看 | 在线网站免费观看18 | 午夜国产一区 | 午夜快播| 日本加勒比在线 | 精品久久国产 | 视频一区二区三区在线观看 | 97视频在线 | 一级毛片黄色 | 精品在线观看视频 | 成人免费视频一区二区 | 性做久久久 | 五月激情综合网 | 日日夜夜精品视频免费 | 2025国产精品| 国产精品免费一区二区三区 | 色中色综合 | a级片免费观看 | 亚洲日本精品 | 久久亚洲成人 | 国产又黄又爽视频 | 久久精品99久久久久久 | 欧美国产日韩一区 | 午夜精品久久久久久久久久久久 | 国产av毛片| 香蕉视频一区二区 | 日韩免费精品视频 | 亚洲高清毛片一区二区 | 国产三级在线播放 | 秋霞av在线 | 国产成人在线视频 | 欧美一级片免费 | 日韩激情久久 | www99热 | 久久久久久99精品久久久 | av毛片在线播放 | 国产精品麻豆 |