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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
酸碱度ph传感器 单片机源程序2 M5 b8 H0 g" ~& N, T

4 f; v7 ?; u+ I, f8 b+ N/ }
: ~: M% v3 M+ A8 G
分享一个测试酸碱度ph传感器的单片机源程序
1 s5 S: l+ J* L0 z- z
! v7 g- p' e3 J* o
- @% q; a8 R2 g" l- b4 m0 V+ a单片机源程序:
/********************************************************************
) j7 b' N6 a( X- Y9 ^/ i                           龙戈电子- {3 r8 `) j3 n
*********************************************************************/: }5 d( {1 c* d" U# h9 m
#include <reg52.h>             //头文件! C: B2 c. z! X& M) T: k5 \
#define uchar unsigned char           //宏定义无符号字符型
3 P5 E4 Q& g3 z#define uint  unsigned  int           //宏定义无符号整型) \. j# \6 x7 a$ R# [, d. k( J
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟, t( q0 s- U1 Y2 E+ ~$ c7 _1 e* @
uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端                                                                 //位控制码
6 x4 Y% l  I- D, F3 Z& O# fsbit ST=P3^0;   //A/D启动转换信号
& W; A( n( K6 C$ E9 x, fsbit OE=P3^1;   //数据输出允许信号$ P" Q1 i5 a6 D, ^
sbit EOC=P3^2;  //A/D转换结束信号; q+ _! _: D& y: u" F7 d5 G4 Z
sbit CLK=P3^3;  //时钟脉冲  
7 A: r' Q0 B2 ?6 m/ Huint z,x,c,v,AD0809, date;        //定义数据类型+ E8 Q& i, ]8 h1 ~
/******************************************************************0 T" r7 d( \& J0 ^4 q5 H" e- a/ }
延时函数6 ?# |' q7 Z7 S8 h4 H
******************************************************************/" R. t" n! c$ O& {: q# ~* B
void delay(uchar t)
2 a* Q8 v" R9 k- W6 U! G{
5 K2 T+ _+ f) |% }3 I  N  uchar i,j;' r! Z2 |! h4 V+ k
   for(i=0;i<t;i++)
& g; ^. D, u8 y" _! ]! N( g   {
2 h5 k+ ?. n* s9 i! A" t# z            for(j=13;j>0;j--);
& y% j' G+ S1 k, I         { ;4 {/ b4 C& z/ O, M; H, O% @) U. F
         }8 S" R, j+ E8 H! C6 _6 ^( |
   }2 b  K$ E" p+ {& V" q
}2 {7 r0 H( P' a, [
/**********************************************************************8 s( F# L/ e% g; D0 i
                数码管动态扫描; U# v3 v3 Y! N' x* p) }7 u# D
*********************************************************************/
, ?8 L/ q# j, z- ^9 @: v. Nvoid xianshi() //显示函数
0 G4 m6 i" _- m" B2 V { 2 T0 S% H+ g6 b* X# D
uint z,x,c,v;1 P0 C5 V% C$ ~' _
  z=date/1000;                         //求千位
+ T( j. U) L" t  x=date%1000/100;                 //求百位7 L+ o, P+ B  X' m. ?( H+ R! C3 L
  c=date%100/10;                 //求十位3 f; V: M- ~: o! b( _2 `2 T) t4 o/ U6 V
  v=date%10;                         //求个位
! N0 H! q5 k5 b+ |+ I. X3 X4 q- g9 M8 j% [, g) v
      P2=0XFF;" Z' g' E* [" g) K. m& u5 H
          P0=seg7code[z]&0x7f;
& z% ?, T: h+ C          P2=wei[0];
$ y) V: [# }1 V% W/ n/ d          delay(80);- u1 D. y6 P* M# G. y( [
          P2=0XFF;  0 `1 f0 A/ q# F! J! z$ y
      P0=seg7code[x];' t6 {/ n: b1 l$ T
          P2=wei[1];
' A7 e" i+ Y% ~0 f          delay(80);: a2 W: l. ^' E: k0 q; K( i
          P2=0XFF;  
5 ?; o* [5 z. q. v% Y2 x: i8 p             P0=seg7code[c];
3 l+ W) P' j( I3 Q' ]# D7 O& q# p$ n) I          P2=wei[2];
+ p$ p  h& @2 @2 I+ g  \- W, i8 V. x          delay(80);, L! s% R% C0 v
          P2=0XFF;  / J' b; @* v: w5 o* d2 W
      P0=seg7code[v];
" u! z. ^0 w! g" C          P2=wei[3];" N& J' F6 v: |8 n
          delay(80); 5 m% ^* M5 K+ Y/ F5 v7 t  K
          P2=0XFF;( M, V" E1 f$ T1 G
  }
" e" |' _4 P& U /*************************************************************************  J1 p# `8 v8 G9 u. `
                                CLK振荡信号        7 j8 L( j$ G! n. n3 O% N0 E
**************************************************************************/( c; X, q$ s! `
void timer0( ) interrupt 1 //定时器0工作方式1% k7 a  B) M9 k) u/ l9 k# h
{
( a6 k0 w+ o& ]/ j/ a4 a4 t
5 H) x0 ], h9 ITH0=(65536-2)/256;          //重装计数初值
4 C, z( `* Z5 L& [4 L7 |/ ?: k( l9 F, xTL0=(65536-2)%256;          //重装计数初值
$ e# J% u4 g+ K1 |$ E  FCLK=!CLK;                          //取反& n7 C5 v9 z, J. K2 U
}3 b9 J7 i5 I* F4 Y* G
! v# d' P/ W$ ]) \$ r
/*************************************************************************
' L+ P4 U/ e1 @/ I% c) F                                主函数        : q( x2 T# b  I+ C+ w/ i
**************************************************************************/; ?3 u9 U' |8 N  z+ `% q) F) J; v
void main()) M  M2 z3 Z% W  R! x: [( {; [
{ 8 x6 f4 c8 U2 g4 O: B% [! Z
TMOD=0X01;                          //定时器中断0
, R! P7 w" B  P2 A+ Y5 c+ ]$ i: ?- O- h* q# n* [
CLK=0;                                  //脉冲信号初始值为0
% [/ e( R$ p0 k! {& aTH0=(65536-2)/256;          //定时时间高八位初值7 B4 g& A, _, G# O8 g5 G6 i: t
TL0=(65536-2)%256;          //定时时间低八位初值
3 i! g( ~0 H1 A1 Q$ @/ ?5 pEA=1;                                  //开CPU中断/ _/ ]  v$ j( E& Q/ [
ET0=1;                                  //开T/C0中断( x: x! p, a, i; e$ n
TR0=1;, D- U* T$ o- \5 e
while(1)                           //无限循环9 c4 \% e' z+ K$ `' t4 r" B: R
        {0 q9 J$ z0 k: l2 T3 w0 N
        ST=0;                                //使采集信号为低: @! g) X% c& i+ ~5 U
        ST=1;                                //开始数据转换
  l2 s2 u6 K, z        ST=0;                                //停止数据转换/ b+ @$ f) Q0 ~) k" i( n$ S: f
        while(!EOC);                //等待数据转换完毕: @+ c; z0 t) o7 k' z
        OE=1;                                //允许数据输出信号+ U4 J2 V" ?/ z. j
        AD0809=P1;                    //读取数据
5 s1 y5 L3 o7 V, Z) |        OE=0;                                //关闭数据输出允许信号
8 ^+ j  j- K. Z0 g8 W        if(AD0809>=251)                //电压显示不能超过5V
( t3 ^0 |/ u4 v# l) V9 B; q# e5 m9 G        AD0809=250;0 A7 g& W7 p" ]+ k
        date=AD0809*20;                //数码管显示的数据值,其中20为采集数据的毫安值
6 i& v- e3 e$ Z1 L3 y. [) _* Q- h9 C0 J3 h4 i9 x
2 W! Z1 F/ g( {# D5 K- g. Z7 c1 g
…………限于本文篇幅 余下代码请从论坛下载附件…………
* [: g) X. {9 ^
游客,如果您要查看本帖隐藏内容请回复
8 V) l; m' F5 u2 W8 H  ]$ _' E

" ?& k+ m' i5 o4 F0 j

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-11 14:48 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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