电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

MT8880拔号实验!!!

这是我单独实验MT8880的程序...

电路是按上图搭的

实际编译出来.能工作...HE HE...

#include<AT89X52.H>
#include<math.h>
#include<intrins.h>
#define uint  unsigned int
#define uchar unsigned char
#define MT8880_DATA P2

void delay(uint i);
void MT8880_CR(uchar com1);
void MT8880_OUT(uchar com2);

sbit RW = P2^4;
sbit RS = P2^6;
sbit CS = P2^5;
sbit CLK= P0^0;
sbit CE = P0^1;

//预存电话号码
uchar  code d[11]={0xf1,0xf3,0xf2,0xfa,0xf2,0xfa,0xf4,0xf5,0xf8,0xf6,0xf9};
uchar  code e[8]={0xf3,0xf1,0xf2,0xf1,0xf6,0xfa,0xf8,0xf7};
//主程序
void main()
{
  uchar a,b,i;

  MT8880_CR(0xf9);//写第一个寄存器
  MT8880_CR(0x00);//写第二个寄存器
  for(b=0;b<50;b++)delay(100);//延时
  CE="0";//摘机
  for(b=0;b<50;b++)delay(100);//延时
 
  for(i=0;i<11;i++)
    {
      a="d"[i];    //取第一位电话号码
      MT8880_OUT(a);  //拔第一位电话号码
      for(b=0;b<20;b++)//延时
        {
          delay(50);
         }
     }
   while(1);//拔完号码暂停工作
}

//写寄存器A和B.
void MT8880_CR(uchar com1)
{
  CS="0";
  RS="1";
  RW="0";
  CLK="1";
  delay(1);
  com1&=0x0f;
  MT8880_DATA&=0xf0;
  MT8880_DATA|=com1;
  delay(1);
  CLK="0";
  CS="1";
}

//拔号程序
void MT8880_OUT(uchar com2)
{
  CS="0";
  RS="0";
  RW="0";
  CLK="1";
  delay(1);
  com2&=0x0f;
  MT8880_DATA&=0xf0;
  MT8880_DATA|=com2;
  delay(1);
  CLK="0";
  CS="1";
}

//延时程序
void delay(uint i)
{
  uint a;
  for(;i;i--)
  for(a=0;a<100;a++);
}

 

 

博主
wang1jin
wang1jin's Blog
   
点击跳转