Altium Designer畫的STC12C2052AD單片機主控的無線單路可編程遙控帶數碼管延時模塊電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (76.24 KB, 下載次數: 59)
下載附件
2018-2-25 01:14 上傳
0.png (53.5 KB, 下載次數: 60)
下載附件
2018-2-25 01:15 上傳
0.png (43.01 KB, 下載次數: 57)
下載附件
2018-2-25 01:15 上傳
【簡要說明】 通過遙控控制繼電器定時吸合或者定時斷開。(總之遙控與編程結合控制的開發板)
資料正在更新中. 一、板子尺寸:長54mmX寬72mmX高18mm
二、主要器件:單片機、數碼管、繼電器
三、工作電壓:寬電壓供電(直流6V至24V均可以) 四、板子功耗:小于300mA
0.jpg (47.85 KB, 下載次數: 52)
下載附件
2018-2-25 01:16 上傳
單片機源程序如下:
- /********************************************************************
- 匯誠科技
- 實現功能:測試程序
- 使用芯片:STC12C2052AD
- 晶振:11.0592MHZ
- 波特率:9600
- 編譯環境:Keil
- 作者:zhangxinchunleo
- 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
- /********************************************************************
- ********************************************************************/
- /********************************************************************
- 程序說明:
- 1、P1.7口輸入模擬量數據。
- 2、將數據與設定程序做比較控制繼電器吸合。
- 注意:通道口必須有模擬量輸入數據才有效。
- ********************************************************************/
- #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;
- #define ADC_POWER 0x80 //ADC 電源控制位
- #define ADC_FLAG 0x10 //ADC 轉換結束標志位
- #define ADC_START 0x08 //ADC 開始轉換控制位
- #define ADC_SPEEDLL 0x00 //210 個時鐘周期轉換一次
- #define ADC_SPEEDL 0x20 //420 個時鐘周期轉換一次
- #define ADC_SPEEDH 0x40 //630 個時鐘周期轉換一次
- #define ADC_SPEEDHH 0x60 //840 個時鐘周期轉換一次
- /********************************************************************
- IO口定義
- ********************************************************************/
- bit write=0;
- uchar playdate;
- uint XS;
- 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 delay()//延時程序 0.1秒
- {
- uchar m,n,s;
- for(m=10;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
- /********************************************************************
- 顯示函數
- *********************************************************************/
- void Led(uint date) //顯示函數
- {
- /*****************數據轉換*****************************/
- uint z,x,c,v;
- z=date/1000; //求千位
- x=date%1000/100; //求百位
- c=date%100/10; //求十位
- v=date%10; //求個位
- 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;
- }
- /********************************************************************
- 功能:串口初始化,波特率9600,方式1
- *********************************************************************/
- /*
- void Init_Com(void)
- {
- TMOD = 0x20;
- PCON = 0x00;
- SCON = 0x50;
- TH1 = 0xFd;
- TL1 = 0xFd;
- TR1 = 1;
- }
-
- /********************************************************************
- AD轉換初始化程序
- *********************************************************************/
- void InitADC()
- {
- P1 = P1M0 = P1M1 = 0xff; //設置P1口為開漏模式,使用AD功能
- ADC_DATA = 0; //AD數據寄存器清空
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//打開AD電源,轉換周期210
- delay(); //延時
- }
- /********************************************************************
- 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_DATA; //返回數據
- }
- /********************************************************************
- 串口數據發送
- *********************************************************************/
- /*void SendData(uchar dat)
- {
- SBUF = dat; //發送數據
- while (!TI); //等待數據
- TI = 0; //清零標志位
- }
- /********************************************************************
- 編輯數據函數
- *********************************************************************/
- /*void show(uchar ch)
- {
- SendData(ch); //發送顯示通道
- SendData(GetADCResult(ch)); //發送對應通道的數據
- }
- /********************************************************************
- 按鍵函數
- *********************************************************************/
- void key()
- {
- if((P30==0)&&(P31==0))
- {
- while(1)
- {
- Led(playdate);
- if((P30==0)&&(playdate<255)){delay1(80);playdate++;delay1(80);write=1;while(!P30);delay1(80);delay1(80);}
- if((P31==0)&&(playdate>0)){delay1(80);playdate--;delay1(80);write=1;while(!P31);delay1(80);delay1(80);}
- if(playdate<=0){playdate=0;delay1(80);}
- if(playdate>=255){playdate=255;delay1(80);}
- if(write==1)
- {
- write=0;
- IapEraseSector(1); //擦除扇區
- IapProgramByte(1,playdate);//寫入數據
- }
- }
- }
- }
- /********************************************************************
- 主函數
- *********************************************************************/
- void main()
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼 所有資料51hei提供下載:
GYJ-0069_無線單路可編程遙控帶數碼管延時模塊DXP.rar
(478.74 KB, 下載次數: 56)
2018-2-24 13:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
GYJ-0069_無線單路可編程遙控帶數碼管延時模塊原理圖及PCB圖.pdf
(379.47 KB, 下載次數: 45)
2018-2-24 13:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
GYJ-0069_模擬量輸入數字量顯示可編程模塊產品使用手冊.doc
(2.22 MB, 下載次數: 38)
2018-2-24 13:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
測試程序(成功).rar
(39.09 KB, 下載次數: 44)
2018-2-24 13:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|