找回密码
 注册
关于网站域名变更的通知
查看: 259|回复: 1
打印 上一主题 下一主题

酸碱度ph传感器 单片机源程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-3 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
酸碱度ph传感器 单片机源程序
! C. g  @  ^$ _! I, K3 U  B9 z1 \3 T, Q/ B: B3 q

; s: n+ o$ s0 q$ x! f+ H
分享一个测试酸碱度ph传感器的单片机源程序
$ N; U; _8 `5 Z" n6 b 5 k2 @8 z# y6 }0 i; c

0 ?% l0 j6 m7 R  D2 @单片机源程序:
/********************************************************************
8 T' B( g: m6 j2 k9 G                           龙戈电子
4 T7 b9 S' M, E( S5 k' o*********************************************************************/
" n* Q: Q: e. I5 V( i" u/ Z" ?#include <reg52.h>             //头文件
& L/ f/ H. B1 `9 x( ^0 E#define uchar unsigned char           //宏定义无符号字符型% M' j8 B' ^+ v' K* M
#define uint  unsigned  int           //宏定义无符号整型
7 H& d) P1 X+ R9 X& I8 r2 e  ^code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟/ @( X4 v5 v, G
uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端                                                                 //位控制码
! z. d1 f1 q. Wsbit ST=P3^0;   //A/D启动转换信号( ]  W. `( @) q- Z' y% c
sbit OE=P3^1;   //数据输出允许信号
2 j; a3 w% H, M- Wsbit EOC=P3^2;  //A/D转换结束信号- v3 z2 X( h8 P$ l2 T& P
sbit CLK=P3^3;  //时钟脉冲  
2 h2 X: c, p8 \% suint z,x,c,v,AD0809, date;        //定义数据类型
* C* L& P' l# z' i1 D- g4 e, W/******************************************************************
: c& H1 U7 i$ |: |延时函数
/ |0 M) }; K: g7 W* P2 u******************************************************************/5 A1 s) X, K& u9 e
void delay(uchar t)
6 ~& n- H1 J0 T- S{
4 I! ]! ]( y/ P! D  uchar i,j;' k8 H- n. L' h8 }$ r
   for(i=0;i<t;i++)# J& m; ?" e5 G" D, \' g+ P+ z
   {
' I' |7 d: K& M+ c, O! |$ b! N            for(j=13;j>0;j--);
! e2 a" A' ~: x8 q. }3 [         { ;+ T: X% e6 T+ A0 Y, b+ [
         }
2 X8 N1 O$ V- \* T4 q   }' q8 b2 t5 v9 m/ f9 k
}- n& O, X1 Z1 l/ w: }& J$ S
/**********************************************************************
4 J2 _8 {" {$ U                数码管动态扫描$ w( c0 g( o, [  s8 P8 X  E" a4 D
*********************************************************************/$ c  \. p9 l& ~. H5 E
void xianshi() //显示函数4 Q" ^" G7 g6 z" _, |6 N5 g
{
: a1 A" n, X. a5 nuint z,x,c,v;$ O2 g( V0 M7 E) U) D
  z=date/1000;                         //求千位- i$ t+ r0 d6 \, d7 ]
  x=date%1000/100;                 //求百位
- I; C! {# R. o; t8 v  c=date%100/10;                 //求十位
+ S2 S" u) y3 h1 ^% _8 H  v=date%10;                         //求个位
9 T9 A+ H( e4 g9 C% e2 W  b" q. ?
3 J- o8 M  @) M0 W2 r/ o      P2=0XFF;! i/ N4 `/ e8 ~) K# t- V+ |( Z
          P0=seg7code[z]&0x7f;
. m" E- p& W% x3 y) Q* T, \, R2 q7 A          P2=wei[0];
2 ^5 o1 G1 P' u- N; ?1 `. l* S          delay(80);
  x$ `7 z; T/ R* i  W: k          P2=0XFF;  
  x4 q" p7 J/ ]' X' f      P0=seg7code[x];* L/ n7 v3 k+ b- z) B
          P2=wei[1];5 Z7 v$ A4 j4 `- ~+ q1 k
          delay(80);
3 ?7 o) \- v: H: `) h* h          P2=0XFF;  
' q9 I$ }7 _: M7 b( F" ~             P0=seg7code[c];8 X8 R7 x/ L8 N$ P8 W
          P2=wei[2];
+ o6 K; D0 x5 `+ v: T/ I          delay(80);! A" O. R; X( @6 Y/ k7 C2 r
          P2=0XFF;  
! r% U$ [, k( E( U; h! C      P0=seg7code[v];( K8 _' [. r2 L( m( s* v- l
          P2=wei[3];- c& S2 [. }, }: S2 U
          delay(80); + J+ z  q2 U4 `( v
          P2=0XFF;
! Y% l1 J( L; ?4 u  }
- Y# A6 |  D9 J- g /*************************************************************************
; l" L0 `& g" {! t) W/ S: a  l                                CLK振荡信号        
# t: {! Z/ e8 {" V' Q" {8 \0 _**************************************************************************/
9 v; L0 A  z- Q- ]6 D% U( F8 P4 g" ~void timer0( ) interrupt 1 //定时器0工作方式1
! W' V' {1 `  `{( u( h3 H8 H& t8 j: \/ {4 z! c

  m0 m& F, q$ k  U+ v# ^9 ?8 p, [3 {$ xTH0=(65536-2)/256;          //重装计数初值* a. T2 g+ Q+ e/ k1 P9 e
TL0=(65536-2)%256;          //重装计数初值% a: g" s6 u. \/ k; ^" Y
CLK=!CLK;                          //取反
. T% X7 A$ X0 H# f  Q5 @6 O/ v; S}
* b# a: l8 E/ ], v
- \2 B) A7 v1 ~8 @: t /*************************************************************************
2 E, e0 M9 W5 m0 g# t! m                                主函数        
+ {9 B9 s/ U, E8 _**************************************************************************/8 [* ]% p, n: E+ x- p/ a/ C
void main()
$ L# y8 u" W( a) T( ]5 M1 t+ `{ , c( g7 r' G# a
TMOD=0X01;                          //定时器中断0
7 ^3 o3 C( U# ]+ g7 J- K- o
  j5 V3 B( r) C, u* H. `CLK=0;                                  //脉冲信号初始值为04 E0 m& {5 v& E7 s; I; _3 U5 H
TH0=(65536-2)/256;          //定时时间高八位初值; Q6 M5 W  L/ Q$ T. f5 e, Y% m: h, t
TL0=(65536-2)%256;          //定时时间低八位初值
$ F* s9 M% J% r9 |) C9 A. m" K9 L4 jEA=1;                                  //开CPU中断8 [# e2 X7 O+ X$ ]
ET0=1;                                  //开T/C0中断
8 F6 k8 @+ ~, }# W# gTR0=1;
& B; D" H" F1 k while(1)                           //无限循环
+ f3 A& j' u& l1 K        {# @1 G& z& B5 o( S: p" C% l7 y! Z0 A
        ST=0;                                //使采集信号为低
. @4 H9 C6 |  m# V: y        ST=1;                                //开始数据转换( @/ ~) R' J2 k2 R( `; u
        ST=0;                                //停止数据转换
7 q" K) S/ f( q7 ]( p/ x+ j( P" h/ Y        while(!EOC);                //等待数据转换完毕
4 l- p! C5 Y0 t        OE=1;                                //允许数据输出信号
- t) ^! h% [* C6 @' ~, d        AD0809=P1;                    //读取数据: j" S# H5 u* E, p+ Y& X
        OE=0;                                //关闭数据输出允许信号9 F# C% P$ B6 q9 L% M
        if(AD0809>=251)                //电压显示不能超过5V
% I  B: |8 r1 w' q. T        AD0809=250;3 |3 c: ]$ z0 `+ C' O
        date=AD0809*20;                //数码管显示的数据值,其中20为采集数据的毫安值$ x  m: v* o- u1 x; x. h
1 w! d8 H% c& N" v" Z' s: N( D
+ ?8 ~" l3 P, i6 I' d9 ?
…………限于本文篇幅 余下代码请从论坛下载附件…………3 n) x0 L1 I( }: e1 n1 Y: e
游客,如果您要查看本帖隐藏内容请回复

- ^/ _3 r1 r/ I# c! z/ M3 C( C  x' m

该用户从未签到

2#
发表于 2018-12-3 10:11 | 只看该作者
不错不错 谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-22 06:57 , Processed in 0.109375 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表