陈远鹏 发表于 2013-5-12 16:10:12

探测铁块的模块程序

#include<reg52.h>
#define uint unsigned int//预定义一下
#define uchar unsigned char

   uchart=0; //金属块数目

sbit rs=P1^2;          //1602的数据/指令选择控制线
sbit rw=P1^1;          //1602的读写控制线
sbit en=P1^0;          //1602的使能控制线
//sbit num=P2^0;                   // 计数
sbit P07=P0^7;                                //测距

sbit Metal_DTC1=P3^2; //铁块引脚
sbit Metal_DTC2= P3^3; //铁块引脚


/*P0口接1602的D0~D7,注意不要接错了顺序*/
uchar code table[]="0123456789"; //要显示的内容1放入数组table
uchar code table1[];
void delay(uint n)       //延时函数                     
{
    uint x,y;
    for(x=n;x>0;x--)
      for(y=110;y>0;y--);
}
void lcd_wcom(uchar com)//1602写命令函数               
{        

    rs=0;            //选择指令寄存器
    rw=0;            //选择写
    P2=com;            //把命令字送入P2
    delay(5);            //延时一小会儿,让1602准备接收数据
    en=1;         //使能线电平变化,命令送入1602的8位数据口
    en=0;
}
void lcd_wdat(uchar dat)      //1602写数据函数      
{
    rs=1;      //选择数据寄存器
    rw=0;      //选择写
    P2=dat;      //把要显示的数据送入P2
    delay(5);      //延时一小会儿,让1602准备接收数据
    en=1;      //使能线电平变化,数据送入1602的8位数据口
    en=0;
}
void lcd_init()            //1602初始化函数      
{
    lcd_wcom(0x38);       //8位数据,双列,5*7字形      
    lcd_wcom(0x0c);      //开启显示屏,关光标,光标不闪烁
    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位
    lcd_wcom(0x01);    //清屏
}
void main()            //主函数
{   

    uchar count=0;          
        lcd_init();       //液晶初始化        
          EA=1;                  //开关总中断开关
           EX0=1;                  //打开外部中断0开关
           IT0=1;                        //触发方式设
      lcd_wcom(0x80+0x44); //重新设定显示地址为0xc4,即下排第5位           
         delay(200);
       while(1); //动态停机
}
void tikuai() interrupt 0
{   
        if(Metal_DTC1==0&&Metal_DTC2==0) //检测到金属
          t=t+1;       
      else
          t=t;
   lcd_wcom(0x80);   //显示地址设为80H(即00H,)上排第一位
           lcd_wdat(table);         
          delay(200);

}                          

ZL_electric 发表于 2013-5-12 17:21:48

探雷器?

zjk 发表于 2013-5-13 15:16:29

额,sbit P07=P0^7;                              //测距   跟 /*P0口接1602的D0~D7,注意不要接错了顺序*/不冲突么?

benqme 发表于 2013-5-13 16:49:37

探铁器那里有卖哦

zjk 发表于 2013-5-13 22:13:33

{:sweat:}不用读忙信号么?LZ确定这个可以用??

wuningbo 发表于 2013-5-14 09:16:09

{:smile:}嗯学习学习一下。。。。

陈远鹏 发表于 2013-5-23 17:22:53

benqme 发表于 2013-5-13 16:49 static/image/common/back.gif
探铁器那里有卖哦

淘宝哦,应该可以买到滴
页: [1]
查看完整版本: 探测铁块的模块程序