功能如下:
1、24VDC供电,输入端可识别4-20mA信号输入,可以根据用户任意设定电流值,进行继电器报警输出,输出形式常开+常闭;
2、用来实现高于某电流值继电器断开,当低于设定电流值继电器闭合,进而导通回路。
//#include #include<STC12C2052AD.h> //库文件 #include #define uchar unsigned char //宏定义字符型变量 #define uint unsigned int //宏定义整型变量 t /*声明 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口定义 ********************************************************************/ uchar s1=0; bit write=0; uint txian; uint ADdate; uchar txian1,dxian1; uchar T0RH=0,T0RL=0; uint ms=0; uchar A1,A2,A3,A4; uchar B1,B2; uchar C1,C2,C3,C4; bit bz=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; //继电器输出 bit ts=0; bit bz1=0; bit bz2=0; /******************************************************************** 定义 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 delay(uchar t) { uchar i,j; for(i=0;i for(j=130;j>0;j--); { ; } } } /******************************************************************** 显示函数 接通时间 *********************************************************************/ //void tong(uchar tdate) //显示函数 void tong() //显示函数 { C3=txian%100/10; C4=txian%10; P32=0;P33=0;P34=0;P35=0; P1=seg7code[0]; P32=1;P33=0;P34=0;P35=0; delay(80); P32=0;P33=0;P34=0;P35=0; P1=seg7code[0]; P32=0;P33=1;P34=0;P35=0; delay(80); P32=0;P33=0;P34=0;P35=0; P1=seg7code[C3]; P32=0;P33=0;P34=0;P35=1; delay(80); P32=0;P33=0;P34=0;P35=0; P1=seg7code[C4]; P32=0;P33=0;P34=1;P35=0; delay(80); P32=0;P33=0;P34=0;P35=0; } void tong1() //显示函数 { C3=A1%100/10; C4=A1%10; P32=0;P33=0;P34=0;P35=0; P1=seg7code[0]; P32=1;P33=0;P34=0;P35=0; delay(80); P32=0;P33=0;P34=0;P35=0; P1=seg7code[0]; P32=0;P33=1;P34=0;P35=0; delay(80); P32=0;P33=0;P34=0;P35=0; P1=seg7code[C3]; P32=0;P33=0;P34=0;P35=1; delay(80); P32=0;P33=0;P34=0;P35=0; P1=seg7code[C4]; P32=0;P33=0;P34=1;P35=0; delay(80); P32=0;P33=0;P34=0;P35=0; } /******************************************************************** AD转换初始化程序 *********************************************************************/ void InitADC() { P1 = P1M0 = P1M1 = 0xFf; //设置P1口为开漏模式,使用AD功能 ADC_DATA = 0; //AD数据寄存器清空 ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//打开AD电源,转换周期210 delay(80); //延时 } /******************************************************************** AD转换控制程序 *********************************************************************/ uchar GetADCResult(uchar px) //转换输出的数据 (PX为通道口) { ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//开始转换 _nop_(); //延时一个机器周期 _nop_(); //延时一个机器周期 _nop_(); //延时一个机器周期
上一篇:51单片机MPX4115压力传感器+ADC0832仿真课设程序
下一篇:单片机LCD12864无限扩展多级菜单源码
推荐阅读
史海拾趣
我发现一个窍门,在EAGLE的原理图编辑器或者PCB编辑器的命令框输入Run Designlink,就会弹出一个产品搜索工具,可以输入产品编号来搜索你要的产品有没有货,价格好多等等信息。但是可惜不能通过双击搜到的产品来直接在电路图中放元件,如果有这个功 ...… 查看全部问答∨ |
我用dsPIC30F2012做一个A/D转换,正参考电压接在Vref+上,负参考电压接在Vref-上,VCC经过滤波后接在了AVDD上,现在AVss不知如何处理,因为要求转换的电压是有负电压的,我能不能直接将AVss接地。A/D转换的参考电压选用的是Vref+和Vref-。请前辈高 ...… 查看全部问答∨ |
file -> new -> project -> platform builder for ce 6.0 输入工程名后,点击OK windows embedded ce 6.0 os design winzard next -> 选中一个BSP后点击next -> 选中 PDA device后点击next -> 一路next下去 ...… 查看全部问答∨ |
|
选择HSI做为主时钟,16MHz void CLK_Init(void) { CLK_DeInit(); CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); } //SPI初始化 void SPI_MyInit(void) { SPI_DeInit(); ...… 查看全部问答∨ |
|
------------------------------------------------------------------------------- Readme file for LaunchPadFirmwareUpdater2.0.exe LaunchPadFirmwareUpdater2.0.exe is a GUI based utility to update the emulator firmware of Texas Ins ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 新突破!超高速内存,为英特尔至强6性能核处理器加速
- 将vRAN站点整合至单服务器,助力运营商降低总体拥有成本
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?