|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
智能温控器单片机源程序 热敏电阻+ADC0809检测 Proteus仿真
/ t8 U) y. p- W
" q3 v8 a- O# C; S: V4 x' i
# N! M. L0 A r/ C. ~4 W5 }- V51单片机做的智能温控器设计:ADC0809,proteus与程序,用一个可变电阻代替热敏电阻来实现仿真控制.
( I; A+ F' s1 y; F8 T: A51单片机源程序:
! V; h& E, i8 K5 o//设计要求:智能温控设
' c! p" L( ~8 t//用ADC0809检测温度,如果大于设定温度则断开回路,小于
9 [3 |, A5 r$ A5 W//则进行加热,等于设定温度则保持不变
, g* w1 l) K/ w6 z( w//其中分别用数码管显示设定温度与实际温度
( o! Q( i% v6 @4 s0 E9 d//用两个按键进行加减设定温度% r& M4 {5 y. b+ S
//收获ADC0809高位应该与单片机低位连接
) i& [- h& [5 ]7 {3 l1 s# t//在读取温度时必须先将P1口复位为1,不然会发生短路现象
! L# P9 P/ s3 h: w$ q( N#include<reg51.h>
# \- w5 H" I |9 C, ]% g0 B9 t#include<intrins.h>
7 H: Y) e, g" p- a1 C#define Duan P0- e% S; z5 L- R: _+ k' u" o
. x2 W+ S* x0 O# k. r
/ J& A7 f, T6 X" ~, E0 b; Y; t" lsbit wei1=P2^0;//数码管选通. d% J+ r- R# L
sbit wei2=P2^1;. E7 z+ i* V" v6 H5 X8 i# ^* S
sbit wei3=P2^2;
4 j4 C2 d9 R9 w3 t) L* i0 Zsbit wei4=P2^3;
) S5 U9 x8 Q" Q. Ssbit Relay=P2^4;//控制电路继电器闭合,使加热& X. L7 n3 H d; H! W; Q
sbit Start=P2^5;//AD0809开始转化端口% h% x8 w+ d3 n9 s4 B$ Q
sbit EOC=P2^6; //ADC0809转化标志口
9 H: |0 U0 R' I7 _' avoid System_Init(); //系统初始化
. ^* t* G- |: Y' }! c) i) hunsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段位
; r2 R0 |# Q$ X- [) e5 F. t1 Zchar shezhi=50;
1 _8 m. @! c/ }' [6 V) \: {( Aint val;//转化值( ^) i! V8 _9 S. k* T
char i=0;
3 j" K4 Z" _/ p" J( K. c6 _void delay1ms(void) //误差 0us
3 T: l+ i: n# L6 \{
2 j9 H6 o; c' H" D: ~1 X unsigned char a,b,c;$ x& m) ?* M8 J' }
for(c=1;c>0;c--)7 X) d1 t, N& Q4 z: c& b4 n
for(b=142;b>0;b--)
8 ]* s8 E) W8 n" [* h for(a=2;a>0;a--);
# I: }; s3 P8 b" x* c}
3 m1 Q5 [5 k" u W8 b. t# C T
4 K B* Q" o3 H. ~! E7 x% i% Q5 q
8 r4 R' ^0 d! A Z( y+ zvoid main(). V. `/ T9 |6 j( p- Y7 ^
{, N" O" ?/ P8 B0 @; I0 x3 l! o
System_Init();
) o0 p) ^& r' x/ v7 m/ J7 ^: l+ F while(1)
5 ~. b, J$ Q2 [6 t% E- b/ F {% l6 h# c4 v8 _. z( Y6 Z
P1=0xff;( J# T8 i7 `8 }9 Q1 w2 h8 D7 `7 K! x
Start=0;* F, }+ \% e8 D3 \
Start=1; //开始转化
( n6 b( c+ ~8 m7 z% e2 W$ H% W+ _( ? _nop_();
+ e! J, e/ z& X2 L Start=0;
. s9 R0 J) y! {$ I$ l _nop_();
/ d2 \8 ]; e8 ~6 w) W while(!EOC); //转化结束
0 `. v9 d8 {8 i( t# p# `* Q val=(P1*100/256); //量程转化; K: f/ p' y0 e9 v2 V, [9 s
if(val>shezhi)//是否继续加热- C' L: f! I) C B
Relay=0;
* V+ F; v* t0 T, V1 x else. K" K- K: v) M2 h7 x* y7 ?3 p
Relay=1;
$ J# ]4 L* ?* W }
+ _; a3 N7 D7 C. t( ?3 p! ]1 ~}
. `- i( p( J" M3 Z" H2 j* Cvoid System_Init()+ R* k+ Z$ O3 J0 T
{, t; ~. ]6 r8 v" r- N
TMOD=0x01;* k3 C a2 I5 y; Z
EA=1;
5 z7 Q3 C3 M& ]6 b ET0=1;* H& {: T( d* [$ g# b8 }# ]& Y
TH0=(65535-5000)/256;
- C. t8 @) Y# l. e TL0=(65535-5000)%256;
. f+ F' {; j0 W6 i; u! m* | TR0=1;6 X9 J8 \0 `, u% t
EX0=1;5 H% v6 y1 b4 M; g: _, N0 z
EX1=1;' F" [5 k6 B& `, c# G
! Z# V) P9 |. y0 t& e' Q7 o
: ^3 t( X' }' t7 T$ f3 q( q- |) a3 l |/ t
…………限于本文篇幅 余下代码请下载附件…………4 n7 Z- j+ g* y) P3 X) c
全部资料下载(仿真工程文件和源码):
" G5 O6 V" e* L6 j$ |, p V( F! _$ j) I3 s; N! G
' w9 b& s$ L9 b7 c0 \3 ? |
|