|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料
1 J) z( p+ a3 i- x
! m& r8 w& b) w0 i( @% _
8 I. E) y! G ], B) U有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
+ x) C6 S4 k) _" x
' w. f3 E% ^7 q/ L+ t1 M% O" U2 v% k1 V+ c9 N% U3 w8 E1 @5 C
( t# }( h) K7 u. p5 |
% Z: d5 Q7 M- f( Z0 S+ a4 V! e
单片机源程序:
6 i! [4 G8 C# w2 [( i#include<stdio.h>- }7 Z! _3 ~5 T. A
#include<reg52.h>
' ?5 Q2 |: X' r' e/ B' T; G#include <absacc.h> O% [& c9 {; }; F6 ?+ ` e
#define PA XBYTE[0x8000]8 e: u" W/ _& @+ u& O' ?
#define PB XBYTE[0x8001]5 A$ _7 m$ L, |5 T4 m9 i$ o, @5 \
#define PC XBYTE[0x8002]$ {0 }' i1 H) \8 c" g) z
#define COM XBYTE[0x8003]' r7 e# G* V( p$ z
unsigned int data ledtable[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10},keytable[4][6]={{7,8,9,10,16,17},{4,5,6,11,18,19},{1,2,3,12,20,21},{0,15,14,13,22,23}};
9 H% B0 z a9 Q7 f- v& Lunsigned int i,t=0,time_num=0;
. a: \: ~$ I2 C. h2 Usbit light1=P1^0;
, g, F" g1 q2 b3 H, @2 d+ zsbit light2=P1^1; I1 r) l4 M! [; d
sbit light3=P1^2;) N' c4 s! y. s3 U E
sbit light4=P1^3;! q; G! f1 `8 S9 K
/*===================延迟子程序============*/
! b- L. i1 F; C4 r2 I2 Y( @: xvoid delay(void)
" q3 d. `# ^8 E; m; B{, S/ p9 Q3 n* n1 v' Y
unsigned char j,k;
" [# l1 m6 m% [4 s5 G for(j=20;j>0;j--). ~' |8 H8 w9 i6 w7 G( c
for(k=200;k>0;k--);
- s+ h+ o [4 v9 Q' Q# U1 X}) m$ Q% L9 q, Z+ g
/*===========数码管显示子程序===============*/
8 }! D) ^! m/ Y6 U* Dvoid ledplay(int b)5 Z, O; z6 m' x9 P T* F
{- \4 b0 ^" N: K7 p
unsigned int m,x[2];: R D8 S% W) M* \
for(i=0;i<2;i++)
- U* l: g/ a. O3 n {- q5 u. \5 n8 ^9 k4 ]
x=b%10;! Y. Z6 b2 D6 `! w
b=b/10;; _; I* w) n+ X) ]" _7 ?
} X7 F5 J& c3 q8 x$ I F) y: @0 N5 T
for(i=0;i<2;i++)
) h8 ^' v0 R% e) Y ?/ x {4 U6 E1 [- G" F5 i
x=ledtable[x];
& h }9 X. |, y }
; l3 B/ |! l' q4 [; U$ a m=0xfd;
, n7 ^3 h# T5 A/ S7 W# a for(i=2;i>0;i--)
% i$ L9 @6 P+ Q' F4 r) W7 G. V {- u. n# Q* K6 `2 \$ g$ `! X. [
PA=x[i-1];
' c1 ?1 }' t# H& x( k1 N PC=m;: e$ P$ u' z# H& D
delay();
! j8 \+ O/ Y3 k! ~& Z7 ` PC=0xff;. K+ r" Q, }" A5 k: J
PA=0xff;- _( T! ~5 W& ]4 T& B( L
m=(m>>1)|(0x80);5 {5 a/ P9 e p" z
}* ]8 D/ j8 v/ g! a* y% r
}
9 Y; L1 [2 ^/ l6 {/*=============测试按键===========*/
' s; L- N" ~0 F k$ uunsigned char testkey(void)
: [; p" q4 @% U5 t( n' x' W{
# b8 h2 e- [ u9 a1 y: u, F PC=0;
2 c% y7 T$ r$ @ ^6 l if((PB&0x0f)!=0x0f)
/ b0 e8 p5 ` L. ] return(1);& {) T) w+ M; H. G x8 t/ U1 d
else
: u) D. C' y1 Z return(0);
" M% y3 g3 m% {* q& F0 A}
6 N) d4 G' R, f+ n* V8 m1 g
( D' R: j" X s# Z/*===============得到键值==========*/
2 R0 ^3 |5 E3 Munsigned int getkey(void)
+ z- Q% R" b" P$ ?! d{
/ e& H3 N J% m9 K! _1 f unsigned int x,y,m;
0 D# P( S% G( X+ o9 e% i2 `- h m=0xfe;, e* O2 F: ?! w$ O
PC=m;
7 r) ?7 m2 }6 i7 g while((PB&0x0f)==0x0f) //键盘扫描- @$ M' c7 Q$ {) m( M3 w
{: f2 y! `. i- a
m=(m<<1)|0x01;3 ~1 T3 l8 [5 w, b
PC=m;
5 A% I% p2 |& d3 k7 _1 }7 L4 q( O- ] }
# u) W' y& @3 H! p y=m;8 ]# w5 R) h9 J3 O# H! s9 j
x=PB;
6 g: \) U# |! I: A; ^9 B for(i=0;(x&0x01)!=0;i++)
; a& n3 y* u _* ~* y/ b* k* N- \ x>>=1;
6 ]+ _3 H1 C/ Y% P7 }. p, g1 o x=3-i; //行数/ C4 J. f% l) ]. W0 P
for(i=0;(y&0x01)!=0;i++)
( }( J4 i+ L- e& H: U7 L, ~ y>>=1;+ ^+ t1 k+ e0 p$ ^7 X/ m
y=5-i; //列数
! N, l* i* [: k: e. H# F while(testkey()); //等待按键释放' q3 R$ v6 I/ p; g+ U( b* {6 B6 _
return(keytable[x][y]); //查表得键值
! Q* r. m. b! p1 M) o# @. `}
, v" m( H8 U. X/*====================main=============*/
% F$ d7 P" u7 `. e1 Z l2 p# imain()- t* v! o$ s7 X
{ 5 H0 w+ t5 L! @
unsigned int get_num;" [# w, \* K0 E8 o8 o
COM=0x82;
+ N9 U* V) o. g( T) ? gstart:while(1)
9 S+ Q$ o) Z% |1 x4 A, L { 3 D/ N" r0 f! V3 w
while(1) //开关. I- C v6 ~5 m U7 w" d
{ PA=0xff;3 l( W5 E8 X2 r0 L6 b: u+ ^9 C: Q
P1=0;
0 r* x; ?: A2 ~ TR0=0;
& j" [: Z, @2 @7 p& @( a0 ]7 h ET1=0;& U. C1 ~" l, Q* l" Y. d* O
get_num=50;
& A! X6 _. c: q if(testkey())
3 L6 }. g" C7 h9 H! L {6 B# i T* `, E7 T3 T2 P7 p
delay();. Q C9 [6 q* X3 o
if(testkey())
" w3 m7 S. C' A+ d! V0 d get_num=getkey();
, S" p$ C# h2 q5 f8 @: v& k }: K& m& P: H# b1 m
if(get_num==10). d" A4 v! h# r# _( V( i' t
break;" G% M) X+ o, Q0 j( Y2 c0 c: P
}3 {6 u. C0 q& l* {- L' o+ u& y
light1=1;
, a( b1 Z' w" J* v: X# \% o9 O1 L4 G& _+ U
while(1) //输入第一个数* ?2 \. F- e; t. z
{* m4 n$ i# s# v$ n" s9 o. P$ F0 t' H
get_num=50;
5 n1 C1 K- k7 g' ~* f1 ?" W$ } if(testkey())
3 [9 e. p7 ], Z1 i3 B& a8 p6 @ {9 R0 E6 [6 S o3 X2 z. G* Q8 K+ f
delay();9 i2 g4 b4 K5 q& P2 p( V S. p
if(testkey())2 q2 ~ `4 ]$ e) C9 B' W2 v- k
get_num=getkey();) t7 P) |6 J( I6 |4 i( @! s' o4 k& r
}
$ [: _0 o& j6 _# a) R if(get_num<10)) |) r& f' ~4 o6 A* i
break;
' u* b* C% W' C) J3 N: `' v5 m4 u if(get_num==10)7 B/ i5 X& ~2 [9 H9 Z5 S
goto start;
+ ?, A1 q1 o& e' X) r ledplay(0);
8 x. X8 h) D8 L$ @. b! \6 B* x5 F }
+ V( z, T1 i! x1 ]/ r1 M3 U time_num=get_num*10;
& R0 ]( W& F+ ^% y; O- X/ X$ _( V# v/ _/ ^) w
while(1) //输入第二个数
$ q3 a+ S$ q8 h5 B+ ] {9 Z' r; m' T, W
get_num=50;
2 \! ^& i" ?. e/ M" y6 A q( A if(testkey())5 v) {: l: T: x2 |- j
{
0 Y: v! C$ v! I, W; R9 B# c6 d6 d delay();
& q& Y8 r) k5 O if(testkey())
. b0 m4 e2 V9 N) K get_num=getkey();& B! c1 I! n; E6 b, V, q# q
}
! d2 W( b% j F0 N if(get_num<10)
. ~6 n# w3 Z5 w4 K break;
, Z, R$ U A. q1 l n& X4 k! Y if(get_num==10)8 J! ^9 @/ {- a
goto start;
' M- A K, W' V ledplay(time_num);9 }3 [6 i: g- [4 Y1 x! P
}
# W. d1 r+ }7 B2 E time_num+=get_num;' J) o! |; I, p/ L6 P
1 s. O2 S& e! _. X7 o/ ?/ G% X
while(1) //输入火力挡位
1 f1 R# i' w% I4 O1 L8 t {+ }# S! C+ l) U( u
get_num=50;
8 Z s& z! _ K7 ` if(testkey())6 v$ j6 f# B+ a$ |4 d1 y
{
/ W# G0 `3 Z! L5 y z p2 y# u; W delay();
# `6 d5 ?& Y3 g, |9 A if(testkey())1 `0 |4 ~1 ~% I3 T
get_num=getkey();# r% R" m8 x$ `5 l0 k( a
}
0 e% B$ [) } m3 T/ R% V, x
0 n0 f' P- j* M2 z" u: |; f% o. u' a D* }
…………限于本文篇幅 余下代码请从论坛下载附件…………" r2 E, ~* g. J8 e7 B: e7 u! [
+ V; l/ a: _) L, k* G
9 ?! f1 B' }$ a+ C6 Y) A
@% G4 t2 X) N/ F
( f: ?& ?# r, n- s3 \, k' {) k |
|