标题: STC11F02单片机做的紫外曝光灯定时器程序+PCB+电路原理图 [打印本页]

作者: rsx9583    时间: 2019-6-7 21:01
标题: STC11F02单片机做的紫外曝光灯定时器程序+PCB+电路原理图
经常自己做板子,每次曝光用手机计时,这次闲着没事做了个定时器,技术含量不高,可以供大家玩玩。

制作出来的实物图如下:
工作状态


装配好的样子


自己感光法做的双面PCB



外观,还没用螺丝固定


protel画的原理图和PCB图如下:(51hei附件中可下载工程文件)

/*曝光机定时器单片机源程序*/
/**********************************

** 程序名称:曝光机定时器程序 **

  

** 支持芯片:STC11F02E        **
** 芯片主频:12M              **
** 编写日期:2019年    **
** 编写人员                      **
** 联系方式:                 **
** 著 作 权:        CXDZ          **
** 版    本:        V1.0          **
** 备注说明:                      **

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


#include"reg51.h"
#include"intrins.h"  //包含_nop_()函数
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;


sbit JQX=P3^7;//继电器
sbit ALAM=P3^0;  //蜂鸣器
u8 ALAM_FLG;
u8 SEC_FLG;
sbit LSA=P3^5;
sbit LSB=P3^4;
sbit LSC=P3^3;
sbit LSD=P3^2;



u8 code smgduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xC7,0xFF};//显示0~F的值
u8 n=0;
u16 s_val;
u16 a,b,c,t;


void delayms(u16 xms)  // xms代表需要延时的毫秒数(可能不准)
{
    unsigned int x,y;
    for(x=xms;x>0;x--)
        for(y=110;y>0;y--);
}


void disp(void)
{
LSA=1;LSB=0;LSC=0;LSD=0; //显示第0位
P1=smgduan[a%10/1];
delayms(5);
LSA=0;
P1=0xFF;
delayms(5);
LSA=0;

LSA=0;LSB=1;LSC=0;LSD=0; //显示第1位
P1=smgduan[(a%100/10)];
delayms(5);
LSB=0;
P1=0xFF;
delayms(5);
LSB=0;

LSA=0;LSB=0;LSC=1;LSD=0; //显示第2位
P1=smgduan[a%1000/100];
delayms(5);
LSC=0;
P1=0xFF;
delayms(5);
LSC=0;

LSA=0;LSB=0;LSC=0;LSD=1; //显示第3位
P1=smgduan[a%10000/1000];
delayms(5);
LSD=0;
P1=0xFF;
delayms(5);
LSD=0;
}

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

void be_be()
{u8 d;
ALAM=1;
  for(d=70;d>0;d--)
    { disp();}
ALAM=0;
for(d=70;d>0;d--)
    { disp();}
ALAM=1;
for(d=70;d>0;d--)
    { disp();}
ALAM=0;}



/*******************************************************************************
* 函 数 名 :
* 函数功能 :
* 输 入 :
* 输 出 :
*******************************************************************************/

void InitTimer0(void)
{
    TMOD=0x01;
    TH0=0xFC;
    TL0=0xBD;
    EA=1;
    ET0=1;
    TR0=1;
}


void Timer0Interrupt(void) interrupt 1
{
    TH0=0xFC;             /**慢慢试出来的数据,基本准确,可以自己修改,提高计时精度*/
    TL0=0xBD;
    s_val++;
if(s_val>=500)         
{
   SEC_FLG=0xFF;
   s_val=0;


}
if(t==0) {TR0=0;
  JQX=0;
  ALAM_FLG=0xFF;
}

}


/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
ALAM_FLG=0x00;
SEC_FLG=0x00;
s_val=0x00;
ALAM=0;
JQX=1;  //继电器初始状态为开
t=150;  //定时150秒,改变t值,可以改变显示,最大四位,小于四位前几位为0显示。

InitTimer0();

while(1)
{
if(SEC_FLG==0xFF)
{SEC_FLG=0x00;
t--;}
a=t;
disp();

if(ALAM_FLG==0xFF)
         {be_be();
                  be_be();
                  be_be();
                  be_be();
          be_be();
                  ALAM_FLG=0;
                 }


}
}

全部资料51hei下载地址:
感光板曝光机定时器.rar (274.46 KB, 下载次数: 108)


作者: 狂野的野马    时间: 2019-6-8 09:03
很不错的想法,值得学习研究
作者: ffggg    时间: 2019-6-8 11:23
感觉很新颖

作者: jialishoushi    时间: 2019-6-24 18:40
非常好 多谢分享  有空做个曝光机玩电路板
作者: wuxingwushu    时间: 2019-8-25 16:36
先下载,抽时间做一个。谢谢楼主!
作者: gxm0451    时间: 2019-9-20 16:09
谢谢楼主分享学习学习
作者: 维超    时间: 2019-12-19 18:04
不错,值得学习研究
作者: zsheng2011    时间: 2021-2-28 11:56
学习了,功能非常强大
作者: ksljxxq    时间: 2021-3-3 07:48
线路板上绿油,以前我也自己做,最细能做到0.2
作者: longlian123    时间: 2022-11-18 10:32
很好的资料,值得学习,对做PCB板曝光很有用




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1