这个基于C51单片机的双路压力监测报警系统是做的程设计,已通过验收,没有bug,功能更完善,所附包含proteus仿真文件,源代码,使用说明,可以做一个不错的参考。
所完成功能为模拟电路输入测量两路压力值,量程范围0~100MPa,带有LED报警功能,可以自行设置上限,压力测量值分时显示。
使用说明:
1.开始仿真,压力上限初始值为99MPa;
2.点击按钮button(要使数码管全部清零),在键盘处输入上限值;
3.上限值修改成功,重新开始显示,显示第一路时左侧带有上限值标识,显示第二路时左侧没有标识;
4.当测量数值超过了所设定上限,二极管闪烁报警;
5.结束仿真。
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define a DWORD [0x40]
#define b DWORD [0x50]
/**************函数声明部分*************/
void jianpan1(void);
void jianpan2(void);
void DelayMS(uint x);
void int_CHANGE(uint y);
void Display1(void);
void Display2(void);
void beep(void);
uchar code ledtab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0~9共阴字型码
uchar data ledbuf[8]={0x6f,0x6f,0x73,0x48,0x00,0x00,0x00,0x00}; //初始显示P=(数据缓冲区)
sbit OE=P2^0;
sbit EOC=P2^1;
sbit ST=P2^2;
sbit CLK=P2^3;
sbit LE1=P2^4;
sbit LE2=P2^5;
sbit BUTTON=P2^6;
sbit BEEP=P2^7;
sbit r4=P1^7;
uchar Pre_KeyNo,KeyNo; //存储键值
uchar num1,num2,num; //存储报警上限值
void main() //主函数
{
uint i;
TMOD=0x02; //方式2,8位自动重装初值定时方式
TH0=0x14; //计数初值寄存器
TL0=0x00; //8位计数器
IE=0x82; //开总中断,并允许T0中断
TR0=1; //启动计数
P2=0x4f; //端口初始化