Altium Designer画的三路AD采集/温度采集/两路输入输出继电器数码管显示模块原理图和PCB图如下:(51hei附件中可下载工程文件)
资料里面包含:三路模拟量采集并显示(AD—UART发送),两路输入控制继电器等单片机源码
注:该模块可以做成温度、显示、数字输入、继电器输出、AD采集、延时时间调节等功能的产品。如顾客没有特殊要求,我们默认发货倒计时30秒控制继电器吸合程序功能 适用场合:温控设备、0到5V模拟量采集、定时延时继电器、工业以及项目中。。。 【输入端子说明】 VCC和GND为电源供电端子,直流供电电压范围6V-40V A1、A2为模拟量输入端子,采集0-5V的直流电压 IN1、IN2为两路数字量带光电隔离的输入控制端 KEY1、KE2为两路按键输入 【两路输出端子说明】 两路继电器输出可控制交流220V/10A的负载 【下载通讯端口】 UART接口可以用来下载程序或进行通讯 【时间控制模块】 通过编程,可以用按键或电位器做为调节延时时间(具体功能可以联系客服,根据顾客具体要求实现) 【温度控制模块】 1用直插的DS18B20(需要顾客另外购买DS18B20)可以做成两路数字输入,两路AD,两个按键输入,两路继电器输出的温度控制模块(要实现具体什么功能,请与客服联系!拍下之前,务必于与客服联系) - 用另一种型号的DS18B20(需要顾客另外购买DS18B20)可以做成两路数字输入,两路AD,两个按键输入,两路继电器输出的温度控制模块
电位器调节延时闭合时间,带触发控制单片机源程序如下:
- /********************************************************************
- 汇诚科技
- 实现功能:延时通断
- 使用芯片:STC12C2052AD
- 晶振:11.0592MHZ
- 波特率:9600
- 编译环境:Keil
- 作者:zhangxinchunleo
- 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
- /********************************************************************
- 采样AD的电压值作为继电器的延时吸合时间 最大调节数为255秒最小调节单位是秒
- 或者最大调节时间为分,最大调节数为255,最小调节单位为分
- 注意:调节好设定时间之后,要断电重新上电
- ********************************************************************/
- #include<STC12C52.h> //库文件
- #include <intrins.h>
- #define uchar unsigned char//宏定义无符号字符型
- #define uint unsigned int //宏定义无符号整型
- #define FOSC 11059200L
- #define BAUD 9600
- #define ADC_POWER 0x80 //ADC 电源控制位
- #define ADC_FLAG 0x10 //ADC 转换结束标志位
- #define ADC_START 0x08 //ADC 开始转换控制位
- #define ADC_SPEEDLL 0x00 //420个时钟周期转换一次
- #define ADC_SPEEDL 0x20 //280 个时钟周期转换一次
- #define ADC_SPEEDH 0x40 //140个时钟周期转换一次
- #define ADC_SPEEDHH 0x60 //70个时钟周期转换一次
- void display(void); //显示函数
- void t_to_dis(uchar num);
- #define DUAN P2 //P0口控制段
- #define WEI P1 //P2口控制位
- /********************************************************************
- 初始定义
- *********************************************************************/
- //数码管显示段码
- code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
- //数码管显示位控制
- sbit wei1=P1^0; //位的控制端
- sbit wei2=P1^1;
- sbit wei3=P1^2;
- sbit wei4=P1^3;
- //按键输入
- sbit key2=P3^2;
- sbit key1=P3^3;
- //模拟量输入端
- sbit A1=P1^5;
- sbit A2=P1^6;
- sbit A3=P1^4;
- //输入控制端
- sbit IN1=P1^7;
- sbit IN2=P3^7;
- //输出控制端
- sbit OUT1=P3^4;
- sbit OUT2=P3^5;
- uchar numb[4]; //定义字符串用于数值转换
- uint tcnt;
- uchar miao;
- /********************************************************************
- 延时函数
- *********************************************************************/
- void delay(uint x)//延时程序 0.1秒
- {
- uint m,n,s;
- for(m=x;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
-
- /********************************************************************
- AD转换初始化程序
- *********************************************************************/
- void InitADC()
- {
- P1ASF|=0x10; //设置P1口为开漏模式,使用AD功能
- ADC_RES=0; //AD数据寄存器清空
- ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START;//打开AD电源,转换周期XX
- delay(10); //延时
- }
- /********************************************************************
- AD转换控制程序
- *********************************************************************/
- uchar GetADCResult(uchar px) //转换输出的数据 (PX为通道口)
- {
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//开始转换
- _nop_(); //延时一个机器周期
- _nop_(); //延时一个机器周期
- _nop_(); //延时一个机器周期
- _nop_(); //延时一个机器周期
- while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
- ADC_CONTR &= ~ADC_FLAG; //关闭AD转换
- return ADC_RES; //返回数据
- }
- /********************************************************************
- IO口初始化函数
- *********************************************************************/
- void init_all(void)
- {
- P2M1=0;
- P2M0=0xff;
- P1M1=0x80;
- P1M0=0x0f;
- P3M1|=0x80;
- P3M0&=0x7f;
- }
- /********************************************************************
- 定时器T1初始化
- *********************************************************************/
- void timer0init(void)
- {
- TMOD=0X20; //定义定时器工作方式
- TH1 = 0x00;
- TL1 = 0x1A;
- ET1=1;
- TR1=1;
- EA=1;
- }
- /********************************************************************
- 主函数
- *********************************************************************/
- void main()
- {
- init_all(); //初始化IO
- InitADC(); //AD转换初始化
- timer0init();//定时器初始化
- while(1)
- {
- GetADCResult(4);
- t_to_dis(ADC_RES);
- display();
- if(IN1==0)
- {
- delay(1);
- if(IN1==0)
- {
- TR1=1;
- OUT1=1;
- }
- }
- }
- }
- /********************************************************************
- 定时器T1中断函数
- *********************************************************************/
- void timer1(void)interrupt 3 using 2
- {
- tcnt++;
- if(tcnt>=4000)
- {
- tcnt=0;
- miao++;
- if(miao>=ADC_RES)
- {
- OUT1=0;
- TR1=0;
- miao=0;
- tcnt=0;
- }
- }
- }
- /********************************************************************
- 求值函数
- *********************************************************************/
- void t_to_dis(uchar num)
- {
- numb[0]=0; //显示千位
- numb[1]=num/100; //显示百位
- numb[2]=num%100/10; //显示十位
- numb[3]=num%10; //显示个位
- }
- /********************************************************************
- 显示函数
- *********************************************************************/
- void display() //显示函数
- {
- WEI&=0XF0;
- DUAN=seg7code[numb[0]];
- wei1=1;
- delay(1);
- WEI&=0XF0;
- DUAN=seg7code[numb[1]];
- wei2=1;
- delay(1);
- WEI&=0XF0;
- DUAN=seg7code[numb[2]];
- wei3=1;
- delay(1);
- WEI&=0XF0;
- DUAN=seg7code[numb[3]];
- wei4=1;
- delay(1);
- WEI&=0XF0;
- }
- /********************************************************************
- 结束
- *********************************************************************/
复制代码 【简要说明】
一、 尺寸:长86cmX宽66cmX高2cm
二、 主要芯片:STC12C5202/4AD
三、 工作电压:直流6~40伏(板上有LM2576稳压芯片);
四、 特点:
1、可编程(通过下载排针可下载程序)
2、具有两路数字量(IN0和IN1)控制/检测信号输入端
3、两路AD模拟量输入(A1和A2)
4、两个按键输入
5、两路继电器输出指示灯
6、可控制两路交流220V/10A一下设备。(最大控制设备2000W)
7、板子带有防反接二极管
8、标准的11.0592晶振
所有资料51hei提供下载:
|