|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料0 D* o2 P4 q, u! q3 I, T
! @( s% T1 G9 y8 g2 X' x
$ R; i& Y5 V, `, H+ ~( i有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图1 x* ^) N9 V# Z) p
; k. X9 k, G3 ~2 H) L1 F" X3 z8 h; `- P9 V0 a' l& a8 G
$ k: a8 M/ O! w" q) I0 Q
( L( D" a9 L1 B$ Q
单片机源程序:
+ ^3 R" b7 Q1 ?' P#include<stdio.h>
6 a. O! `# H# t: K- k, f% q#include<reg52.h>
3 G- O, e' ?: Y! O7 k; @0 c: v1 j5 m#include <absacc.h>" K- s; Z2 h- H* ^) Z5 G
#define PA XBYTE[0x8000]
* G; R' g* u" ?( J M) ?& e7 F#define PB XBYTE[0x8001]
5 @. A7 {3 @, ^#define PC XBYTE[0x8002]
, N7 E8 Z+ W& J5 K0 ^+ B#define COM XBYTE[0x8003]7 \: f6 B4 D! Y6 j
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}};
2 H. x& ~& e7 y/ m! k1 zunsigned int i,t=0,time_num=0;
) ~9 q& J! @0 ?4 D& p' l/ S/ jsbit light1=P1^0;
0 R+ N. N; e k6 }2 Hsbit light2=P1^1;
' m; n6 H1 _1 J& W5 msbit light3=P1^2; x! N& I: {. m" W+ c$ `
sbit light4=P1^3;
1 E# B& G+ X! s1 x/*===================延迟子程序============*/4 n+ c1 \8 G) V5 V+ `# j; z
void delay(void)
: Y$ t; C6 M, ], q{! ]3 w8 F/ V! i) S
unsigned char j,k;
2 k. l7 R" _* i for(j=20;j>0;j--)9 V; h! y' n9 F& A- A
for(k=200;k>0;k--);
; E+ i8 S3 P# c# J2 E! O1 G, g5 l# c}
2 P+ ]; k$ @. \. X5 t/*===========数码管显示子程序===============*/
5 v# Z+ ^% U- o- [void ledplay(int b)
& D/ ~( W$ c1 y# Y, x& r- c% |9 b' N{
; `5 [3 g/ A: V l. ^6 g! K. { unsigned int m,x[2];1 X" b8 ^% e4 l: h
for(i=0;i<2;i++)
" G8 O7 S+ u3 R5 S# E. u {9 H( ]+ v9 W3 z5 S1 h
x=b%10;/ S( Z( \/ e4 d8 v. P1 p8 f3 v
b=b/10;4 C3 I, U! T1 A; r' \) C& B" N- G. @
}) k' f& c( _1 X2 i8 D! a# s. Z. F+ j
for(i=0;i<2;i++)
; [: s& G5 R U0 g1 S {
) h `6 ~9 z* K x=ledtable[x];; L; \% A, q3 n/ s* D9 y0 a6 `2 g2 ?
}* l$ |/ z! ^4 e1 Q! C
m=0xfd;+ h+ U L5 t8 Q2 F
for(i=2;i>0;i--); |; f* I! ], _! T: H6 _+ x% k
{. z: x+ H5 p4 I& C
PA=x[i-1];
$ _# P- e5 a0 z. v PC=m;
4 U& B4 f2 c( m( J delay();$ r3 R9 _. O" l7 n0 c; e, B
PC=0xff;, I5 B E/ l, ?% {( y' D" b
PA=0xff;+ ~* u" D: Q1 U, `1 ]& _8 w
m=(m>>1)|(0x80);
2 X, r" U3 l" [ L }
( ]4 U1 j$ T7 |# g5 V}
( i( f/ p! Y- y' H& M/*=============测试按键===========*/2 b2 U/ V6 J# M6 Z5 q) k
unsigned char testkey(void)3 T9 r) s" j& q" M, e1 S9 C5 j
{( @7 F5 e6 Z9 O& Y8 B
PC=0;
' Q. J8 h$ j: x& t if((PB&0x0f)!=0x0f)
/ Q- s$ R2 [6 y: R return(1);) _) H- i+ A& m) Q5 M+ Q% O
else, v% a7 j9 I- R! U1 w
return(0);5 f2 U/ [/ q# ]+ E" X3 ~9 j
}
5 G4 S2 W$ f4 k1 q6 c$ j% q0 u L% m& `
/*===============得到键值==========*/
$ d: o3 _0 {# }' C2 R; Eunsigned int getkey(void)
. X. E( s! A$ _' W+ q{' ?$ @9 N( @: o; h e* z& D2 R
unsigned int x,y,m; K! _1 Q# R. `$ z5 d, d1 G2 z/ I3 p
m=0xfe;
3 ^) y/ g+ z, ?5 Q2 Q: p) U6 v PC=m;
5 j; [& L2 K5 ]' Y# }( p" M while((PB&0x0f)==0x0f) //键盘扫描
8 {: P: o+ {2 z8 o3 _ {- v2 g& k- [$ U* h, W. p- Y6 _
m=(m<<1)|0x01;
; ] N* V8 f* v# ~% S- g PC=m;
3 h' m! S* [0 W4 t0 N+ D }* @. ]) z4 T+ L+ V' a2 u* J
y=m;
% A" j: L* v( j5 B% W x=PB;
: Z3 ?, q0 e! \! {/ ] for(i=0;(x&0x01)!=0;i++)
2 ?# ] L8 u! M7 Z x>>=1;4 `# R; \2 C) x
x=3-i; //行数
1 N8 ?& x2 ^5 i/ o* @' G for(i=0;(y&0x01)!=0;i++)1 {$ l& O/ q% w2 R% l- [/ X/ B& T
y>>=1;
" w/ V8 _' I( Q1 b" M: `- k y=5-i; //列数
5 ^2 Q7 J( D; P( C$ |' E while(testkey()); //等待按键释放
& p0 O5 C! b! L6 S4 `1 V, l return(keytable[x][y]); //查表得键值
; f! ?3 D: x' p. G}
( }% p0 e! h8 c6 ?# p7 y l/*====================main=============*/
! f" b5 y2 j0 h" Dmain()
( o0 s* F+ a( T- K+ U# f{ , _# C; j# ^. m" Y0 Y) t! f5 |
unsigned int get_num;
& I, X; k+ Q+ z' }( i COM=0x82;' X' |% U5 J* e; }/ z% g! \
start:while(1)
4 p, C: u' H5 z' Q7 T+ N3 N9 N {
/ y* J* n: L- u4 X% ^ while(1) //开关
0 X$ K1 O, F' v/ G+ K { PA=0xff;
3 C' q0 ] e9 f0 \% x" A, F; u P1=0;. @8 G; Q* l, o; ~0 H
TR0=0;2 o) O- H6 W- G [# }
ET1=0;8 ~* z4 r- U9 D
get_num=50;
" B# x3 D c4 I/ A if(testkey())9 p9 [7 e# d- z
{
X* L* O! v+ R6 r delay();# e+ I! r- A3 a& G( p( i
if(testkey())6 D- i% r- _1 ~0 [
get_num=getkey();0 }5 S- w; l V
}
. t/ J; a( N! v# D" k# g if(get_num==10)& a+ w6 ?- y( p* [8 J0 C
break;
- _) ?6 f/ u) ~( g }
6 y: ~9 j7 g x4 a) z light1=1;
7 }' k* ^' |1 c& v1 X# Z4 d# F* ] {) E" Y
while(1) //输入第一个数
* ~5 E' V$ T6 K/ L7 I* R2 m1 U {6 m2 E6 W; X; D" ]+ n
get_num=50;& u% K7 P9 w4 e; ~4 b3 l, d
if(testkey())
8 J1 O" G- s6 D7 V k# G- ^ {
* `& a- k. I% z7 i B: Z" v delay();
' ]9 e2 @, R& g if(testkey())
I+ ?# b: I( p0 y# } h; J6 R get_num=getkey(); k6 y7 p: ?9 J! j
}
! x3 ?3 q" m' u$ V, H# g if(get_num<10)" f/ D' |$ w9 m8 T2 \" y9 m* {
break;" ]9 a; K0 t/ n* J( [
if(get_num==10)9 v( O3 r& { D# R6 U6 |
goto start;. \7 [4 S! J! ]! a4 f2 O1 U! b
ledplay(0);
# F) x( {8 Q+ q: Y+ w5 j" U }
2 Q5 ~5 n# O5 O: j1 I. m time_num=get_num*10;
& ~1 x8 h5 ^) @' {( J$ ?
+ y. G# M3 Z3 M" h7 u& J) A; s1 X while(1) //输入第二个数
, X' p B3 V/ Y% ~ v8 b {
1 k1 ~. Y1 r2 e) D0 w, @# @ G get_num=50;
m( H' h' g$ o4 u$ ? if(testkey())
5 E( ?. {+ p7 k: v, Q: Q {
2 D0 R: }! G* _" b1 s delay();) H1 s2 o9 ?$ q3 Y- X
if(testkey())
3 ?8 @& w$ h; N+ a get_num=getkey();
$ \; U8 u3 v* K6 | }$ d1 T$ c9 f4 y2 e6 V2 h
if(get_num<10)
- B& g) V; b* Z break;' Q( X8 ~8 D2 S9 L% @
if(get_num==10)
7 ]" m! u' n7 S goto start;8 p9 h& x) t" s, v% s- d
ledplay(time_num);
, [ F/ V3 z% D' m b& R }
3 G% H0 D/ ^' w+ B time_num+=get_num;. E6 P- v% {# u" \7 ]- U) }. j
; f& {9 b0 X1 H6 c/ |# F, x. b while(1) //输入火力挡位
( n0 \- x9 U$ l0 V0 L P$ l" z' b. j {
1 h( e* Q$ B& _$ M8 P$ l: v get_num=50;) \0 x$ q! ~/ \% R& v
if(testkey())
' R" E" B: {! B& O3 D, b {
9 X. c6 f: Q* b8 h2 _# G delay();
& v0 ]6 \- t2 r( y8 n$ ~- D if(testkey())
( B) g4 [7 J/ D" O3 i- O get_num=getkey();( {' K3 b) p% ~ _! |) D
}* o2 ^3 y }, p* d$ L
7 `2 D) R, k0 E1 L) Z6 z
- m3 f9 x* g' ^( E8 S6 f" k$ ~
…………限于本文篇幅 余下代码请从论坛下载附件…………; q4 f c2 f+ X3 s
! i m7 k( p4 H2 R! }" c9 O( W" h- y0 O, U) z+ W$ O
# s0 Q# Z9 {) f
- s7 H1 `% G l
|
|