欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機數碼管計數程序 [打印本頁]

作者: acdacadcda    時間: 2018-10-25 16:55
標題: 單片機數碼管計數程序
通過獨立按鍵使數碼管數字增加,當到一定數值時蜂鳴器凱斯報警,減數后撤出報警。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit X=P2^7;
sbit Y=P2^6;
sbit Z=P2^5;
sbit f=P3^4;
uchar counter,num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 };
uchar code list[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   //數碼管的段選
delay_ms(uint ms)
{
uint i;
uint j;
    for(i=0;i<ms;i++)
    {
        for(j=0;j<200;j++);
         for(j=0;j<102;j++);
    }
}
void display(uchar i)
{
uchar shi,ge,bai;
bai = i / 100;//取百位
shi = i / 10; //取十位
ge  = i % 10; //求余,取各位
P0 = 0xff;
X=0;Y=0;Z=0;
P0 = list[0]; //點亮第一位數碼管
P0 = table[bai];
delay_ms(1);
P0 = 0xff;
X=1;Y=0;Z=0;
P0 = list[0];//點亮第二位數碼管
P0 = table[shi];
delay_ms(1);
P0 = 0xff;
X=0;Y=1;Z=0;
P0 = list[0]; //點亮第三位數碼管
P0 = table[ge];
delay_ms(1);
}
void init()
{
TMOD=0x10; //定時器1,工作模式1,16位模式定時器
TH1=(65535-45827)/256;
    TL1=(65535-45827)%256;  //定時50ms
//TR1=1;     //啟動定時器
}
void key()
{
if(k1==0)
{
  delay_ms(10);
  if(k1==0)
  {
   num++;
   if(num==200)
    num=0;
   while(!k1); //等待按鍵釋放
  }  
  if(num==5)
  {    int i;
         for(i=5;i>=0;i--)
            {f=1;
                  delay_ms(30);
                 f=0;
                  delay_ms(30);} //蜂鳴器報警
  }
}
if(k2==0)
{
  delay_ms(10);
  if(k2==0)
  {
   if(num==0)
    num=200;
   num--;
   while(!k2); //等待按鍵釋放
  }
}
if(k3==0)
{
  delay_ms(10);
  if(k3==0)
  {
   num=0;
   while(!k3); //等待按鍵釋放
  }
}
  }
void main()
{
init();
while(1)
{
  key();
  display(num);
}
}  




作者: admin    時間: 2018-10-26 01:04
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣




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