|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
智能温控器单片机源程序 热敏电阻+ADC0809检测 Proteus仿真
; F. s8 f( Y' } h
+ \& G- X1 I- u! o0 J
9 z$ _, h. Y+ V6 K/ O. c* G' a51单片机做的智能温控器设计:ADC0809,proteus与程序,用一个可变电阻代替热敏电阻来实现仿真控制.1 {8 t* j% t% |% A0 q$ R& K6 ]- |+ x- n' N
51单片机源程序:
& v4 P0 h9 P y) P/ G: u( ]//设计要求:智能温控设5 W& v. M* B) T! ^# r$ t, ~, P
//用ADC0809检测温度,如果大于设定温度则断开回路,小于
8 D9 o% l4 v* q K; a: c//则进行加热,等于设定温度则保持不变0 t) j' L2 W& l ^+ F: ?8 h* i' e# }
//其中分别用数码管显示设定温度与实际温度1 y j- f& T, f6 R$ P( o
//用两个按键进行加减设定温度
" q$ k K( T* E f' W9 ?//收获ADC0809高位应该与单片机低位连接) w" w& R: I! x, N7 O
//在读取温度时必须先将P1口复位为1,不然会发生短路现象
& V! U( I& g! u7 O8 B8 n( [#include<reg51.h>, T1 V# p' g& v8 X$ Y, L
#include<intrins.h>, q! _/ ?3 s) J- q# w
#define Duan P0
% L' p V( W: w v, W6 H
6 _# Y( h/ _0 v! m5 p, {
/ s8 x( s+ Y1 I( Q1 ^& m, dsbit wei1=P2^0;//数码管选通
, I2 `) f% s! H% m3 A) psbit wei2=P2^1;! T9 T) }; N0 o T, }* K( R
sbit wei3=P2^2;
, p+ l i ?" e: B" [+ Gsbit wei4=P2^3;- ^. X& b u- ^2 r
sbit Relay=P2^4;//控制电路继电器闭合,使加热
& V; R0 M% i' b8 ~' O( }% xsbit Start=P2^5;//AD0809开始转化端口
: s* X) x# Q$ x7 l. @2 S; l. Nsbit EOC=P2^6; //ADC0809转化标志口. z$ p2 P( x2 T: y
void System_Init(); //系统初始化7 v7 Y& G4 L C+ P! b% e/ K
unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段位
4 ~1 @' z; |' P! E( d0 J0 @char shezhi=50;
/ }$ U8 T/ w8 o. u. Z; iint val;//转化值
/ r/ x# D/ o( R# Qchar i=0;
9 t% V+ \% }( }. }+ n" o9 w8 \void delay1ms(void) //误差 0us# y+ [, C; U. r
{
- ]% d. I2 L- N unsigned char a,b,c;" H' I, }+ M* [, o
for(c=1;c>0;c--): } \9 D6 ~7 u0 V& @
for(b=142;b>0;b--)
+ D' g2 p2 K b4 Y for(a=2;a>0;a--);
$ h$ e5 O9 r [& Z3 N}
2 P2 ^5 \& x3 m2 B/ Z, P
5 n! |; B9 v0 I0 a
, K5 m. L, @! p# W/ @" l4 ^# }void main()
) o( C' N0 [+ `: i: Z{
% x+ e' A2 m( R' ~ System_Init();" W+ }) M; R6 A1 a: i' V- ]
while(1)
" {# Z. r# D. O3 u! N {, K& S5 o9 @; i+ {
P1=0xff;) T: Q. U2 C0 [1 j. i
Start=0;
* o V7 j5 a; d& L& H Start=1; //开始转化- x9 @$ `/ u" S/ p5 r$ p
_nop_();$ I! @. |0 l' J, j
Start=0; 4 Z/ T. `! U$ x/ s
_nop_();
3 m, l* `3 S3 W2 L+ m7 m- P while(!EOC); //转化结束* q, m0 S5 J+ g* {1 @0 T- y; R
val=(P1*100/256); //量程转化0 }7 i8 N# \1 P
if(val>shezhi)//是否继续加热
, m- e# D3 N' Z+ M" X$ y8 k( G Relay=0;+ N" d( E& Z. p
else9 l! ~! i% T( L# f$ _' z
Relay=1;
j6 v+ O! x* N6 \ }
+ T( `0 A( x+ f}
) ?) A! J; @: Q0 t- Svoid System_Init()+ M- J& k7 o' k8 r
{ `7 L r( X5 h
TMOD=0x01;
' r! [. }' Y: Y. v% Q( Y# u: u EA=1;" }+ G1 M3 B- f* U- W& e; a% e" {
ET0=1;
/ I1 g8 G" | M+ X8 y0 B; i6 I# e TH0=(65535-5000)/256;
+ Q7 P# h5 `/ x- Z# i0 v# H TL0=(65535-5000)%256;
7 M* u2 V. T# P& y% ` TR0=1;
3 \8 \, k! n g* l2 F4 r9 r9 V# b; w EX0=1;9 g' w0 C4 g; B _; A5 U" Q& W7 D
EX1=1;% U( m' E; c% B8 g
0 t, [& e2 \* J: V2 @
1 i& d/ _+ I; ?# ]4 Q' U7 b1 H
+ Z8 N: ]' ^5 J& B0 K( t…………限于本文篇幅 余下代码请下载附件…………. w, O. A2 n' D& P+ P# ]& H H
全部资料下载(仿真工程文件和源码):% @ Z! n% y4 M2 G1 }! b+ y
4 S, x' r: G+ Q+ y5 C" a; i/ j
# `2 H1 b: K1 [) s |
|