标题:
单片机智能燃气表proteus仿真与源程序
[打印本页]
作者:
rainbow111
时间:
2018-4-18 10:42
标题:
单片机智能燃气表proteus仿真与源程序
智能气表程序仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(22.97 KB, 下载次数: 41)
下载附件
2018-4-18 16:33 上传
0.jpg
(44.09 KB, 下载次数: 51)
下载附件
2018-4-18 16:32 上传
单片机源程序如下:
#include<at89x52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#include"1602.h"
uchar temp_1[]={"Shengyu: "}; //显示第一行
uchar temp_2[]={" 000.0M3"}; //显示第2行
sbit k1=P1^0;//按键定义
sbit shuchu1=P3^7; //输出脚定义
sbit BZ=P3^0;//蜂鸣器
sbit led=P2^6;
sbit P17=P1^7;
uint zong;
uchar m;
uint M1;
bit flag;
uchar TEMP=11;
void key()// 按键检测
{
if(k1==0)//设置预置数加
{
delay(5);
if(k1==0)
{
zong+=10;
if(zong>=1000)
zong=1000;
while(k1==0);
}
}
}
void beep()// 报警检测
{
if(zong==0) //没流量了报警
{
m++;
if(m>=15)
{
m=0;
BZ=!BZ;
led=!led;
}
}
else
{
BZ=1;
led=1;
}
}
main()
{
EX0=1;//开外部中断0
PX0=1;// 外部中断0高优先级
IT0=1;//触发模式0= 电平 1=边沿触发
TMOD = 0x11;
ET1=1;
TH1 = (65535-50000)/256;
TL1 = (65535-50000)%256;
EA=1;
LCD_Initial(); //液晶初始化
while(1)
{
key();// 按键检测
temp_2[9]=zong/1000+0x30;//转换成液晶字符下同
temp_2[10]=zong/100%10+0x30;
temp_2[11]=zong/10%10+0x30;
temp_2[13]=zong%10+0x30;
if(flag) //正确数据总流量-0.1
{
flag=0;
if(zong>0)
zong-=1;
}
if(zong>0) //总气量>0 输出继电器
shuchu1=0;
else
shuchu1=1; //小于0 关闭继电器
beep();// 报警检测
GotoXY(0,0);//显示起始位置 Y=0,第一行,Y=1 第二行//显示第一行
Print(temp_1);// 内容
GotoXY(0,1);//显示起始位置 Y=0,第一行,Y=1 第二行//显示第一行
Print(temp_2);// 内容
}
}
void my_INT0(void) interrupt 0//外部中断0有信号 就进入中断
{
M1++; //进来的脉冲进行计数
TR1=1; //同时启动定时器
}
void timer1() interrupt 3 //定时器1中断
{
TH1 = (65535-50000)/256;
TL1 = (65535-50000)%256; //50MS中断到
if(M1==10)//看收到是否10个脉冲 是就正确
flag=1; //正确标识
M1=0;
TR1=0;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
智能气表.zip
(154.27 KB, 下载次数: 47)
2018-4-18 10:41 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
xsszb
时间:
2020-1-2 13:39
你这个的功能为啥看起来不怎么合适,下载之后发现很多不合适
作者:
haierzaifei11
时间:
2020-1-2 16:16
应该会有启发感觉不错的例子
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1