[转载DIY秀] DIY数码管收音机,看全手工刀刻电路板过程

[复制链接]
查看5661 | 回复26 | 2013-11-18 11:20:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
制作虽简单,工艺一样全。


先上主制板

76_781793_806f71979614637.jpg?149 (48.49 MB, 下载次数: 0)




从盒中拿出来看不同角度

76_781793_0747acb11c74350.jpg?185 (59.29 MB, 下载次数: 0)



DIY有三块板合成

76_781793_7a972300b91c2e0.jpg?168 (55.84 MB, 下载次数: 0)

76_781793_944fe339d9dbbb8.jpg?170 (53.7 MB, 下载次数: 0)




下面介绍手功制板步骤,一般分排、画、刻、钻、修、涂、焊几步

排是排版,先在纸上排好走线,尽量少挑线,要求美观艺术点,
76_781793_81e0346ed1e5bf2.jpg?170 (54.09 MB, 下载次数: 0)


画是画稿,把走线图用铅笔按纸上的图画在覆铜板上,(此过程没留图,反正也简单,就是同纸上的抄一边。这里有方法,可以把脚多的或元件位置定死的先钻眼定位。

76_781793_4aa2d356e0488ad.jpg?105 (25.63 MB, 下载次数: 0)


上面是数码管,下面是按钮先定位钻孔,这样画稿就方便多了。





刻是刻线,用刀把画上的铅笔线刻掉,

76_781793_cdd104afffa3c3e.jpg?111 (30.48 MB, 下载次数: 0)



钻是钻孔,先用冲子在覆铜面定位,再手钻打孔。
76_781793_3449de10e2e7363.jpg?183 (56.48 MB, 下载次数: 0)


修是修理,把那些尖角、毛刺之类的修理整洁,并用砂纸打亮,
76_781793_8658e6d240b39c3.jpg?180 (55.8 MB, 下载次数: 0)
涂是用松香酒精液涂满两面,还有防潮的效果呵,
76_781793_beaae108889d568.jpg?171 (52.72 MB, 下载次数: 0)
76_781793_e00802717e9009d.jpg?128 (34.99 MB, 下载次数: 0)
76_781793_cdddde36fa2ba0c.jpg?129 (35.02 MB, 下载次数: 0)
76_781793_1837365244a39a6.jpg?180 (55.8 MB, 下载次数: 0)
76_781793_016365479a258f9.jpg?175 (53.94 MB, 下载次数: 0)
76_781793_c6c274e5aeb1e48.jpg?106 (28.07 MB, 下载次数: 0)




下楼继续
回复

使用道具 举报

老吴 | 2013-11-18 11:22:13 | 显示全部楼层
以上三块覆铜板已变线路板,大家说的
PCB
。接下来是焊

先焊挑线

76_781793_d0fe3eabd7cfe9c.jpg?136 (37.69 MB, 下载次数: 0)


76_781793_b79aa50007a56e5.jpg?175 (53.94 MB, 下载次数: 0)



接着再焊

76_781793_717aeff8df9f05d.jpg?106 (28.07 MB, 下载次数: 0)


76_781793_615372b26e5925e.jpg?121 (33.44 MB, 下载次数: 0)

76_781793_70768b982db0fa9.jpg?135 (40.72 MB, 下载次数: 0)


76_781793_baf6f9c7045b4d6.jpg?195 (62.06 MB, 下载次数: 0)


76_781793_ecdc792dac946bf.jpg?120 (34.1 MB, 下载次数: 0)


76_781793_d001cd74418ce19.jpg?125 (37.5 MB, 下载次数: 0)


76_781793_63ead29028d01f3.jpg?136 (39.39 MB, 下载次数: 0)


76_781793_3622ca01d7ffe2d.jpg?174 (52.65 MB, 下载次数: 0)


76_781793_e834918fadda13e.jpg?142 (42.5 MB, 下载次数: 0)


76_781793_201431e9797d5a9.jpg?170 (53.7 MB, 下载次数: 0)


76_781793_825adaf64bab0ac.jpg?185 (59.29 MB, 下载次数: 0)


76_781793_0060fef44f788c9.jpg?168 (55.84 MB, 下载次数: 0)


76_781793_28233559139a95b.jpg?141 (46.54 MB, 下载次数: 0)
回复

使用道具 举报

老吴 | 2013-11-18 11:24:15 | 显示全部楼层
接着再焊

76_781793_d597488bdb1c54e.jpg?185 (60.46 MB, 下载次数: 0)


76_781793_74cefae19c23d00.jpg?156 (48.98 MB, 下载次数: 0)





最后发些
DIY
的副件

76_781793_177207eac74aeeb.jpg?136 (39.35 MB, 下载次数: 0)


76_781793_824b5e83270b341.jpg?125 (36.44 MB, 下载次数: 0)


76_781793_9c868814908a0a5.jpg?128 (12.48 MB, 下载次数: 0)


76_781793_1bb2c0c92ab5599.jpg?108 (30.87 MB, 下载次数: 0)


76_781793_53cf5cde343495d.jpg?98 (28.03 MB, 下载次数: 0)


76_781793_cc5460b3bf3cab4.jpg?142 (41.36 MB, 下载次数: 0)


76_781793_009fd670842c712.jpg?116 (33.55 MB, 下载次数: 0)


76_781793_36c7f516df86d9b.jpg?176 (57.54 MB, 下载次数: 0)


76_781793_1ec74611640c71f.jpg?147 (49.96 MB, 下载次数: 0)


76_781793_7951a3ba724e639.jpg?148 (45.5 MB, 下载次数: 0)


76_781793_be46646e6269cfb.jpg?128 (38.35 MB, 下载次数: 0)



                               
登录/注册后可看大图



                               
登录/注册后可看大图
回复

使用道具 举报

老吴 | 2013-11-18 11:25:41 | 显示全部楼层
再来一张。。。。。。。

76_781793_39d0873a42b5066.jpg?149 (48.49 MB, 下载次数: 0)



今日烧友为贴正名,谢之,为名副其实,补C 码一段。

段选P2口gfabced-dp.{0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,0xa0,0x7f}

位选:p1.2-p1.7.


#include<reg52.h>

sbit SEG1=P2^7;       //小数点显示

sbit SEG2=P1^2;           //段时十位

sbit SEG3=P1^3;           //时个

sbit SEG4=P1^4;           //分十

sbit SEG5=P1^5;           //分个

sbit SEG6=P1^6;           //秒十

sbit SEG7=P1^7;           //秒个

unsigned char code num[]={0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,0xa0,0x7f};

int s=0,m=0,h=0;  //定义三个全局变量s,m,h,用于存放秒分时的数值

void timer(void) interrupt 1 using 1{

    int i;

    if(i==19)  //若i=20,则是1秒,我的如果是20的话会稍慢,所以改为19

    {

        s++;   //秒数自加1

        i=0;    //对i清零   

    }   

    if(s==60)    //如果到了60秒,则对秒数清零,并同时分加一

    {

        m++;

        s=0;

    }

    if(m==60)  //如果到了60分,则对分数清零,并同时时数加一

    {

        h++;   //时数自加1

        m=0;    //对分清零   

    }

    if(h==24)  //如果到了24q时,则对时数清零

    {


        h=0;    //对时清零   

    }        

    i++; //每中断一次,i的值加1

    TH0=(65536-52800)/256;      //再给定时器赋初始值

    TL0=(65536-52800)%256;

}


void init(void)//定时器初始函数,对定时器初始化

{

    EA=1;                    //允许所有的中断请求

    TMOD=0x01;                //设定时器0的工作模式为方式1 即16位定时器

    ET0=1;                    //允许定时器0的中断请求

    TH0=(65536-52800)/256;    //定时时间为50ms,初始值要根据具体情况微调

    TL0=(65536-52800)%256;

    TR0=1;                    //打开定时器0,开始定时

}

void main()

{

    unsigned int i;        //定义一个变量,用于数码管延时

    init();            //调用定时器初始化函数,对定时器进行初始化

    while(1)            //死循环,让数码管不断显示

    {

//下面是只让时十位显示,其他的关闭

        i=100;                //赋值给变量

        SEG2=0;                //三极管导通,只让该位显示,其他段关闭

        P2=num[h/10];          //分离出时的十位,让数码管显示

        while(i--);            //延时一下,让眼睛视觉残留

        SEG2=1;                //关闭该位


//下面是只让钟个位显示  ,其他的关闭

        i=100;                //重新赋值给变量      

        SEG3=0;                //三极管导通,只让该位显示,其他段关闭

        P2=num[h%10];        //分离出时的个位,让数码管显示

        SEG1=0;             //在该位显示小数点

        while(i--);            //延时一下,让眼睛视觉残留

        SEG3=1;                //关闭该位

        SEG1=1;

    //下面是只让分十位显示  ,其他的关闭

        i=100;                //赋值给变量

        SEG4=0;                //三极管导通,只让该位显示,其他段关闭

        P2=num[m/10];          //分离出分的十位,让数码管显示

        while(i--);            //延时一下,让眼睛视觉残留

        SEG4=1;                //关闭该位


//下面是只让分个位显示  ,其他的关闭

        i=100;                //重新赋值给变量

        SEG5=0;                //三极管导通,只让该位显示,其他段关闭

        P2=num[m%10];        //分离出分的个位,让数码管的显示

        SEG1=0;             //在该位显示小数点

        while(i--);            //延时一下,让眼睛视觉残留

        SEG5=1;                //关闭该位

        SEG1=1;

//下面是只让秒十位显示  ,其他的关闭

        i=100;                //赋值给变量

        SEG6=0;                //三极管导通,只让秒十位显示,其他段关闭

        P2=num[s/10];          //分离出秒的十位,让数码管的显示

        while(i--);            //延时一下,让眼睛视觉残留

        SEG6=1;                //关闭该位


//下面是只让秒个位显示  ,其他的关闭

        i=100;                //重新赋值给变量

        SEG7=0;                //三极管导通,只让秒个位显示,其他段关闭

        P2=num[s%10];        //分离出秒的个位,让数码管显示

        while(i--);            //延时一下,让眼睛视觉残留

        SEG7=1;                //关闭该位

    }

}








收音机程序:



/////////////////////////////////////////////////////////////////////////////////////////////////////这

uchar code tab[]={0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,0xa0,0x7f};    //数码管段码表        /////些

sbit led1=P1^4;    //频率显示的数码管位选端口 100兆,P2.4端口                    /////是

sbit led2=P1^5;    //频率显示的数码管位选端口  10兆,P2.5端口                    /////端

sbit led3=P1^6;    //频率显示的数码管位选端口   1兆,P2.6端口                    /////口

sbit led4=P1^7;    //频率显示的数码管位选端口 0.1兆,P2.7端口                    /////,                                

sbit SDA=P3^2;    //接在TEA5767的数据端口                                /////可

sbit SCL=P3^1;    //接在TEA5767的时钟端口                                /////以   

sbit KEY1=P1^2;        //频率增加按键端口                            /////自

sbit KEY2=P1^1;        //频率减小按键端口                            /////行

#define duan P2    //频率显示的数码管段选P0端口                            /////修

/////////////////////////////////////////////////////////////////////////////////////////////////////改


//unsigned char radio_write_data[5]={0x33,0x8e,0x70,0x16,0x80};        //要写入TEA5767的数据,107.9M江苏旅游台

//unsigned char radio_write_data[5]={0x32,0x8e,0x70,0x16,0x80};        //要写入TEA5767的数据,105.8M 南京音乐台

//unsigned char radio_write_data[5]={0x31,0xd7,0x70,0x16,0x80};        //要写入TEA5767的数据,104.3M南京体育台

//unsigned char radio_write_data[5]={0x30,0x9a,0x70,0x16,0x80};        //要写入TEA5767的数据,101.7M南京经济台城市调频

unsigned char radio_write_data[5]={0x30,0x50,0x70,0x16,0x80};        //要写入TEA5767的数据,101.1M江苏交通广播网

//unsigned char radio_write_data[5]={0x2f,0xa5,0x70,0x16,0x80};        //要写入TEA5767的数据,99.7M江苏金色调频

//unsigned char radio_write_data[5]={0x2c,0xc9,0x70,0x16,0x80};        //要写入TEA5767的数据,97.5M江苏文艺台

//unsigned char radio_write_data[5]={0x2c,0xc9,0x70,0x16,0x80};        //要写入TEA5767的数据,93.7M江苏经济台居家广播

//unsigned char radio_write_data[5]={0x2b,0xb0,0x70,0x16,0x80};        //要写入TEA5767的数据,91.4M江苏广播

//unsigned char radio_write_data[5]={0x2a,0xe1,0x70,0x16,0x80};        //要写入TEA5767的数据,89.7M江苏音乐台



unsigned long frequency=101100;    //开机初始化的电台频率为101.1MHz

unsigned int pll=101100;        //计算频率合成时用的变量






void Delayus(unsigned char x)

{

for(;x>0;x--);

}


void iic_start()

{

SDA=1;

Delayus(4);

SCL=1;

Delayus(4);

SDA=0;

Delayus(4);

SCL=0;

Delayus(4);

}


void iic_stop()

{

SCL=0;

Delayus(4);

SDA=0;

Delayus(4);

SCL=1;

Delayus(4);

SDA=1;

Delayus(4);

}


void iic_ack()

{

SDA=0;

Delayus(4);

SCL=1;

Delayus(4);

SCL=0;

Delayus(4);

SDA=1;

Delayus(4);

}



bit iic_testack()

{

bit ErrorBit;

SDA=1;

Delayus(4);

SCL=1;

Delayus(4);

ErrorBit=SDA;

Delayus(4);

SCL=0;

return ErrorBit;

}


void iic_write8bit(unsigned char input)

{

unsigned char temp;

for(temp=8;temp>0;temp--)

{

  SDA=(bit)(input&0x80);

  Delayus(4);

  SCL=1;

  Delayus(4);

  SCL=0;

  Delayus(4);

  input=input<<1;

}

}



void delays (unsigned char b)    //按键消抖用的延时程序

{

  unsigned char i;

  for(b;b>0;b--)

  for(i=0;i<250;i++);

}


void radio_write(void)

{

    unsigned char i;

    iic_start();

    iic_write8bit(0xc0);        //TEA5767写地址

    if(!iic_testack())

    {

        for(i=0;i<5;i++)

        {

            iic_write8bit(radio_write_data
);
            iic_ack();
        }
    }
    iic_stop();   
}


//将显示的频率算好后写到TEA5767芯片里面实现调节,不用考虑TEA5767用于搜台的相关位:SM,SUD
void search()
{        
    pll=(unsigned int)((float)((frequency+225))/(float)8.192);    //计算合成频率数据,频率单位:k
    radio_write_data[0]=pll/256;    //将算好的频率高位数据写入TEA5767
    radio_write_data[1]=pll%256;    //将算好的频率低位数据写入TEA5767
    radio_write_data[2]=0x70;        //这是TEA5767开立体声,关静音
    radio_write_data[3]=0x16;        //中国制式,采用32768晶振,软静音关,立体声消噪声开
    radio_write_data[4]=0x80;        //6.5M锁相环开,去加重时间75US
    radio_write();
}


void delay()
{
    uchar k;
    for(k=0;k<100;k++);
}

void desplay(uint aa)
{
    duan=tab[aa/1000]|0x80;     //关这位数码管的小数点
    led1=0;
    delay();
    led1=1;

    duan=tab[aa%1000/100]|0x80;     //关这位数码管的小数点
    led2=0;
    delay();
    led2=1;

    duan=tab[aa%100/10]&0x7f;    //点亮这位数码管的小数点
    led3=0;
    delay();
    led3=1;

    duan=tab[aa%10]|0x80;     //关这位数码管的小数点
    led4=0;
    delay();
    led4=1;
}




void main()
{
radio_write();        //写入初始化电台频率
while(1)
{
      if(!KEY1)     //手动设置频率,+0.1MHz;
      {
        delays(250); //延时消抖
        frequency+=100;
          if(frequency>108500)    //频率如果大于108.5MHz
          frequency=87500;    //频率设定为87.5MHz
      search();
    desplay(frequency/100);  //调用显示
      }

    if(!KEY2)         //手动设置频率,-0.1MHz;
    {
       delays(250); //延时消抖
       frequency-=100;
        if(frequency<87500)    //频率如果小于87.5MHz
        frequency=108500;    //频率设定为108.5MHz
    search();
    desplay(frequency/100);  //调用显示
    }
    desplay(frequency/100);  //调用显示
}
}
回复

使用道具 举报

bidinghong | 2013-11-18 12:00:11 | 显示全部楼层
回复

使用道具 举报

老吴 | 2013-11-18 12:04:21 | 显示全部楼层
回复

使用道具 举报

luojuan198780 | 2013-11-18 12:53:48 | 显示全部楼层
回复

使用道具 举报

yhsy110 | 2013-11-18 21:58:09 | 显示全部楼层
回复

使用道具 举报

sjl666518 | 2013-11-19 08:35:00 | 显示全部楼层
回复

使用道具 举报

yangjing29 | 2013-11-19 09:08:13 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则