核心是一個51單片機,這個模擬量輸入數字量顯示可編程模塊電路原理圖及PCB圖:
0.png (54.74 KB, 下載次數: 66)
下載附件
2018-2-8 14:21 上傳
0.png (133.11 KB, 下載次數: 52)
下載附件
2018-2-8 14:22 上傳
AD接收UART發送模塊AD轉換數值顯示的vb上位機源碼(51hei附件中可下載)
0.png (41.57 KB, 下載次數: 53)
下載附件
2018-2-8 14:23 上傳
單片機下位機的配套源程序:
0.png (52.24 KB, 下載次數: 59)
下載附件
2018-2-8 14:24 上傳
【簡要說明】 一、板子尺寸:長72mmX寬54mmX高18mm
二、主要器件:單片機、數碼管、繼電器
三、工作電壓:DC5V~40V
四、板子功耗:小于200mA
五、特點:
1、具有繼電器輸出信號指示功能。
2、供電即可工作無需外部觸發。
3、具有電源指示燈,四位數碼管顯示功能。
4、如果您會單片機,可以根據自己需要,任意編程,我們可提供參考程序和相關資料。
5、兩個按鍵任意調節設置參數。
6、0~5V模擬量輸入。
7、可以和72MM卡槽板配合安裝在DIN導軌上。
8、繼電器觸點干接點輸出,可以控制交流或者直流250V以內任何負載。
9、端子采用螺旋壓接端子
10、工作溫度-40度至 +70度 11、工作濕度 10% ~ 80%RH 12、四周有4個固定安裝孔
13、具有電磁抗干擾能力 14、板子穩定工作可靠
此控制電路的應用舉例與接線圖分享:
應用舉例.JPG (119.71 KB, 下載次數: 47)
下載附件
2018-2-8 00:36 上傳
應用舉2例.JPG (121.66 KB, 下載次數: 51)
下載附件
2018-2-8 00:36 上傳
接線圖.JPG (110.63 KB, 下載次數: 42)
下載附件
2018-2-8 00:36 上傳
復件 標示圖1.JPG (102.08 KB, 下載次數: 55)
下載附件
2018-2-8 00:36 上傳
標示圖1.JPG (102.08 KB, 下載次數: 44)
下載附件
2018-2-8 00:36 上傳
標示圖.JPG (110.42 KB, 下載次數: 49)
下載附件
2018-2-8 00:36 上傳
數碼管程序延時程序 - 廁所沖水延時25秒可調
1.繼電器使用5V
2.輸入引腳使用下載口排針的VCC GND 和AIN 三個引腳
3.R11電阻不焊接
4.數碼管使用四位一體共陰數碼管
單片機源程序如下:
- /********************************************************************
- 匯誠科技
- 實現功能:測試程序
- 使用芯片:STC12C2052AD
- 晶振:11.0592MHZ
- 波特率:9600
- 編譯環境:Keil
- 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
- /********************************************************************
- ********************************************************************/
- /********************************************************************
- 程序說明:
- 1、P1.7口輸入模擬量數據。
- 2、將數據與設定程序做比較控制繼電器吸合。
- 注意:通道口必須有模擬量輸入數據才有效。
- ********************************************************************/
- //#include<reg52.h>
- #include<STC12C2052AD.h> //庫文件
- #include<intrins.h>
- #define uchar unsigned char //宏定義字符型變量
- #define uint unsigned int //宏定義整型變量
- /*聲明 SFR 相關 與 的 IAP*/
- sfr IAP_DATA = 0xE2;
- sfr IAP_ADDRH = 0xE3;
- sfr IAP_ADDRL = 0xE4;
- sfr IAP_CMD = 0xE5;
- sfr IAP_TRIG = 0xE6;
- sfr IAP_CONTR = 0xE7;
- /********************************************************************
- IO口定義
- ********************************************************************/
- bit write=0;
- uchar playdate;
- unsigned char T0RH=0,T0RL=0;
- unsigned char ms=0;
- sbit P10=P1^0;//數碼管段
- sbit P11=P1^1;//數碼管段
- sbit P12=P1^2;//數碼管段
- sbit P13=P1^3;//數碼管段
- sbit P14=P1^4;//數碼管段
- sbit P15=P1^5;//數碼管段
- sbit P16=P1^6;//數碼管段
- sbit P17=P1^7;//AD信號輸入
- sbit P30=P3^0;//按鍵輸入
- sbit P31=P3^1;//按鍵輸入
- sbit P32=P3^2;//數碼管位
- sbit P33=P3^3;//數碼管位
- sbit P34=P3^4;//數碼管位
- sbit P35=P3^5;//數碼管位
- sbit P37=P3^7; //繼電器輸出
- /********************************************************************
- 定義 ISP/IAP/EEPROM 命令
- *********************************************************************/
- #define CMD_IDLE 0
- #define CMD_READ 1
- #define CMD_PROGRAM 2
- #define CMD_ERASE 3
- #define ENABLE_IAP 0x83//SYSCLK<12MH
- #define IAP_ADDRESS 0x0000 //存儲地址
- /********************************************************************
- 禁用 ISP/IAP/EEPROM functionmake 單片機 在 一 安全 狀態
- *********************************************************************/
- void IapIdle()
- {
- IAP_CONTR = 0; //
- IAP_CMD = 0; //
- IAP_TRIG = 0; //
- IAP_ADDRH = 0x80; //
- IAP_ADDRL = 0; //
- }
- /********************************************************************
- 讀數據
- *********************************************************************/
- uchar IapReadByte(uint addr)
- {
- uchar dat;
- IAP_CONTR = ENABLE_IAP;
- IAP_CMD = CMD_READ;
- IAP_ADDRL = addr;
- IAP_ADDRH = addr >> 8;
- IAP_TRIG = 0x46;
- IAP_TRIG = 0xb9;
- _nop_();
- dat = IAP_DATA;
- IapIdle();
- return dat;
- }
- /********************************************************************
- 寫數據
- *********************************************************************/
- void IapProgramByte(uint addr, uchar dat)
- {
- IAP_CONTR = ENABLE_IAP;
- IAP_CMD = CMD_PROGRAM;
- IAP_ADDRL = addr;
- IAP_ADDRH = addr >> 8;
- IAP_DATA = dat;
- IAP_TRIG = 0x46;
- IAP_TRIG = 0xb9;
- _nop_();
- IapIdle();
- }
- /********************************************************************
- 擦除數據
- *********************************************************************/
- void IapEraseSector(uint addr)
- {
- IAP_CONTR = ENABLE_IAP;
- IAP_CMD = CMD_ERASE;
- IAP_ADDRL = addr;
- IAP_ADDRH = addr >> 8;
- IAP_TRIG = 0x46;
- IAP_TRIG = 0xb9;
- _nop_();
- IapIdle();
- }
- /********************************************************************
- 初始定義
- *********************************************************************/
- code uchar seg7code[10]={ 0x84,0xf6,0x8a,0xa2,0xf0,0xa1,0x81,0xb6,0x80,0xa0}; //顯示段碼 數碼管字跟
- /********************************************************************
- 延時函數
- *********************************************************************/
- void delay1(uchar t)
- {
- uchar i,j;
- for(i=0;i<t;i++)
- {
- for(j=13;j>0;j--);
- { ;
- }
- }
- }
- /********************************************************************
- 顯示函數
- *********************************************************************/
- void Led(uchar date) //顯示函數
- {
- uint z,x,c,v;
- z=date/1000; //求千位
- x=date%1000/100; //求百位
- c=date%100/10; //求十位
- v=date%10; //求個位
- P3M0=0X00;
- P3M1=0XFF;
- P32=0;P33=0;P34=0;P35=0;
- P1=seg7code[x];
- P32=1;P33=0;P34=0;P35=0;
- delay1(80);
- P32=0;P33=0;P34=0;P35=0;
- P1=seg7code[c];
- P32=0;P33=1;P34=0;P35=0;
- delay1(80);
- P32=0;P33=0;P34=0;P35=0;
- P1=seg7code[v];
- P32=0;P33=0;P34=0;P35=1;
- delay1(80);
- P32=0;P33=0;P34=0;P35=0;
- //P1=seg7code[v];
- //P32=0;P33=0;P34=1;P35=0;
- //delay1(80);
- //P32=0;P33=0;P34=0;P35=0;
- }
-
- void key()
- {
- if(P30==0)
- {
- delay1(80);
- if(P30==0)
- {
- playdate++;
- if(playdate>50)
- playdate=50;
- while(!P30);
- IapEraseSector(1); //擦除扇區
- IapProgramByte(1,playdate);//寫入數?
- }
- }
- if(P31==0)
- {
- delay1(80);
- if(P31==0)
- {
- playdate--;
- if(playdate<1)
- playdate=1;
- while(!P31);
- IapEraseSector(1); //擦除扇區
- IapProgramByte(1,playdate);//寫入?
- }
- }
- }
- //定時器0初始化
- void t0_init(unsigned char ms0) //ms0最大71
- {
- /***********************************************
- 一個機器周期=12*時鐘周期。
- 11059200為時鐘周期,一共為11059200/12=921600,就是每秒為921600Hz,
- 八位定時器 最大計時 0.2777778ms
- 十六位定時器最大計時 71.111111ms
- 11.0592MHz除12為921600Hz,就是一秒921600次機器周期,10ms=9216次機器周期。
- 65536-9216=56320(dc00)
- TH0=0xdc,TL0=0x00
- ***********************************************/
- long tmp; //臨時變量
- tmp = 11059200 / 12;
- tmp = (tmp * ms0) / 1000;
- tmp = 65536 - tmp;
- tmp = tmp + 3;
- T0RH = (unsigned char)(tmp>>8);
- T0RL = (unsigned char)tmp;
- TMOD &=0XF0;
- TMOD |=0X01; //方式一 一共四種方式 GATE0 C/T0 M0_1 M0_0 C/T0選擇時鐘計數還是外部計數 方式0是十三位定時器 ,方式1是十六位定時器,方式2是八位自動 方式4是兩個八位
- TH0=T0RH;
- TL0=T0RL;
- ET0=1; //使能T0中斷
- EA=1;
- // TR0=1;
- }
- /********************************************************************
- 主函數
- *********************************************************************/
- void main()
- { unsigned char flag=1,flag2=0;;
- playdate = IapReadByte(0x01); //讀取0x01中的數據 并附給ca
- t0_init(10);
- while(1)
- {
- if((P17==1)&&(flag==0)) //如果松開手了 1
- {
- delay1(200);
- if((P17==1)&&(flag==0))
- {
- TR0=1;
- P37=0;
- flag=1;
- flag2=0;
- }
- }
- if((P17==0)&&(flag2==0)) // 2
- {
- delay1(200);
- if((P17==0)&&flag2==0)
- {
- flag=0;
- flag2=1;
- }
- }
- key();
- Led(playdate);//調用顯示函數顯示數據display_date
- }
- }
- void t0(void) interrupt 1 using 0 //定時中斷服務函數
- {
- TH0=T0RH;
- TL0=T0RL;
- ms++;
- if(ms==100) //ms=100是1秒
- {
- ms=0;
- if(playdate>0)
- {
- playdate--;
- if(playdate==0)
- { P37=1;
- TR0=0;
- playdate = IapReadByte(0x01); //讀取0x01中的數據 并附給ca
- }
- }
- else
- { P37=1;
- TR0=0;
- playdate = IapReadByte(0x01); //讀取0x01中的數據 并附給ca
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
還附帶如下完整源碼:
59板配合3461as數碼管進行觸發加操作
59板配合3461as數碼管進行 溫度 控制
DS18B20溫度報警模塊
EEPROM測試程序(成功)
廁所沖水系統延時程序
客戶訂做
延時程序59分99秒
延時程序60分00秒
數碼管程序延時程序
模擬量轉換顯示程序
測試程序(成功)
測試程序(成功)0~5000可調
測試程序(成功)20150317完整
數碼管程序延時程序.rar
DSC_0175.JPG (112.8 KB, 下載次數: 50)
下載附件
2018-2-8 00:36 上傳
DSC_0174.JPG (154.96 KB, 下載次數: 56)
下載附件
2018-2-8 00:36 上傳
0.png (61.22 KB, 下載次數: 51)
下載附件
2018-2-8 14:37 上傳
全部資料51hei下載地址:
模擬量輸入數字量顯示.rar
(3.32 MB, 下載次數: 93)
2018-2-8 14:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|