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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3368|回復: 5
打印 上一主題 下一主題
收起左側

大神幫忙指點一下。。這是乒乓球自動控制裝置部分模塊。。怎樣通過按鍵控制乒乓球....

[復制鏈接]
跳轉到指定樓層
樓主
ID:64215 發表于 2014-8-14 16:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define lcd P0
sbit IN1=P2^1;
sbit IN0=P2^0;
sbit key1=P3^1;
sbit key2=P3^0;
sbit trig=P1^0;
sbit echo=P3^2;
sbit en=P2^7;
sbit rw=P2^5;
sbit rs=P2^6;
sbit busybit=P0^7;
//sbit P24=P2^4;
//sbit P26=P2^6;
//sbit P27=P2^7;
bit test_flag;
uchar num,num1,gao_num=1,di_num=6;
uchar tab[]="0123456789";
void wr_com(uchar com,busyflag);
unsigned char timer1;
void juli();
void delay1(uchar i)
{ uchar x,y;
  for(x=i;x>0;x--)
   for(y=125;y>0;y--);
}
void delay(uint temp)         //延時
{
while(temp--);
//1620-14.99ms
//520-5ms
//5-450ns
}
void lcd_init(void)         //1602初始化
{
delay(1650);//time
wr_com(0x38,0);
delay(550);//time
wr_com(0x38,0);
delay(550);
wr_com(0x38,0);
wr_com(0x38,1);
wr_com(0x08,1);
wr_com(0x01,1);
wr_com(0x06,1);
wr_com(0x0c,1);
}
void init(void)                  //外部中斷  和  定時器初始化
{
// P24=0;
// P26=1;
// P0=0x00;
// P26=0;
// P27=1;
// P0=0xff;
// P27=0;
TMOD=0x01;
TH0=0;
TL0=0;
TR0=0;//
IT0=1;
EX0=1;
EA=1;
lcd_init();
}
void testbusy(void)//read com       
{
busybit=1;
en=0;
rs=0;
rw=1;
delay(5);
en=1;
delay(5);
while (busybit);
en=0;
}
void wr_dat(uchar dat,busyflag)           //寫操作
{
if(busyflag)
testbusy();
en=0;
rs=1;
rw=0;
lcd=dat;
delay(5);
en=1;
delay(5);
en=0;
}
void wr_com(uchar com,busyflag)                   //寫指令
{
if(busyflag)
testbusy();
en=0;
rs=0;
rw=0;
lcd=com;
delay(5);
en=1;
delay(5);
en=0;
}
uint test_distance(void)                         //距離
{
uint value;
TH0=0;
TL0=0;
trig=0;
_nop_();
trig=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
trig=0;
while(!echo);
TR0=1;
while(echo);
TR0=0;
value=TH0*256+TL0;
return value;
}
void int0_srv() interrupt 0                                        //外部定時器終端
{
test_flag=1;
}
void key()                                                                   //按鍵
{
if(key1==0)
{
         delay(5);
            if(key1==0)
          {  
              num++;
              if(num==4)
               num=3;
              while(!key1);

          }
}
if(key2==0)
          {
             delay(5);
             if(key2==0)
             {if(num!=0)
             num--;
                         else
                         num=0;
              while(!key2);
             }
             }

}
void dispose()
{
  switch(num)
  {
  case 0:gao_num=1;
         di_num=6;
                 break;
  case 1:gao_num=2;
         di_num=5;
                 break;
  case 2:gao_num=3;
         di_num=4;
                 break;
  case 3:gao_num=4;
         di_num=3;
                 break;
  case 4:gao_num=5;
         di_num=2;
                 break;
  case 5:gao_num=6;
         di_num=1;
                 break;
  case 6:gao_num=0;
         di_num=0;
                 break;
//  case 7:gao_num=0;
//         di_num=0;
//                 break;
  }
}
void qudong()
{         
        uchar i;
        IN0=0;
  if(di_num!=0)
           {
           for(i=0;i<di_num;i++)
              {
                  IN1=0;
                  delay1(10);
        }
                }
         for(i=0;i<gao_num;i++)
            {
                IN1=1;
                delay1(10);
                }
                }

void main()                                                         //主函數                                                                             //距離顯示
{ uint value;
uint a,b,c,d,e;
init();
  while(1){

if(test_flag)
  {               
   test_flag=0;  
   EA=0;
   value=test_distance();
   a=value/100;
   b=a/2;
   c=b*340;
   e=c/10;
   a=e/1000;
   b=(e%1000)/100;
   c=((e%1000)%100)/10;
   d=e%10;
   delay(10);
   EA=1;}
  key();
  dispose();
  qudong();
  wr_com(0x80,1);
  delay(5);
  wr_dat(tab[a],1);
  delay(5);
  wr_dat('.',1);
  delay(5);
  wr_dat(tab[b],1);
  delay(5);
  wr_dat(tab[c],1);
  delay(5);
  wr_dat(tab[d],1);
  delay(5);
  wr_dat('m',1);
  delay(5);
  }
}


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

使用道具 舉報

沙發
ID:1 發表于 2014-8-14 20:44 | 只看該作者
電路圖呢  沒有電路圖 無法看啊
回復

使用道具 舉報

板凳
ID:1 發表于 2014-8-14 20:51 | 只看該作者
sbit key1=P3^1;
sbit key2=P3^0; 這里定義了 2個按鍵
回復

使用道具 舉報

地板
ID:64215 發表于 2014-8-15 08:53 | 只看該作者
恩呢。。
回復

使用道具 舉報

5#
ID:64215 發表于 2014-8-15 08:54 | 只看該作者
admin 發表于 2014-8-14 20:51
sbit key1=P3^1;
sbit key2=P3^0; 這里定義了 2個按鍵

你有乒乓球自動控制裝置的程序嗎?
回復

使用道具 舉報

6#
ID:195259 發表于 2017-5-5 19:56 | 只看該作者
整體發一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美精品一区 | 在线观看亚洲一区二区 | 亚洲日韩中文字幕一区 | 成人免费视频在线观看 | 久久国产精品一区二区 | 午夜影院在线观看 | 黄色毛片免费看 | 欧美激情精品久久久久久变态 | 成人性生交a做片 | 毛片毛片毛片毛片 | www.国产| 91成人精品 | 午夜小电影 | 激情五月婷婷 | 日韩一区二区三区在线观看视频 | 亚洲精品不卡 | 青青草一区 | 黄免费看 | 成人一区av | av中文字幕网 | 中文字幕一区二区三区四区五区 | 日韩成人免费视频 | 日本a网站 | 中文字幕一区在线 | 日日夜夜操天天干 | 亚洲高清一区二区三区 | 免费观看色 | 黄a在线观看 | 欧美日韩在线播放 | 天天视频一区二区三区 | 免费一级片 | 中文字幕一区二区三区在线观看 | 色888www视频在线观看 | 亚洲a视频 | 国产免费播放视频 | 欧美午夜一区 | 蜜桃视频在线观看免费视频网站www | www.av在线| 91午夜在线 | 国产高清精品一区二区三区 | 一级毛片视频免费观看 |