|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料; ~+ `. A: D7 U+ S" J7 U. k
% T% i+ I. m6 f) ]' T0 ?5 M; y
! W) I% Q& h6 q, { p
有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图+ o7 o5 V) K5 [
, B2 E) i3 c! x0 D+ M4 `5 V" x3 ?% U) J8 S" C. \' f' |
0 x7 i4 M( v4 W$ G
+ W& k" n8 T0 g" X# I
单片机源程序:: S& V; E p9 K$ p
#include<stdio.h>
9 ]8 O/ t. u2 ~5 k& [0 J: ~$ l- S% L#include<reg52.h>
' ~. g: H( C; a [8 \0 V: J#include <absacc.h>
/ t& j+ D) \4 g: l5 a1 o0 J) J% V#define PA XBYTE[0x8000]
3 t6 t- v; d3 j: o#define PB XBYTE[0x8001]0 b$ C# S8 F9 C& Q! U# R
#define PC XBYTE[0x8002]
6 L a! C7 G+ e. u1 x1 U#define COM XBYTE[0x8003]
1 u ~ G$ k1 Qunsigned 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}};: p2 C2 j: k4 X# {
unsigned int i,t=0,time_num=0;% k6 u0 j/ }8 C* ?# b
sbit light1=P1^0; O+ A) t# U" h3 q1 b0 K
sbit light2=P1^1; q P, T9 Z+ b/ S% r( q. r S; I. c
sbit light3=P1^2;8 p9 F0 \$ b" i" w2 N* @( a
sbit light4=P1^3;$ x7 Q- g! w& Z, z* d
/*===================延迟子程序============*/3 t4 g+ `3 ?5 c" ~$ i1 o/ I
void delay(void)9 w' q0 U" r& d# w" p( p) P3 L
{
7 d) q' |+ ^* q& I1 a8 S unsigned char j,k;
# W: G' q( e/ ]- |2 n% N" y4 ^' i6 }6 q for(j=20;j>0;j--)
) G* N& i" b( X3 x% L" d for(k=200;k>0;k--);
3 J1 g! T7 c1 j- v H5 n+ M0 Q6 i, ]}
( J" D# |! s! }1 W0 X% E/*===========数码管显示子程序===============*/: T$ m6 y9 Y" \. L5 O' F( U' F& `
void ledplay(int b) y. Y7 i9 j! S) E
{
5 R1 z7 v6 ]% T$ C unsigned int m,x[2];
7 ^. s8 W7 Y+ V. B8 F for(i=0;i<2;i++)
4 @( R+ n, G& R {
$ a7 y4 B5 X$ F' q% D2 r x=b%10;
& K$ m9 ?$ a9 \& _7 p b=b/10;3 M; v3 J. D1 Q0 p% t: q
}
; ?; R5 F2 J: D) u' T7 o for(i=0;i<2;i++)/ N) Z& L# \2 X! Z
{
9 F6 }$ R- P; E- ] x=ledtable[x];
' {7 u: f& @& @$ R, E* ] }4 W5 `+ x* U$ Y- W
m=0xfd;
9 B' j+ ]3 s+ C- u, \0 M for(i=2;i>0;i--)
4 I: T$ G1 i4 @) v2 {" t {5 f) B t6 k6 W" }/ X' Y* s
PA=x[i-1];
# Z$ A. c i6 Z5 h. V2 ~ PC=m;
& J4 p7 L6 i G& P2 _ delay();
: ?$ C3 r8 ^3 \1 C8 ^! M PC=0xff;1 k! n7 b$ f& P* o! c/ V- \+ @! ^1 Z
PA=0xff;
: Q8 ^2 h R _ m=(m>>1)|(0x80);
: ]9 h/ m B' v0 t7 t3 D: v }
( n, L3 c3 ?1 C}
' T5 q" Z& s; x4 Z% H& V/*=============测试按键===========*/
: G3 L7 x3 V0 I' L: ?* }; _; ]unsigned char testkey(void)& N1 C Y) O3 t+ z# j; H. {) J
{
) E1 k. Z4 ^, V8 T PC=0;) o2 n9 q: i% S# b% C$ J. x
if((PB&0x0f)!=0x0f)
# F% x% [: V' m+ j5 x- F return(1);
. e% l0 I4 A/ O2 I0 E# r. J' q else
! _8 r2 S: S5 C return(0);
% G5 M1 F9 I: h2 G, S}8 c- v5 f" t" B/ z7 K1 t& f) X$ B
0 ~( w+ L, I2 c/ p/*===============得到键值==========*/7 G7 I4 a# P: P" r2 g! B
unsigned int getkey(void)7 s0 [2 K; ?6 r6 W
{, L, s' W9 E# }& |
unsigned int x,y,m;
# H. P' q/ z( y H m=0xfe;
3 E. Y- \$ _9 Z PC=m;" v* I1 b2 F C6 ?
while((PB&0x0f)==0x0f) //键盘扫描: q0 j( m; g+ V9 K: Q) e! j
{- m- z! i& @( S5 Q$ n2 A3 ~
m=(m<<1)|0x01;5 ]& J) T8 O% a# ? t
PC=m; r3 p" B3 B V4 [/ m5 Y1 w3 A
}
( @: O* a( l; Z2 G( y y=m;
& k& c1 _- `8 ~% Q x=PB;
y' h* d/ B$ h6 { for(i=0;(x&0x01)!=0;i++)
" i# T/ O d" Q1 F) r x>>=1;
0 V: S! m P8 F% y x=3-i; //行数
4 O B3 g. S" E/ ^) K, R k8 X6 w- T for(i=0;(y&0x01)!=0;i++)" c: [" G6 W1 }/ y( B* O
y>>=1;$ a4 F6 Z2 e) V" ]
y=5-i; //列数/ e3 l/ F" O* S2 z0 K
while(testkey()); //等待按键释放; G- j( T; a7 z0 ^4 ], }
return(keytable[x][y]); //查表得键值/ c3 }7 \% _0 u- ?1 j% T
}7 _$ ?' Q3 P( V) W
/*====================main=============*/
K6 O1 ?$ G% lmain()) M+ }4 b; y. g* n9 }% m2 `0 u
{
. D, n3 e- r; `5 C3 F( s, A6 F K# [ unsigned int get_num;
+ i6 c# {( A! ?+ [: n# J COM=0x82;
3 S0 s7 c/ z& Q% j. k- ~3 e; bstart:while(1)
% P' C2 ^5 l6 ?$ l+ E0 G% t { 7 ~' c8 ~4 D, N/ E% E( N0 R# e) j
while(1) //开关
9 `! \* ^/ I) r! y { PA=0xff;
1 q: [/ k7 W% K" N$ T8 g P1=0;
, d% N5 `# @# A U TR0=0;
) b1 a E8 j( c* x9 V3 v x9 L' n: V ET1=0;4 K# U7 A0 p6 t! Z: ~
get_num=50; A3 M6 [ `, H
if(testkey())
/ a( ?* f3 B& G0 c7 H: u { ~7 U }2 |! n% _
delay();" P3 K) @* _: d) K9 b0 y! l
if(testkey())
5 Y9 y% c1 f. f2 E get_num=getkey();
" e% s. O8 F/ l* H7 D }
& D; ?& V$ v) W0 V" {& O6 @. e if(get_num==10)
9 w% v2 c4 D) O1 t3 V break;
9 ?5 G& I% _9 C( } Q- [ }; |1 \% R+ Q/ m1 u6 W6 A h" ~
light1=1;/ s5 k5 f2 g! F# ]$ \" e0 i
8 V, Q' {' I5 k |9 c8 h# K while(1) //输入第一个数
: j" @' y* K2 q, c1 I# X {
8 O, _! F! o6 Q+ B get_num=50;
, K$ S: c$ o. s0 p7 u; A, |4 n if(testkey())( h6 ^. w$ X' T8 q: R: X3 P3 ~
{
" f$ _: B4 _5 u* a/ q delay();
8 q7 v$ _5 k! i L0 d1 B if(testkey())
0 _) B0 I4 k3 t get_num=getkey();# f9 C; C$ W! D4 R- @
}5 C* Y# Y4 o: i; c# ^
if(get_num<10)7 x+ [+ f. J6 k+ ~
break;
7 O- }) l, e6 W! U* R if(get_num==10)
: [- E5 { A7 T goto start;5 }3 @2 y7 u, g7 }
ledplay(0);8 s- K. J- q6 R* W0 l
}" W8 X8 c% Z2 J, E0 Z& f4 P% {
time_num=get_num*10;7 p( Q* A1 P" c8 e3 `( s* E1 |8 c
( a1 E i+ s3 \! E% z while(1) //输入第二个数2 U/ v: _6 C/ A5 c7 J
{7 T. ?! q) B% Z7 e. ^
get_num=50;& ~' B8 I2 N7 X& S
if(testkey())
) v" I/ W+ ~1 |7 \ {4 y1 U; a. S2 o: l( {
delay();( I; `4 r/ e# K/ U+ N2 V
if(testkey())
" s! d8 V" h2 h0 n get_num=getkey();/ \( g. v! M, E/ M8 l
}
' n8 x4 ]2 C4 T; Y if(get_num<10)$ r5 V6 q' x. H7 X
break;
# Z; ]$ t; ~9 ?; P$ V: q+ ^+ X P if(get_num==10)
1 ^ q+ p( |. d4 } goto start;
: I( ?1 e, E L! a+ A7 C0 x ledplay(time_num);
- t9 s2 Q) o. r4 |. G* p; k }
, ]. _. y! G0 w& r4 r U. B' \ time_num+=get_num;2 f e8 L! z5 [; R
' j- h9 s& E$ k4 @ while(1) //输入火力挡位4 R. P @' {% Q9 u h- W. V& C
{0 C$ a: D6 d- s$ B" B
get_num=50;+ A- t* v3 t$ `. h3 \: r3 w. ?
if(testkey())
~2 N/ p% h$ \2 T* z+ F+ G/ M5 o {
) ?7 K( m/ T# }( s. ] delay();7 v+ l. `5 m. p. ]9 o# m
if(testkey())
9 K8 y, [8 r- i% ^ get_num=getkey();
; p' h: t! S5 h) B7 c }( Y' t' K# x5 H. |* S, |/ w" k
, \) L6 z" e% @
' B7 B) c( b6 Q6 O9 u: i* y
…………限于本文篇幅 余下代码请从论坛下载附件…………
6 c! ~! W8 K- w3 q
: x8 C' M2 \3 [: Q) O
9 M, Q. p, m( _) k, b( u3 s
, S% y% V5 o1 l) y2 I; X
5 W* h! W+ Z0 \. H4 R: L& d |
|