|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料1 x: D4 I. ?8 p {" I
* p/ {$ k, p1 s1 b3 V$ R( K# j- Y. D+ |; K8 x
有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
, Z5 E( {4 h, |: Z! X) d ' M- [! K1 W1 ~, \
/ \( a! I2 n; a Y4 r0 | / \/ t/ B8 q- F& U9 P8 [' b
9 Q& y' b! x# q5 m, Z. U _+ v& r单片机源程序:
2 R0 K& F) C- U2 r7 r/ A7 K#include<stdio.h>/ L. g& Q6 N% {0 s! h: X
#include<reg52.h>0 W- {9 f9 E/ a7 s4 L; }- V
#include <absacc.h>
' P- f6 e ^9 y) A Z8 Q#define PA XBYTE[0x8000]+ H7 `1 E+ P1 s/ m: y/ ^4 C
#define PB XBYTE[0x8001]+ h' `( J4 L% O# D" [5 m: X
#define PC XBYTE[0x8002]
+ d2 N1 f' Q$ @; I#define COM XBYTE[0x8003]4 u0 ?# i9 C/ y1 [ `- @
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}};" H) F' _# \8 `& Z' w$ G0 g' f
unsigned int i,t=0,time_num=0;2 S0 b" T8 h1 T7 l# G; \5 h
sbit light1=P1^0;/ e* ^% K, h q `# ]" Y
sbit light2=P1^1;& f# y0 {" ]) X' d4 G2 f
sbit light3=P1^2;1 P5 ~# H) a$ g* [. O
sbit light4=P1^3;
0 K( _6 Y' ~+ o Q5 c$ |/*===================延迟子程序============*/
/ g8 e) O+ ?# [( nvoid delay(void)) \* A0 r: w3 F, d' l F( T
{
" e, o) F2 \2 c! V0 z unsigned char j,k;& h% d3 S( Z2 d" I1 S7 \ \
for(j=20;j>0;j--)
# D, O/ _1 `) T& x( r+ @& F for(k=200;k>0;k--);
" Y. g' G9 E' @* C# h# c, a}
5 n9 m) ^) c1 {$ {; B8 ^$ L. z5 I/*===========数码管显示子程序===============*/
9 q9 E6 f/ Q8 N9 O8 \# Kvoid ledplay(int b)
4 j' Y0 W8 l) G( u5 T1 [: f{4 W& S3 A% Q" L! m
unsigned int m,x[2];+ K' K4 [8 {6 @' r: [
for(i=0;i<2;i++)+ _& ^; r# k5 Y- u4 s; z( \
{
2 j: F5 L% g' f) f* U x=b%10;- W0 y' F* }# @, [' q b8 d
b=b/10;
T' [" L# G" O' k! t g1 x3 V% } }% s) r a6 ]+ e8 Z8 ~2 \5 b
for(i=0;i<2;i++)! ?' u+ b) s& ]6 }0 }% S0 I
{
. D2 i- V' `2 v" W3 q2 m* F6 o1 T x=ledtable[x];
5 b% u8 A H e }9 `6 Y4 V0 R* v- K& D; }" S
m=0xfd;
1 W6 d" W0 ?: H0 x; n, A' K for(i=2;i>0;i--)1 q; _# y; C6 J$ z( O8 J, |
{
5 L8 f- V' K- g- f5 o+ } O PA=x[i-1];
+ t0 P! z& }0 ]* g" D- o! c ` PC=m;* Z7 _( y# \+ R! a$ }5 c4 a: Y
delay();" V u) b( [& p0 [2 I) E: C) @
PC=0xff;7 ^% G. W E) J) W4 D
PA=0xff;( A6 y4 q% J& G
m=(m>>1)|(0x80);; j. Y% Y) x; T4 w+ Z) B/ \( B1 M
}2 ^& a E* ]+ D% x- M5 R! k
}* o* j- W5 F4 B2 I& A* `( n
/*=============测试按键===========*/- ?# a/ T+ j+ I3 j" q! `8 F8 @
unsigned char testkey(void), H# y7 v' x) r7 L& u3 `1 V" L9 J/ X* d
{
& j F& i) F4 X% K PC=0;
( a# A- v( r. {0 n5 M" _$ w if((PB&0x0f)!=0x0f)+ X; Q* N. @. G: U
return(1);
1 w* h) A+ J; S w% f) L4 y3 n1 k else
' ~5 g9 b- V7 V% [8 U return(0);3 [# Q0 v. S8 r: `
}% q% z1 G6 a) z6 z" s: y& ~& Y3 C
; g3 [9 ^0 M8 a- t' a- K5 q/*===============得到键值==========*/9 [4 k( w6 l5 ]# z) x) w* p( ^
unsigned int getkey(void)3 B5 S6 ^& Z& }- w, f
{
' ?: B+ _9 n0 j% P) J1 l ]: ^ unsigned int x,y,m;: E/ ?# E7 \" ^9 S( Z) e1 {
m=0xfe;3 Q# C1 m& x( `, b; ^' H/ Y
PC=m;
- `: @& f, u& ], _" @ while((PB&0x0f)==0x0f) //键盘扫描
3 J0 V0 N5 `, [5 O6 S6 v {
2 u. Q2 Y4 ^2 y) e m=(m<<1)|0x01;
* l D+ l& e, o# r6 ] PC=m;
: s8 Q, y3 q x& N4 ? }
# p3 E2 p# c+ ]. u! _ y=m;
" @$ m' ]# e" C9 o% k x=PB;# {5 W/ j4 {6 ?2 C
for(i=0;(x&0x01)!=0;i++) 4 B; p9 E$ N) h- h1 p; e* G
x>>=1;
* f: @2 d+ t4 |6 q x=3-i; //行数8 y& A) _7 X! ]5 R
for(i=0;(y&0x01)!=0;i++)
, h" c. W; s0 a8 t6 m* g+ X' v y>>=1;
% f- d5 W% u+ R. d. \. V1 e" V y=5-i; //列数/ A, ^; |3 N' I; d- j
while(testkey()); //等待按键释放 b" l% `+ e5 S- A& ?
return(keytable[x][y]); //查表得键值% x* F# F* }" J7 |. c7 y1 t
}
: [9 a9 F: H p) s y/*====================main=============*/
2 P+ Y" ]9 |9 A+ [# I; d. Rmain()' t$ a) T1 n, E
{
b* }7 i+ L' p% F unsigned int get_num;
4 n5 ^ G6 C7 F7 P* u% x COM=0x82;
8 L, a/ Y6 W0 u! cstart:while(1)1 t+ E$ z$ q, W" m7 ^& g$ q* L
{
& W, _9 y4 j, u+ B5 \ while(1) //开关0 E* t7 D1 D& G z3 V
{ PA=0xff;
8 e) s3 ~6 \6 s) J4 o) } P1=0;6 J" ^* r; e2 C% H4 X( ^, y& r" a
TR0=0;/ J( C6 c9 _ J& x! b; P* s. o
ET1=0;7 o, D- _; w$ R$ [) [! u
get_num=50;3 ?' n" V, v: s% w9 X6 c2 k
if(testkey())
$ m9 ^; r) R' P0 i' \! |0 S& S {
( H0 g7 T% z' R# D4 _ C/ y delay();4 D# ]- O$ h4 P3 I0 r8 V
if(testkey())
8 ~' E& F( Y; V% g V4 Y: @ get_num=getkey();8 @. q+ l [6 V; D% A% o
}
. v$ W6 c, Z$ `7 w& Z+ N" q if(get_num==10)1 e! w8 w0 N+ k% e8 _! r }+ o
break;
; Z3 }1 X! w. C8 V" w- _ }6 y' Z7 _2 T# R% s: ]# \
light1=1;4 x1 p) x" A' J0 p& y; a
( } v$ t1 [( ] Z. O: \ while(1) //输入第一个数
+ @/ N: _& g; |: f' k {6 N4 j7 c) h. d0 D4 e. @, R
get_num=50;& E$ @# i" ]& H% N% j6 n+ H
if(testkey())
0 X8 `! Q+ d+ S5 Z! ~ {2 t; q+ T8 k0 Y/ I4 t0 v6 U
delay();+ w+ H3 E7 ]# R' Q- v# L
if(testkey())* o5 o) k- Y+ D; X: I# J, h; z
get_num=getkey();( e/ ?9 b, _! r) }! E* I) ?7 N
}" u" H' M: b4 f. \7 c
if(get_num<10)+ n, Q- v3 m8 E" I
break;. w4 t. n. w5 Z. c
if(get_num==10), A, H0 O) K: }: Q" l ?. \ S
goto start;
, p2 K2 G% Y) I ledplay(0);" v9 r0 n" F* U( d: J& M2 o
}) I# c& o* W$ N3 v$ @! a4 U
time_num=get_num*10;0 _8 S, s+ B) l+ k3 w/ O
' d* }" v% e) ?( J# ]$ z; S1 R& J while(1) //输入第二个数
$ i" n" F3 L/ o0 }' M, J& {: R {
) X; F3 k6 O: Z; R+ I! q' J5 O get_num=50;
7 O; K/ Y7 D6 P& s1 }8 {* A# W if(testkey()) ~ ~) e* |9 K+ d
{+ v. W+ X! c I' @
delay();
# M9 f5 T) s4 J) @ if(testkey())
, D; D9 U; J6 Y X% D get_num=getkey();: e; m# {/ k( n' T! F B
}# Y) n3 C+ c6 A- K# X
if(get_num<10)
- a5 v; X; F" [# F break;
* c: @$ K* p0 D, g9 z if(get_num==10)
4 `1 \8 f3 a4 b# k4 w8 K goto start;) X. \% I/ g$ q" I6 D' f
ledplay(time_num);" L& r& J; `5 a2 Y' _& J7 |+ v
}
% x# {% y: x# \4 `8 a* O time_num+=get_num;
1 O% z% P' |& u I/ ]2 ^4 P
0 K; `) K8 q* G& Q [# p: ^ while(1) //输入火力挡位8 [9 e9 Q7 J# U- z& U- C4 W8 L e
{: x& W8 e4 s3 R2 N6 j) }
get_num=50;3 u7 u9 q0 P& F/ D6 a' p# p& Q. c
if(testkey())
4 ^/ G6 q. a' `$ H {8 l& e- s3 b& F. {0 s
delay();
% t5 \, @2 _8 m, { t if(testkey())
- g2 o1 M% p' W9 x get_num=getkey();" p9 e; v+ T s3 F+ }
}
) H. b8 m% `6 U* U, i) U5 ~" S$ Y7 W) f# L% Q' W
0 J% k: i6 S$ Z1 P" \# S+ f0 V…………限于本文篇幅 余下代码请从论坛下载附件…………
; X B- D! B1 S8 f! M1 \3 B7 \! Z$ o) q. E8 N. }3 w5 a9 q9 }
) N; |& w$ |9 U# _8 B H( l9 U: Q5 D
9 ~8 B }$ F8 l, O6 X7 Q
|
|