基于STC15单片机的智能流量计 - 图文(6)
if(i==20 ) { i=0;
miao++; yx++;
if(miao==g) {miao=0; b=0;} } }
void dingshichu() { TMOD = 0x10; //设置定时器模式 TL1 = 0xB0; //设置定时初值 TH1 = 0x3C; //设置定时初值 ET1 = 1; //清除TF1标志 TR1 = 1; //定时器1开始计时 EA=1; }
//休眠时间
设置子程序
//******************************************************************************/
#ifndef __Set_H #define __Set_H #include \#include \sbit k2=P4^5; //设置模式选择 sbit k3=P4^4; //加数
unsigned int c=0; //设置模式标记位
unsigned int d=0; //瞬时流量小数点前两位 unsigned int e=0; //瞬时流量小数点后一位 unsigned int f=0; //unsigned int g; //休眠时间 unsigned int shunxiaoshu=0; //瞬时小数
unsigned int leixiaoshu=0; //累计小数
unsigned int xiumianshijian=1;
void shezhianjian()
{ if(k2 == 0 & b==1) //低电平有效 {
delay_ms(80); //检测到按键 if(k2 == 0) {
24
while(k2); //直到松开按键 c++;
if (c!=0){
while(++f==1) {OLED_Clear();} } }}}
void jiashuanjian()
{ if(k3 == 0 & b==1) //低电平有效 {
delay_ms(80); //检测到按键 if(k3 == 0)
{ while(k3); //直到松开按键 if(c==1)
{ if(++shunxiaoshu==999)
{shunxiaoshu=0; } }
else if(c==2) { if(++leixiaoshu==999) {leixiaoshu=0; } }
else if(c==3) { if(++xiumianshijian==10) {xiumianshijian=1;} } }}}
void shezhixianshi() { miao=0;
OLED_ShowCHinese(30,0,11);//设 OLED_ShowCHinese(48,0,12);//置 OLED_ShowCHinese(66,0,13);//模 OLED_ShowCHinese(84,0,14);//式 if (c==1){ f=0; jiashuanjian(); OLED_ShowCHinese(0,4,19);//仪 OLED_ShowCHinese(16,4,20);//表 OLED_ShowCHinese(31,4,21);//常 OLED_ShowCHinese(47,4,22);//数 两个字符间加18
OLED_ShowString(60,4,\: 两列之间加2
25
////
OLED_ShowNum(68,4,shunxiaoshu/100,1,16); OLED_ShowNum(76,4,shunxiaoshu/10,1,16); OLED_ShowNum(84,4,shunxiaoshu,1,16); OLED_ShowCHinese(92,4,27);//个 OLED_ShowString(107,4,\ } else if (c==2){ f=0; jiashuanjian(); OLED_ShowCHinese(0,4,23);//累 OLED_ShowCHinese(15,4,24);//计 OLED_ShowCHinese(30,4,25);//流 OLED_ShowCHinese(45,4,26);//量 OLED_ShowString(60,4,\:
OLED_ShowNum(68,4,leixiaoshu/100,1,16); OLED_ShowNum(76,4,leixiaoshu/10,1,16); OLED_ShowNum(84,4,leixiaoshu,1,16); } else if (c==3){ f=0;
jiashuanjian() ; OLED_ShowCHinese(0,4,15);//休 OLED_ShowCHinese(18,4,16);//眠 OLED_ShowCHinese(36,4,17);//时 OLED_ShowCHinese(54,4,18);//间 OLED_ShowString(72,4,\:
OLED_ShowNum(90,4,xiumianshijian,1,16); OLED_ShowString(102,4,\ } else if(c==4){c=0;} }
AD子程序
//******************************************************************************/
#ifndef __AD_H #define __AD_H
#include
#include
#define uint unsigned int //宏定义变量uint为无符号整型数据(0-65535)
#define uchar unsigned char //宏定义变量uchar为无符号字符型数据(0-255)
#define ADC_POWER 0x80 //ADC power control dit (宏定义ADC电源控制
26
位)1000 0000
#define ADC_FLAG 0x10 //ADC complete flag (宏定义ADC完成标志位) 0001 0000
#define ADC_START 0x08 //ADC start control dit (宏定义ADC启动控制位)0000 1000
#define ADC_SPEEDLL 0x00 //420 clocks (宏定义420时钟)速度控制 0000 0000
#define ADC_SPEEDL 0x20 //280 clocks (宏定义280时钟)速度控制 0001 0000
#define ADC_SPEEDH 0x40 //140 clocks (宏定义140时钟)速度控制 0010 0000
#define ADC_SPEEDHH 0x60 //070 clocks (宏定义70时钟)速度控制 0011 0000
void InitADC(); //初始化ADC子程序声明 uchar zhADC(uchar ch); //ADC 转换子程序声明 void delayms(uint k); //1ms延时子程序声明
void SR(); //执行AD转换结果子程序声明
unsigned char j;
/*-------------------------------------------------- 主函数(无返回值,无参数)
---------------------------------------------------*/ void AD() {
P1M1 = 0x01; //P1.0高阻 P1.1强推挽:0000 0001 ADC输入高阻、继电器强上拉
P1M0 = 0x02; //P1.0高阻 P1.1强推挽:0000 0010 ADC输入高阻、继电器强上拉
zhADC(5);
InitADC(); //Init ADC sfr (初始化ADC SFR) }
/*---------------------------- 初始化ADC
-----------------------------*/ void InitADC() {
P1ASF=0x20; //设置P1.0端口作为模拟输入
ADC_RES=0; //Clear previous result (清除以前的结果)
ADC_CONTR=ADC_POWER|ADC_SPEEDLL; //开启ACD电源、设置转换速度
delayms(1); //上电延时 }
27
/*----------------------------
Get ADC Result(获取ADC结果) -----------------------------*/
uchar zhADC(uchar ch) //zhADC(获取ADC结果) {
ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START; //启动转换 _nop_(); //4个时钟延时 _nop_(); _nop_(); _nop_();
while(!(ADC_CONTR & ADC_FLAG)); //wait complete flag(等待完成标志)
ADC_CONTR &=~ADC_FLAG; //Close ADC(关闭ADC) …… 此处隐藏:2402字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




