【簡要說明】 一、 尺寸:長170mmX寬72mmX高18mm
二、 主要芯片:單片機,MAX485,MAX232
三、 工作電壓:6V至40V,功耗小于1W
四、 特點:1、具有穩壓電路,輸入電壓廣,具有電源指示燈。
2、具有485通信和232通信及TTL通信。
3、具有數碼管數據顯示,蜂鳴器提示音
4、波特率可調分別是 2400 4800 9600 19200
5、采用大按鍵,機械壽命長。
6、單片機編程,客戶可以自己更改,提供源代碼
7、可發送20組數據
8、具有系統復位按鍵
9、端子采用螺旋壓接端子
10、工作溫度-40度至 +70度 11、工作濕度 40% ~ 80%RH 12、板子靜態功耗小于1W
13、具有續流保護 14、具有電磁抗干擾能力 15、板子穩定工作可靠
16、板子可安裝在DIN導軌上面
工控設備串口及485調試模塊的電路原理圖:
0.png (119.14 KB, 下載次數: 66)
下載附件
2018-2-2 01:47 上傳
0.png (23 KB, 下載次數: 74)
下載附件
2018-2-2 01:48 上傳
pcb:
0.png (258.49 KB, 下載次數: 57)
下載附件
2018-2-2 01:48 上傳
GYJ-0023_工控設備串口及485調試模塊波特率設置:
1上2下 2400
1下2上 4800
1上2上 9600
1下2下 19200
01 2400
10 4800
00 9600
11 19200
模塊的元件清單:
0.png (88.93 KB, 下載次數: 71)
下載附件
2018-2-2 01:48 上傳
0.png (48.71 KB, 下載次數: 46)
下載附件
2018-2-2 01:49 上傳
應用舉例2.JPG (120.19 KB, 下載次數: 69)
下載附件
2018-2-1 12:08 上傳
應用舉例.JPG (128.21 KB, 下載次數: 62)
下載附件
2018-2-1 12:08 上傳
接線說明.JPG (154.29 KB, 下載次數: 61)
下載附件
2018-2-1 12:08 上傳
標示圖.JPG (120.07 KB, 下載次數: 46)
下載附件
2018-2-1 12:08 上傳
GYJ-0023_工控設備串口及485調試模程序:
rs485.c單片機源程序如下:
手持通訊板 - 發送字符:
- #include <STC12C5A60S2.H>
- #include <intrins.h>
- #define uchar unsigned char//宏定義無符號字符型
- #define uint unsigned int //宏定義無符號整型
- sbit RS485_DIR = P1^4; //RS485方向選擇引腳
- sbit boma1 = P1^1;
- sbit boma2 = P1^0;
- bit flagFrame = 0; //幀接收完成標志,即接收到一幀新數據
- bit flagTxd = 0; //單字節發送完成標志,用來替代TXD中斷標志位
- unsigned char cntRxd = 0; //接收字節計數器
- unsigned char pdata bufRxd[64]; //接收字節緩沖區
- void UartRxMonitor(unsigned char ms);
- void UartWrite(unsigned char *buf, unsigned char len);
- void DelayX10us(unsigned int t);
- void ConfigUART1(unsigned int baud);
- void ConfigUART(unsigned int baud);
- sbit ka=P2^4;//按鍵矩陣
- sbit kb=P2^5;
- sbit kc=P2^6;
- sbit kd=P2^7;
- sbit k1=P2^0;
- sbit k2=P2^1;
- sbit k3=P2^2;
- sbit k4=P2^3;
- xdata uint k4val,k4num,keyval=0,keyval1=0,keyval2=0;
- void kabcd();//矩陣按鍵公共
- void Getch();//矩陣按鍵
- void Delay_us(uint i); //us延時
- code uchar seg7code[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};
- sbit display=P3^6;
- void BaudRate();//波特率選擇
- uint keynum=0;
- static uchar presstime=0;//時間值按鍵用到的
- bit kf0=1,kf1=1,kf2=1;
- bit kt0=0,kt1=0,kt2=0;
- sbit key1=P1^5;
- sbit key2=P1^6;
- uchar sendval[20]={'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'};
- uint empty=0;//清空
- sbit buzzer=P3^7;
- bit buzzerf=0;
- void main(){
- TMOD = 0x01;
- TH0 = 0xfc;
- TL0 = 0x67;
- TR0 = 1;
- EA = 1;
- ET0 = 1;
- display=0;
- keyval=16;
- keyval2=16;
- while(1){
- Getch();//矩陣按鍵
- BaudRate();//波特率選擇
- if(keyval!=16){
- if(kf0){kf0=0;kt0=1;
- buzzerf=1;
- keyval2=keyval;
- sendval[keynum]=keyval1;
- keynum++;
- }
- keyval=16;
- }else{if(kt0){kf0=1;kt0=0;}}
- P0=seg7code[keyval2];//傳到數碼管顯示
- if(keynum>20){
- buzzerf=1;
- }
- if(key1==0){if(kf1){if(presstime>100){kf1=0;kt1=1;presstime=0;//當按鍵1按下 清空數據
- keynum=0;keyval2=16;buzzerf=1;
- for(empty=0;empty<20;empty++){sendval[empty]='0';}
- }}}else{if(kt1){if(presstime>100){kf1=1;kt1=0;presstime=0;//當按鍵1松開
- }}}//按鍵1結束
- if(key2==0){if(kf2){if(presstime>100){kf2=0;kt2=1;presstime=0;//當按鍵2按下 發送數據
- if(keynum<21){
- buzzerf=1;
- UartWrite(sendval,keynum);
- }
- }}}else{if(kt2){if(presstime>100){kf2=1;kt2=0;presstime=0;//當按鍵2松開
- }}}//按鍵2結束
- if(buzzerf){
- buzzer=0;//蜂鳴器響
- Delay_us(20000);
- Delay_us(20000);
- Delay_us(20000);
- buzzer=1;
- buzzerf=0;
- }
- }
- }
- void InterruptTimer0() interrupt 1{//T0中斷服務函數,執行串口接收監控
- TH0 = 0xfc;
- TL0 = 0x67;
- presstime++;
- UartRxMonitor(1); //串口接收監控
- }
- /* 串口配置函數,baud-通信波特率 */
- void ConfigUART(unsigned int baud){
- RS485_DIR = 0; //RS485設置為接收方向
- SCON = 0x50; //配置串口為模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1為模式2
- TH1 = 256 - (11059200/12/32)/baud; //計算T1重載值
- PCON = 0x00; //注意 每次變化都要更改,他會保存
- TL1 = TH1; //初值等于重載值
- ET1 = 0; //禁止T1中斷
- ES = 1; //使能串口中斷
- TR1 = 1; //啟動T1
- }
- /* 串口配置函數,19200baud-通信波特率 */
- void ConfigUART1(unsigned int baud){
- RS485_DIR = 0; //RS485設置為接收方向
- SCON = 0x50; //配置串口為模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1為模式
- PCON = 0x80;
- TH1 = 0xFD;
- TL1 = 0xFD;
- ET1 = 0; //禁止T1中斷
- ES = 1; //使能串口中斷
- TR1 = 1; //啟動T1
- }
- /* 軟件延時函數,延時時間(t*10)us */
- void DelayX10us(unsigned int t){
- do {
- _nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();_nop_();_nop_();
- } while (--t);
- }
- // 串口數據寫入,即串口發送函數,buf-待發送數據的指針,len-指定的發送長度
- void UartWrite(unsigned char *buf, unsigned char len){
- RS485_DIR = 1; //RS485設置為發送
- while (len--){ //循環發送所有字節
- flagTxd = 0; //清零發送標志
- SBUF = *buf++; //發送一個字節數據
- while (!flagTxd); //等待該字節發送完成
- }
- DelayX10us(5); //等待最后的停止位完成,延時時間由波特率決定
- RS485_DIR = 0; //RS485設置為接收
- }
- /* 串口接收監控,由空閑時間判定幀結束,需在定時中斷中調用,ms-定時間隔 */
- void UartRxMonitor(unsigned char ms){
- static unsigned char cntbkp = 0;
- static unsigned char idletmr = 0;
- if (cntRxd > 0){ //接收計數器大于零時,監控總線空閑時間
- if (cntbkp != cntRxd){ //接收計數器改變,即剛接收到數據時,清零空閑計時
- cntbkp = cntRxd;
- idletmr = 0;
- }else{ //接收計數器未改變,即總線空閑時,累積空閑時間
- if (idletmr < 30){ //空閑計時小于30ms時,持續累加
- idletmr += ms;
- if (idletmr >= 30){ //空閑時間達到30ms時,即判定為一幀接收完畢 注意這是485協議規定的
- flagFrame = 1; //設置幀接收完成標志
- }
- }
- }
- }else{
- cntbkp = 0;
- }
- }
- /* 串口中斷服務函數 */
- void InterruptUART() interrupt 4{
- if (RI){ //接收到新字節 當字節發送到結束位的一半的時候RI接收標志變為1 進入竄口中斷
- RI = 0; //清零接收中斷標志位
- if (cntRxd < sizeof(bufRxd)){ //接收緩沖區尚未用完時,保存接收字節,并遞增計數器
- bufRxd[cntRxd++] = SBUF; // cntRxd++這個很重要,一開始 cntRxd < sizeof(bufRxd)當進入函數的次數增加,cntRxd慢慢變大,當傳入的數據不滿的時候就 用時間檢測,判斷是否是傳輸完成
- }
- }
- if (TI){ //字節發送完畢
- TI = 0; //清零發送中斷標志位
- flagTxd = 1; //設置字節發送完成標志
- }
- }
- void BaudRate(){//波特率選擇
- if((boma1 == 0)&&(boma2 != 0)){ConfigUART(2400);} //配置波特率為1200
- if((boma2 == 0)&&(boma1 != 0)){ConfigUART(4800);} //配置波特率為4800
- if((boma1 == 0)&&(boma2 == 0)){ConfigUART(9600);} //配置波特率為9600
- if((boma1 != 0)&&(boma2 != 0)){ConfigUART1(19200);}//配置波特率為19200
- }
- void Delay_us(uint i){ //us延時
- for(;i>0;i--){
- _nop_();
- }
- }
- void kabcd(){
- Delay_us(10000);
- if(ka==1){k4val|=0x80;}else{k4val&=0x7f;}
- if(kb==1){k4val|=0x40;}else{k4val&=0xbf;}
- if(kc==1){k4val|=0x20;}else{k4val&=0xdf;}
- if(kd==1){k4val|=0x10;}else{k4val&=0xef;}
- k4num=k4val;
- k4num&=0xf0;
- }
- void Getch(){//矩陣按鍵
- k1=0;//矩陣1開始
- ka=kb=kc=kd=k2=k3=k4=1;
- kabcd();
- if(k4num!=0xf0){
- kabcd();
- if(k4num!=0xf0){
- switch(k4num){
- case(0x70):keyval=1;keyval1=49;break;//s1
- case(0xb0):keyval=2;keyval1=50;break;//s2
- case(0xd0):keyval=3;keyval1=51;break;//s3
- case(0xe0):keyval=4;keyval1=52;break;//s4
- }
- }
- }//矩陣1結束
- k2=0;//矩陣2開始
- ka=kb=kc=kd=k1=k3=k4=1;
- kabcd();
- if(k4num!=0xf0){
- kabcd();
- if(k4num!=0xf0){
- switch(k4num){
- case(0x70):keyval=5;keyval1=53;break;//s5
- case(0xb0):keyval=6;keyval1=54;break;//s6
- case(0xd0):keyval=7;keyval1=55;break;//s7
- case(0xe0):keyval=8;keyval1=56;break;//s8
- }
- }
- }//矩陣2結束
- k3=0;//矩陣3開始
- ka=kb=kc=kd=k2=k1=k4=1;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (61.25 KB, 下載次數: 56)
下載附件
2018-2-2 01:46 上傳
所有資料51hei提供下載:
GYJ-0023_工控設備串口及485調試模塊發貨資料.rar
(4.35 MB, 下載次數: 69)
2018-2-1 12:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|