搜索
bottom↓
回复: 59

春节4天做的电子钟(用AMCNC-01雕刻机做的外壳)

[复制链接]

出0入0汤圆

发表于 2011-2-11 21:54:14 | 显示全部楼层 |阅读模式
春节4天做的电子钟:
具有时钟、温度、定时报警功能。
电路比较简单,程序是在中断里做的扫描,处理了显示、按键、读时间、温度,可以给初学者参考。
外壳用AMCNC-01雕刻机制造。


(原文件名:IMG_8210.jpg)


(原文件名:IMG_8211.jpg)


(原文件名:IMG_8213.jpg)


(原文件名:IMG_8216.jpg)


(原文件名:pcb.jpg)


原理图很简单, 没有画. 就是 P0口接段选, P2口接位选. P3.6接DS18B20  P3.7接蜂鸣器  P1.0 P1.1 P1.2 接到 DS1302时钟控制线
PCB是CAD画的.

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2011-2-11 21:55:15 | 显示全部楼层
/*******************************************************************
*                                                                  *
*                        数码管时钟                                *
*                                                                  *
* 工作芯片:AT89S52      晶振频率:11.0592MHz                      *
* 其他芯片:时钟:DS1302 温度:DS18B20                             *
*           显示:8位数码管 4位8段带: 和 4位普通8段               *
* 功能:4位显示 小时:分钟 4位置显示温度/定时                       *
*                                                                  *
*                                                                  *
* 作者:阿晖  QQ13819989     最后更新:2011.02.04                  *
*                                                                  *
*******************************************************************/

#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

#define bit7  0x80
#define bit6  0x40
#define bit5  0x20
#define bit4  0x10
#define bit3  0x08
#define bit2  0x04
#define bit1  0x02
#define bit0  0x01


//开发板
/*
sbit DQ = P3^3;     //定义DS18B20端口DQ
sbit BEEP = P3^7;   //蜂鸣器

sbit reset = P1^2;
sbit sclk  = P1^0;
sbit io    = P1^1;

sbit  K1 = P1^4;    //温度
sbit  K2 = P1^5;    //定时
*/

//实际电路
sbit DQ = P3^6;     //定义DS18B20端口DQ
sbit BEEP = P3^7;   //蜂鸣器

sbit sclk  = P1^2;                //DS1302时钟控制线
sbit io    = P1^1;                //DS1302时钟控制线
sbit reset = P1^0;                //DS1302时钟控制线
sbit  K1 = P1^3;    //温度
sbit  K2 = P1^4;    //定时

unsigned char presence ;

unsigned char data  temp_data[2] = {0x00,0x00};
//unsigned char data  display[8] =   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char code  ditab[16] =    {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
                                    0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
bit  bDS18B20OK=0;    //温度正常开关标记 0正常 1出错

unsigned char h = 0;        //整数
unsigned char l = 0;        //小数


bit flag = 1;
uint timecount = 0;
uint count = 0;

uchar data init [] ={0x00,0x00,0x00,0x00,0x00,0x00,0x00};  //
               //秒, 分, 时, 日, 月,星期,年

uchar display_pos = 0;
//uchar code display[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar code pos_data[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};

//开发板 - 共阳
//uchar code led_display[]=
//{
//  0xc0,  /*0*/
//  0xf9,  /*1*/
//  0xa4,  /*2*/
//  0xb0,  /*3*/
//  0x99,  /*4*/
//  0x92,  /*5*/
//  0x82,  /*6*/
//  0xf8,  /*7*/
//  0x80,  /*8*/
//  0x90   /*9*/
//};


//实际电路 - 共阴
uchar code led_display[]=
{
  0x3F,  /*0*/
  0x06,  /*1*/
  0x5B,  /*2*/
  0x4F,  /*3*/
  0x66,  /*4*/
  0x6D,  /*5*/
  0x7D,  /*6*/
  0x07,  /*7*/
  0x7F,  /*8*/
  0x6F  /*9*/
};

//uchar shift;

//按键处理
#define     MAX_KEY_TIMES   80      //每次1ms 10次为10ms
uchar key_times = 0;
uchar old_key = 0;      //0无按键 1上次按K1 2上次按K2

bit play_temperature = 1;   //显示温度开关
uint alarmMinute = 0;       //定时分钟
uint left_alarmMinute = 0;  //定时剩余分钟
uint now_minute, old_minute;

bit alarm_beep = 0;         //定时到:响铃开关

/**********************************************************/
void delay(unsigned int num)//延时函数
{
  while( --num );
}

/********************************************************

  延时子函数

/********************************************************/
void delayms(unsigned char ms)
{                                               
        unsigned char i;
        while(ms--)
        {
          for(i = 0; i < 125; i++);        //old 120
        }
}


void play_hour()
{
    BEEP = 0;
    delayms(255);
    BEEP = 1;
    delayms(255);
    delayms(255);
    BEEP = 0;
    delayms(255);
    BEEP = 1;
    delayms(255);
    delayms(255);
    BEEP = 0;
    delayms(255);
    BEEP = 1;
    delayms(255);
    delayms(255);
    BEEP = 0;
    delayms(255);
    BEEP = 1;
    delayms(255);
    delayms(255);
    BEEP = 0;
    delayms(255);
    delayms(255);
    delayms(255);
    delayms(255);
    BEEP = 1;
}


/**********************************************************/
Init_DS18B20(void)//初始化ds1820
{
  
     DQ = 1;      //DQ复位
     delay(8);    //稍做延时

     DQ = 0;      //单片机将DQ拉低
     delay(90);   //精确延时 大于 480us

     DQ = 1;       //拉高总线
     delay(8);

     presence = DQ;    //如果=0则初始化成功 =1则初始化失败
     delay(100);
     DQ = 1;
     
     return(presence); //返回信号,0=presence,1= no presence
}

/**********************************************************/
ReadOneChar(void)//读一个字节
{
unsigned char i = 0;
unsigned char dat = 0;

for (i = 8; i > 0; i--)
  {
    DQ = 0; // 给脉冲信号
    dat >>= 1;
    DQ = 1; // 给脉冲信号

    if(DQ)
     dat |= 0x80;
    delay(4);
  }

  return (dat);
}

/**********************************************************/
WriteOneChar(unsigned char dat)//写一个字节
{
  unsigned char i = 0;
  for (i = 8; i > 0; i--)
  {
    DQ = 0;
    DQ = dat&0x01;
    delay(5);

    DQ = 1;
    dat>>=1;
  }
}

/*********************************************************/
Read_Temperature(void)//读取温度
{
  Init_DS18B20();
  if(presence==1)        
   { bDS18B20OK = 1;}      //DS18B20不正常,蜂鸣器报警
   else
   {
     bDS18B20OK=0;
     WriteOneChar(0xCC);  // 跳过读序号列号的操作
     WriteOneChar(0x44);  // 启动温度转换

     Init_DS18B20();
     WriteOneChar(0xCC);  //跳过读序号列号的操作
     WriteOneChar(0xBE);  //读取温度寄存器

     temp_data[0] = ReadOneChar();   //温度低8位
     temp_data[1] = ReadOneChar();   //温度高8位
   }
}

/*********************************************************/
Disp_Temperature()//显示温度
{
/*
        l = ditab[temp_data[0]&0x0f];     //查表得小数位的值
        display[4] = l + 0x30;
        display[3] = '.';

        h = ((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
        display[0] = (h / 100) + 0x30;
        if (display[0] == '0')
                display[0] = ' ';
        display[1] = ((h%100) / 10) + 0x30;
        display[2] = (h % 10) + 0x30;

        write_str(1,1,display);
*/
//         lcd_wdat(0x00);            //显示自定义字符
//    lcd_wdat('C');             //显示C
}

/**********************************************************/
void write_byte(uchar inbyte)
{
        uchar i;
        for(i=0;i<8;i++)
        {
                sclk=0;             //写的时候低电平改变数据
                if(inbyte&0x01)
                        io=1;
                else
                        io=0;
                sclk=1;            //写的时候高电平,把数据写入ds1302
                _nop_();
                inbyte=inbyte>>1;
        }
}


/**********************************************************/
uchar read_byte()    //sclk的下跳沿读数据
{
   uchar i,temp=0;
   io=1;                //设置为输入口
   for(i=0;i<7;i++)
   {
    sclk=0;
    if(io==1)
    temp=temp|0x80;
    else
    temp=temp&0x7f;
    sclk=1;             //产生下跳沿
   
    temp=temp>>1;
   }
   return (temp);
}

/**********************************************************/
// 往ds1302的某个地址写入数据
/**********************************************************/
void write_ds1302(uchar cmd,uchar indata)
{
   sclk=0;
   reset=1;
   write_byte(cmd);        
   write_byte(indata);
   
   sclk=0;
   reset=0;
}

/**********************************************************/
// 读ds1302某地址的的数据
/**********************************************************/
uchar read_ds1302(uchar addr)
{
   uchar backdata;
   sclk=0;
   reset=1;

   write_byte(addr);      //先写地址
   backdata=read_byte();  //然后读数据
  
   sclk=0;
   reset=0;
   return (backdata);
}

/**********************************************************/
// 设置初始时间
/**********************************************************/
void set_ds1302(uchar addr,uchar *p,uchar n) //写入n个数据
{
   write_ds1302(0x8e,0x00);          //写控制字,允许写操作
   for(;n>0;n--)
   {
   write_ds1302(addr,*p);
   p++;
   addr=addr+2;
   }
   write_ds1302(0x8e,0x80);          //写保护,不允许写
}

/**********************************************************/
// 读取当前时间
/**********************************************************/
void read_nowtime(uchar addr,uchar *p,uchar n)
{
  for(;n>0;n--)
  {
    *p=read_ds1302(addr);
    p++;
    addr=addr+2;
  }
}

/**********************************************************/
// 初始化DS1302
/**********************************************************/
void init_ds1302()
{
   reset=0;
   sclk=0;
   write_ds1302(0x80,0x00);
//   write_ds1302(0x90,0xa6); //一个二极管+4K电阻充电
   write_ds1302(0x90,0x00);        //禁止涓流充电
   write_ds1302(0x8e,0x80); //写保护控制字,禁止写
}


/**********************************************************/
// Time0中断函数
/**********************************************************/
void Time0(void) interrupt 1 using 0
{
    uchar disp[8];  //8位数码管

    EA = 0;

    //按键处理
    if (K2 == 0) //定时 按下K2
    {
        if (old_key == 2)
        {
            key_times ++;
            if (key_times >= MAX_KEY_TIMES) //确认按下键
            {
                if (play_temperature)   //目前显示温度模式
                    play_temperature = 0;   //切换为定时模式
                if (alarmMinute < left_alarmMinute + 1) //说明定时已经执行了不到二分钟,还可以改
                {
                    if (alarmMinute < 999)  //最大999分钟 [3位]
                    {
                        alarmMinute ++;
                        left_alarmMinute ++;
                        key_times = 0;
                        now_minute = ((init[1]&0xf0)>>4) * 10 + init[1]&0x0f;
                        old_minute = now_minute;
                    }
                }
                alarm_beep = 0; //取消报警
                BEEP = 1;       //关蜂鸣器
            }
        }
        else
        {
            old_key = 2;
            key_times = 1;
        }
    }
    else if (K1 == 0)    //温度 按下K1
    {
        if (old_key == 1)
        {
            key_times ++;
            if (key_times >= MAX_KEY_TIMES) //确认按下键
            {
                if (!play_temperature)   //目前显示定时模式
                    play_temperature = 1;   //切换为温度模式
                alarmMinute = 0;
                left_alarmMinute = 0;
                key_times = 0;
                alarm_beep = 0; //取消报警
                BEEP = 1;       //关蜂鸣器
            }
            
        }
        else
        {
            old_key = 1;
            key_times = 1;
        }
    }
    else
        key_times = 0;

    //半秒标志
    timecount ++;
    if(timecount > 499)        //500ms
    {
        timecount = 0;   
        flag = ~flag;            
    }

    count ++;
    count ++;
    if (count > 60000)
        count = 0;

    //温度处理
    if (count % 10000 == 0)   // 10秒
    {
        if (play_temperature)   //处理温度
        {
                    Read_Temperature();
            if (bDS18B20OK == 1)        //18B20 err
            {
                h = 0x00;
                l = 0x00;
            }
            else
            {
                h = ((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
                l = ditab[temp_data[0]&0x0f];       //查表得小数位的值

            }
        }
    }

    //时间处理 定时处理
    if (count % 10000 == 0)   // 10秒
    {
        read_nowtime(0x81,init,7);  //读出当前时间,读出7个字节
        if (!play_temperature)  //处理定时
        {
            now_minute = ((init[1]&0xf0)>>4) * 10 + init[1]&0x0f;
            if (now_minute != old_minute)   //分钟发生变化,说明过了一分钟了
            {
                if (left_alarmMinute > 0)
                    left_alarmMinute --;
                old_minute = now_minute;
            }
            if (left_alarmMinute == 0)  //定时到!!! 持续响铃
                alarm_beep = 1;
        }
    }

    //响铃控制
    if (alarm_beep)
    {
        if (flag)
            BEEP = 0;
        else
            BEEP = 1;
    }


    //数码管 段选
    if (display_pos == 0)
        P0 = led_display[(init[2]&0xf0)>>4];    //小时高位
    else if (display_pos == 1)
        P0 = led_display[init[2]&0x0f];         //小时低位
    else if (display_pos == 2)
    {
        P0 = led_display[(init[1]&0xf0)>>4];    //分钟高位
        if (flag)
            P0 |= 0x80;     // add point
//            P0 &= 0x7f;     // add point
    }
    else if (display_pos == 3)
    {
        P0 = led_display[init[1]&0x0f];         //分钟低位
        if (flag)
            P0 |= 0x80;     // add point
//            P0 &= 0x7f;     // add point
    }
    else if (display_pos == 4)
    {
//        if ((h/100) > 0)
//            P0 = led_display[h/100];
//        else
            P0 = 0x00;
//        P0 = 0xff;
    }
    else if (display_pos == 5)
    {
        if (play_temperature)
            P0 = led_display[(h%100)/10];
        else
        {
            if ((left_alarmMinute == alarmMinute) || (flag && left_alarmMinute != alarmMinute))
            {
                if (left_alarmMinute >= 100)
                    P0 = led_display[left_alarmMinute/100];
                else
                    P0 = 0x00;
//                    P0 = 0xff;
            }
            else
                P0 = 0x00;
//                P0 = 0xff;
        }
    }
    else if (display_pos == 6)
    {
        if (play_temperature)
        {
            P0 = led_display[h%10];
          P0 |= 0x80;     // add point
//            P0 &= 0x7f;     // add point
        }
        else
        {
            if ((left_alarmMinute == alarmMinute) || (flag && left_alarmMinute != alarmMinute))
                P0 = led_display[(left_alarmMinute%100)/10];
            else
                P0 = 0x00;
//                P0 = 0xff;
        }
    }
    else if (display_pos == 7)
    {
        if (play_temperature)
            P0 = led_display[l];  //查表得小数位的值
        else
        {
            if ((left_alarmMinute == alarmMinute) || (flag && left_alarmMinute != alarmMinute))
                P0 = led_display[left_alarmMinute%10];
            else
                P0 = 0x00;
//                P0 = 0xff;
        }
    }

    //数码管 位选
    P2 = pos_data[display_pos];

//    delayms(1);

    //换位 每1ms中断只显示一位
    display_pos ++;
    if (display_pos == 4)   //第4位不显示,直接跳过,这样可以提高亮度
        display_pos ++;
    if (display_pos > 7)
        display_pos = 0;

//    TH0 = 0x4c; //50ms定时
//    TL0 = 0x00;
    TH0 = 0xfc; //1ms定时
    TL0 = 0x66;
    EA = 1;
}

/*********************************************************/
void beep()
  {
    unsigned char i;
    for (i=0;i<100;i++)
    {
      delay(60);
      BEEP=!BEEP;                //BEEP取反
    }
    BEEP=1;                      //关闭蜂鸣器
  }

main()
{
    uint i;

//    uchar date_init[] = {0x00,0x41,0x14,0x03,0x02,0x04,0x11}; //用于设置初始时间
                         //秒, 分, 时, 日, 月,星期,年


    P0 = 0xff;
    P2 = 0xff;

//    EA = 0;
    TMOD = 0x01;
//    TH0 = 0x4c; //50ms定时
//    TL0 = 0x00;

    TH0 = 0xfc; //1ms定时
    TL0 = 0x66;
    ET0 = 1;  
    TR0 = 1;

    beep();
    delayms(200);
    beep();
    delayms(200);

    init_ds1302();              //初始化ds1302
//    set_ds1302(0x80,date_init,7);  //设置初始时间,日期,年月  第一次设置过后屏蔽掉 DS1302用备用电继续走
    read_nowtime(0x81,init,7);  //读出当前时间,读出7个字节

        //18B20刚开始会读出很高的值,不知为什么?所以先读几次就正常了
    i = 0;
    while (i < 5)
        {
        Read_Temperature();
        if (bDS18B20OK == 1)        //18B20 err
        {
            h = 0;
            l = 0;
            BEEP = 0;
            delayms(100);
            BEEP = 1;
        }
        else
        {
            h = ((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
            l = ditab[temp_data[0]&0x0f];       //查表得小数位的值
        }
        delayms(200);
        i ++;
    }

    delayms(200);

//    play_hour();

    EA = 1;

    while (1)
    {
        ;
/*
        read_nowtime(0x81,init,7);  //读出当前时间,读出7个字节

                Read_Temperature();
        if (bDS18B20OK == 0)        //18B20 err
        {
            h = 0x00;
            l = 0x00;
        }
        else
        {
            h = ((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
            l = ditab[temp_data[0]&0x0f];       //查表得小数位的值

        }
        procFlag = 0;
        for (i = 0; i < 50; i ++)
            delayms(200);
*/
    }
}

出0入0汤圆

发表于 2011-2-11 22:04:50 | 显示全部楼层

出0入0汤圆

发表于 2011-2-11 22:21:26 | 显示全部楼层
ku a cool a

出0入0汤圆

发表于 2011-2-11 22:37:31 | 显示全部楼层
这个面板 开的不错啊

出0入0汤圆

 楼主| 发表于 2011-2-11 23:34:31 | 显示全部楼层
又得裤子了, 以后一定再做好的

出0入0汤圆

发表于 2011-2-12 01:03:44 | 显示全部楼层
请问电路板是雕的吗?

出0入0汤圆

发表于 2011-2-12 01:33:44 | 显示全部楼层
这要顶!

出0入0汤圆

发表于 2011-2-12 08:30:42 | 显示全部楼层

出0入0汤圆

发表于 2011-2-12 08:39:59 | 显示全部楼层
不错,前面板的四个螺丝没有的话看上去更好.

出0入0汤圆

发表于 2011-2-12 08:47:03 | 显示全部楼层
回复【9楼】gtnr
-----------------------------------------------------------------------

“前面板的四个螺丝没有的话看上去更好”
你有什么办法解决?

出0入0汤圆

发表于 2011-2-12 08:53:31 | 显示全部楼层
回复【10楼】suncq
回复【9楼】gtnr  
-----------------------------------------------------------------------
“前面板的四个螺丝没有的话看上去更好”
你有什么办法解决?
-----------------------------------------------------------------------

热熔胶

楼主的板子上怎么那么多飞线?

出0入0汤圆

发表于 2011-2-12 09:02:50 | 显示全部楼层
飞线的原因是不是断了铜皮?不过看起来板子象万能板+最小系统板。

出0入0汤圆

 楼主| 发表于 2011-2-12 09:24:01 | 显示全部楼层
电路板是用热转印做的. 本来想用 8550做位选, 结果不知什么原因没试出来. 就改成段选接上拉电阻后, 位选直接接P2口了. 实际上没有用一个三级管, 但是多了8根飞线

本来做的单面板, 计划只有位选的8根飞线.

出0入0汤圆

发表于 2011-2-12 09:29:51 | 显示全部楼层
不错。

不过在程序中看到不少delayms()函数……程序忙的过来吗?

出0入0汤圆

 楼主| 发表于 2011-2-12 09:31:24 | 显示全部楼层
回复【11楼】fsclub 绿林好汉
回复【10楼】suncq  
回复【9楼】gtnr   
-----------------------------------------------------------------------  
“前面板的四个螺丝没有的话看上去更好”  
你有什么办法解决?
-----------------------------------------------------------------------
热熔胶
-----------------------------------------------------------------------

热熔胶恐怕不够结实. 螺丝用成内六角的应该更好看

出0入0汤圆

发表于 2011-2-12 16:07:19 | 显示全部楼层
做的很好看啊,有机会也做个,争取胜过你,哈哈

出85入4汤圆

发表于 2011-2-12 16:47:31 | 显示全部楼层
就做了这么个外壳呀,块得了吧你,别给阿莫雕刻机丢人了

出0入0汤圆

发表于 2011-2-12 17:05:31 | 显示全部楼层
飞线好多
面板既然是雕的,加点装饰花纹不是更好

出100入0汤圆

发表于 2011-2-12 17:52:08 | 显示全部楼层
在数码管上加一个黑色带透明的那种玻璃,从前面看就可以以假乱真了

出0入0汤圆

发表于 2011-2-12 17:58:50 | 显示全部楼层
只能算个面板吧,壳算不上。。。

出0入0汤圆

 楼主| 发表于 2011-2-12 17:59:12 | 显示全部楼层
回复【17楼】zzy9903 9903
就做了这么个外壳呀,块得了吧你,别给阿莫雕刻机丢人了
-----------------------------------------------------------------------

你也做个出来晒晒啊

出0入0汤圆

发表于 2011-2-12 18:17:39 | 显示全部楼层
jh

出0入0汤圆

发表于 2011-2-13 13:13:40 | 显示全部楼层
做的非常不错,顶

出0入0汤圆

发表于 2011-2-13 13:22:04 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-2-13 14:58:51 | 显示全部楼层
回复【8楼】tangwei039

-----------------------------------------------------------------------

你的头像有点儿那个,像**妇女,- -!!

出0入0汤圆

发表于 2011-2-13 15:53:50 | 显示全部楼层
面板上的4颗螺丝很掉价。。。

出0入96汤圆

发表于 2011-2-17 12:55:47 | 显示全部楼层
面板可以用双层,一层拧螺丝,外边粘一层整体的!盖住螺钉

出0入0汤圆

发表于 2011-2-17 13:01:06 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-2-18 02:03:54 | 显示全部楼层
个人认为面板设计得很漂亮。同时发表些个人建议:
1、4个螺丝如果用那种内六角的,就让他凸出来,可能还有质感些。
2、蜂鸣器不要整个露出来,而只把发声孔打个洞。面板可能更简洁。
3、羡慕有雕刻机。

出0入0汤圆

发表于 2011-2-18 09:19:21 | 显示全部楼层
相当好.........................................................
头像被屏蔽

出0入0汤圆

发表于 2011-2-18 09:35:15 | 显示全部楼层
回复【17楼】zzy9903 9903
就做了这么个外壳呀,块得了吧你,别给阿莫雕刻机丢人了
-----------------------------------------------------------------------
新手制作出这个外壳,已经不错了。

出0入0汤圆

发表于 2011-2-18 16:39:19 | 显示全部楼层
不知道能给个原理图不,自己也想做一个!

出0入0汤圆

发表于 2011-2-18 18:17:58 | 显示全部楼层
mark

出150入0汤圆

发表于 2011-2-18 18:20:40 | 显示全部楼层
楼主面板是不是装饰用的铝塑板刻的?

出0入0汤圆

 楼主| 发表于 2011-2-18 19:55:00 | 显示全部楼层
回楼上: 面板用铝塑板做的, 40元买了很大一块,算下来这块1元不到.
原理图很简单,我没有画.   用的 AT89S52 就是 P0口接段选, P2口接位选. P3.6接DS18B20  P3.7接蜂鸣器  P1.0 P1.1 P1.2 接到 DS1302时钟控制线

出0入0汤圆

发表于 2011-2-18 20:34:52 | 显示全部楼层
总体说来这个外壳雕的很好

出0入0汤圆

发表于 2011-2-18 20:41:07 | 显示全部楼层
mark

出150入0汤圆

发表于 2011-2-18 21:07:24 | 显示全部楼层
回复【36楼】aahui 阿晖
回楼上: 面板用铝塑板做的, 40元买了很大一块,算下来这块1元不到.  
原理图很简单,我没有画.   用的 at89s52 就是 p0口接段选, p2口接位选. p3.6接ds18b20  p3.7接蜂鸣器  p1.0 p1.1 p1.2 接到 ds1302时钟控制线  

-----------------------------------------------------------------------

我也曾经打过铝塑板的主意,它能弯折吗?用v刀在背面刻槽后,能否像硬纸板一样折成盒子?

出0入12汤圆

发表于 2011-2-18 22:28:11 | 显示全部楼层
为什么不用雕刻机直接出双面PCB?而去用热转印?

出0入0汤圆

发表于 2011-2-18 23:39:02 | 显示全部楼层
雕刻机用的不熟啊!

面板可以刻几个字么

面板的4个螺丝,如果是内六角,就会有点缀作用了

出0入0汤圆

发表于 2011-2-19 03:17:52 | 显示全部楼层
回复【10楼】suncq
回复【9楼】gtnr  
-----------------------------------------------------------------------
“前面板的四个螺丝没有的话看上去更好”
你有什么办法解决?
-----------------------------------------------------------------------

回复【15楼】aahui 阿晖
回复【11楼】fsclub 绿林好汉
回复【10楼】suncq   
回复【9楼】gtnr   
-----------------------------------------------------------------------   
“前面板的四个螺丝没有的话看上去更好”   
你有什么办法解决?  
-----------------------------------------------------------------------  
热熔胶  
-----------------------------------------------------------------------
热熔胶恐怕不够结实. 螺丝用成内六角的应该更好看
-----------------------------------------------------------------------




不要小看了伟大的热熔胶   ~~中国的山寨产业少不了这个




回复【19楼】yu_wen
在数码管上加一个黑色带透明的那种玻璃,从前面看就可以以假乱真了
-----------------------------------------------------------------------


对~~~~   




回复【39楼】leolink
回复【36楼】aahui 阿晖
回楼上: 面板用铝塑板做的, 40元买了很大一块,算下来这块1元不到.   
原理图很简单,我没有画.   用的 at89s52 就是 p0口接段选, p2口接位选. p3.6接ds18b20  p3.7接蜂鸣器  p1.0 p1.1 p1.2 接到 ds1302时钟控制线   
-----------------------------------------------------------------------
我也曾经打过铝塑板的主意,它能弯折吗?用v刀在背面刻槽后,能否像硬纸板一样折成盒子?
-----------------------------------------------------------------------

  可以折  但不能反复折

出0入0汤圆

发表于 2011-2-19 08:53:39 | 显示全部楼层
参考下程序

出0入0汤圆

发表于 2011-2-19 13:51:56 | 显示全部楼层
回复【14楼】XA144F
-----------------------------------------------------------------------
不要那么排斥delayms,单片机没那么任务就不要用那么复杂的算法。
简单、易用远比“高科技”重要,特别是在做产品的时候。

回复【30楼】ytangy
-----------------------------------------------------------------------

想说的都让你给说了,在面板上玩点花样就更漂亮了。

出0入0汤圆

发表于 2011-2-19 16:19:19 | 显示全部楼层
这雕刻机?

出0入0汤圆

 楼主| 发表于 2011-2-19 18:04:57 | 显示全部楼层
本来是主要想show单片机做的程序的, 结果大家对面板更有兴趣...

出0入0汤圆

发表于 2011-2-19 18:09:54 | 显示全部楼层
美工不行啊,LED 管前面不盖一半透明板很难看,既然一定要LED可以选高档点的,感觉好很多

出0入0汤圆

发表于 2011-2-21 17:39:34 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-4-3 12:22:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-3 13:53:39 | 显示全部楼层
非常不错,顶一个

出0入0汤圆

发表于 2011-4-4 12:00:07 | 显示全部楼层
留下足迹。有空学习一下楼主的程序。

出0入0汤圆

发表于 2011-4-4 13:20:13 | 显示全部楼层
xuexi学习

出0入0汤圆

发表于 2011-4-4 19:46:14 | 显示全部楼层
那个蜂鸣器乍一看还以为摄像头呢.

出0入0汤圆

发表于 2011-4-4 21:52:59 | 显示全部楼层
MARK!!!

出0入0汤圆

发表于 2011-4-5 01:21:18 | 显示全部楼层
不错  谢谢分享

出0入0汤圆

发表于 2011-4-19 09:19:13 | 显示全部楼层
面板上四个锣丝改用平头的会好一些

出0入0汤圆

发表于 2011-4-19 11:56:50 | 显示全部楼层
分享快乐,

出0入0汤圆

发表于 2011-4-23 08:36:00 | 显示全部楼层
回复【1楼】aahui  阿晖
-----------------------------------------------------------------------

做的非常不错,值得学习,顶!

出0入0汤圆

发表于 2011-4-29 11:24:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-11 00:21:08 | 显示全部楼层
回复【1楼】aahui 阿晖
-----------------------------------------------------------------------

相当不错!!有时间了,好好看一下,有点困了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 03:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表