Altium Designer畫的三路AD采集/溫度采集/兩路輸入輸出繼電器數碼管顯示模塊原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (48.35 KB, 下載次數: 36)
下載附件
2018-2-24 03:49 上傳
0.png (64.95 KB, 下載次數: 35)
下載附件
2018-2-24 03:50 上傳
0.png (47.48 KB, 下載次數: 42)
下載附件
2018-2-24 03:50 上傳
資料里面包含:三路模擬量采集并顯示(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晶振



    
0.png (15.06 KB, 下載次數: 37)
下載附件
2018-2-24 03:46 上傳
所有資料51hei提供下載:
|