|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
智能温控器单片机源程序 热敏电阻+ADC0809检测 Proteus仿真6 Z9 n: }5 u; G' i# ~
* O% f# [, q; p) }6 I$ L6 p0 X5 Z/ A
51单片机做的智能温控器设计:ADC0809,proteus与程序,用一个可变电阻代替热敏电阻来实现仿真控制.
7 j2 o2 U4 z- O/ j: N: R9 t! G n51单片机源程序:- q4 c7 [7 {2 ?+ \4 B* A
//设计要求:智能温控设
) f/ Q( E2 I3 n1 ^* r W//用ADC0809检测温度,如果大于设定温度则断开回路,小于
7 Y; w# I( T0 t2 H//则进行加热,等于设定温度则保持不变' P/ V! {& Q7 H+ \% a# j7 j4 [! c1 x
//其中分别用数码管显示设定温度与实际温度
4 p5 e9 n! Q) s. u, {) o//用两个按键进行加减设定温度
: A4 l V0 d+ H: S0 v' |; U//收获ADC0809高位应该与单片机低位连接8 R. U5 k& i5 A7 V5 M. @$ m
//在读取温度时必须先将P1口复位为1,不然会发生短路现象
/ P" r: a1 f' N3 [$ J8 t& |#include<reg51.h>7 R" x- r N' G7 }2 i
#include<intrins.h>' n8 G1 {4 S5 D' N% g& d( y2 Q
#define Duan P0$ l: T! p2 s+ @ ^
7 L1 B: \ T5 F, U: D
) m0 n3 h( i! T7 p! i% Usbit wei1=P2^0;//数码管选通
9 N* e) |5 @( A, |/ wsbit wei2=P2^1;
C- g! d7 C7 J) N6 R2 a9 Y: i& tsbit wei3=P2^2;
6 l) S: S0 @7 f* W$ {: isbit wei4=P2^3;# Q/ N Y& m1 S' n4 t
sbit Relay=P2^4;//控制电路继电器闭合,使加热
6 |% u* g0 t! d( psbit Start=P2^5;//AD0809开始转化端口
+ m* A" w% e% ?. {sbit EOC=P2^6; //ADC0809转化标志口; m+ y, B! g( @) F% ]: ~
void System_Init(); //系统初始化, [& b; b7 G( e
unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段位9 Q3 W: Y- t% V" ~' [2 U
char shezhi=50;
1 L" s, ~) Q, b0 i W6 aint val;//转化值
; T, s5 C- a. c1 s+ c/ P) r3 _: |char i=0;) H7 U$ [& U$ o1 G* R2 a; f
void delay1ms(void) //误差 0us
/ z- Z/ I0 o# _2 R2 a& o5 e{0 U! `. v) H2 u0 h7 N6 A
unsigned char a,b,c;3 C" @- u% r3 L8 E2 c2 x0 w( U
for(c=1;c>0;c--)
; s( l1 T# R4 w6 ?" e6 { for(b=142;b>0;b--)3 l) L9 q8 e0 w j' `* B8 v
for(a=2;a>0;a--);
5 D" c; ^) \. b* T* `}/ y% M; R% O7 S
) v. w" Y9 \% I4 w( X. |1 `
0 q j; A! Z% O' o4 Tvoid main()( |2 v" Z% P, S
{
# X$ C$ m: C0 L# J System_Init();
- ~& p* a# b9 E1 A! y while(1)
' R4 h! r* z) x8 Q4 v3 Q# i& q& ] {$ u' ~2 |8 k6 m& L; R
P1=0xff;3 C' G4 F" \6 t2 t) W4 p+ E
Start=0;
( M/ v) P: m/ G7 R' h J% p" n Start=1; //开始转化
# m j. a- S2 z$ _! R6 q* P _nop_();1 x* `3 z5 \1 P4 Q" n' [3 L; p0 i
Start=0; ) H* O2 \+ E" Y3 u6 G
_nop_();
Z) Q4 g) Z4 Y1 T1 P while(!EOC); //转化结束4 l, r2 U/ G) @) @
val=(P1*100/256); //量程转化% m7 d! {0 x; s# P G1 G
if(val>shezhi)//是否继续加热
5 z9 J7 O" {- Z9 L) Q Relay=0;. @& K1 ^# b( C: e
else
: N2 h. w3 [- r* g Relay=1;) b2 X9 i" o9 j) e/ ?
}
3 |! V9 E" r" I& }}
6 I, \* `8 q0 {% o3 R1 zvoid System_Init()2 P7 R _$ }3 I! k$ w% u
{
8 L5 W7 K+ D7 `1 Z6 c) n TMOD=0x01;
/ i, g2 Q9 \" z$ t! Z EA=1;( h& \- F! ?2 x. N$ K. t6 h
ET0=1;
% d8 Y6 e- ?) W' R# Y" n3 k, t TH0=(65535-5000)/256;
4 ?$ F$ E" ^* I TL0=(65535-5000)%256;6 k! m# Z) T1 o5 Y1 c( h: u! \! |
TR0=1;
, c/ v9 t$ ], X. y0 g EX0=1;
: y. x. E7 v; ]7 Y H. p EX1=1;* Y3 f5 ^- b. g# F
8 S m7 L, r+ s% w! a7 h$ {' e. A D) {! U( ]: ?3 Q* h0 a3 y
% Q3 ]( y. D, x8 F, n…………限于本文篇幅 余下代码请下载附件…………% J8 E6 N( E, T0 I6 L
全部资料下载(仿真工程文件和源码):
3 Z$ b$ k4 c- ]2 v5 {8 A9 s' s7 F+ C3 W( X8 }$ {/ e
* X2 ~; s. i# c4 n# f! w
|
|