|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料
8 S6 I2 r1 k- p( w
6 A- r: N4 O3 B6 s- m$ i) Y. \9 e, j p& M' p6 ]) j
有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
5 l1 W6 L4 ?. `' @0 ]) M* N/ i" U+ \6 } ' |% K& q$ M" `- K( |9 M1 w/ ]
o. H5 b5 i l# ^6 ]9 k2 Z
( ]( t2 F! J+ L( _! t
$ H3 H- d, |+ K- |) M单片机源程序:
" ~" G% S: C0 y" q6 j* D' j* H# ]#include<stdio.h>. x7 [5 G. B4 @0 _
#include<reg52.h>
( I- s0 w- v0 [ f/ j+ N( y9 q#include <absacc.h>
! B; S" W" i3 M% A) A#define PA XBYTE[0x8000]( s/ W* D# [/ x5 a1 I t9 @
#define PB XBYTE[0x8001]1 f2 ^7 g2 v0 I
#define PC XBYTE[0x8002]
* v3 A8 [2 @* o$ K; z4 d. w1 V0 |#define COM XBYTE[0x8003]
- Q- l( `4 N' B- ~- R3 u- L7 T, Eunsigned 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}};
' I7 \: B7 H! i& n7 S( |unsigned int i,t=0,time_num=0;
5 G0 w; b6 v3 n) m6 D; wsbit light1=P1^0;
# \ s8 a8 J' w, y6 Zsbit light2=P1^1;
8 T) X' b8 }7 ]1 T$ r3 xsbit light3=P1^2;2 U, U. {( W" Y- g4 V3 i C
sbit light4=P1^3;
& y5 I: |2 |5 c. W$ p- U+ {/*===================延迟子程序============*/
% M! b2 N$ y( T. u: bvoid delay(void)
: T' R' I- S# G: a" K6 L9 y# J/ n/ R{
8 ^" e8 v" j2 Q1 W f3 U unsigned char j,k;
_9 J' v1 k. ?; v for(j=20;j>0;j--)5 V- t0 C0 p, u q. d" O
for(k=200;k>0;k--);9 C5 e7 M. W8 ?2 x: k8 v$ n
}# Y7 ?2 Y8 L9 ]6 T( c9 E9 `
/*===========数码管显示子程序===============*/+ }9 n7 ?2 @) l, _
void ledplay(int b)3 y: }+ f8 M+ t
{. \% D. i4 `2 w: u* M9 v
unsigned int m,x[2];9 r* l, j# Q2 I# k C4 g
for(i=0;i<2;i++)& v% }8 @9 ?" N# p
{7 o2 c) Y6 g5 N6 l9 R+ \
x=b%10; c$ W7 u3 ^* J' V6 C. t$ B2 [8 U
b=b/10;
n" ~9 o* Z; I+ V8 q7 [* U/ k( ~. ? }
1 o3 p# D& |$ u8 W) q for(i=0;i<2;i++)
- r1 R- G* ~8 Z0 O9 B* q1 i) a {
" f) I1 s+ s- ~ x=ledtable[x];
0 [: c8 X5 Q$ E7 r }
" E( D; {8 I4 [. _" l. e, g m=0xfd;- ?% `; A3 B) @/ D; Y7 M. @
for(i=2;i>0;i--)
1 m" x, N" }; Z1 x {
" r3 O; \) F/ \# f PA=x[i-1];, O0 w' j) E. ]9 j8 w
PC=m;1 V0 v8 D* h+ V% _( j9 I! K) x. ^" i
delay();- g6 I5 H7 a/ r5 Y) B% @* r1 B) r
PC=0xff;! k9 ~7 C- j6 P: D+ a- F
PA=0xff;: K, T# s. L% E: r
m=(m>>1)|(0x80);
5 Z0 }4 `4 Q9 u8 L9 ]0 p }
' m2 }" r5 r* u3 A}9 P0 X- R" y6 l, N
/*=============测试按键===========*/- |; R% R8 p8 I$ `7 Y) C
unsigned char testkey(void)
2 ~! q+ f5 M. m. F) l{
6 ?! e& w* e5 m6 \ PC=0;
/ s% y) o# T% w$ K9 T if((PB&0x0f)!=0x0f)
/ C2 s/ p8 u0 E3 I/ V' z# U return(1);
?4 T9 l" t/ ^6 H* y else1 C. w( P5 ^1 `* q
return(0);
: e4 d$ {, F0 Y7 L3 C+ i) S}
$ A$ q3 z# v6 j e3 d' g7 G' J0 B2 x8 [" e' b0 o- f. M
/*===============得到键值==========*/
) c, }4 O+ z+ B% bunsigned int getkey(void)
1 ?8 e, S5 N9 e" ~! g/ N{2 K6 D5 R& p: z: i, e% W
unsigned int x,y,m;' E0 @0 u4 F3 ~5 d" |" {
m=0xfe;
- f1 @( V+ n7 w- P. }/ E7 J PC=m;
% M3 x. g* m# w8 o9 A: m% l while((PB&0x0f)==0x0f) //键盘扫描
, J" w6 z* G# C {
9 E$ |0 w) G9 y& ?( N m=(m<<1)|0x01;+ H* P& f, ~8 ^* T5 e3 w9 `7 {! B
PC=m; e! J- l) a* P& t
}0 ]# e. F1 |, F* S
y=m;
! p' ]0 F2 D7 m/ G x=PB;! {- z+ @( \- k2 a7 ?& _
for(i=0;(x&0x01)!=0;i++) 0 m6 N+ g) X3 ~ p# ^/ c
x>>=1;7 n. l( v: ~$ d+ f" V) U2 C, ^8 L1 O$ v
x=3-i; //行数
) G* ^. A7 T% ` for(i=0;(y&0x01)!=0;i++)4 F p% z- y4 u6 g
y>>=1;( m# g" C8 F6 Q2 H) m" z! i7 Q
y=5-i; //列数
% q8 T, v" |: A8 P/ q0 C. i while(testkey()); //等待按键释放2 }5 ~/ u2 b, v6 @( @6 O
return(keytable[x][y]); //查表得键值
6 z4 j7 @1 S# Z$ u& K1 \- P}8 \; {8 V0 l% K6 i. y* _7 R
/*====================main=============*/- W, a' T; Y6 A
main()
% F3 u- Q/ m4 R! F4 w{ " o/ t# L i& L
unsigned int get_num;
! k7 c$ |4 o: X7 O4 P COM=0x82;6 C+ C& h4 ]. u u
start:while(1)
/ N1 i& j' l6 k {
2 x& Q- n1 E* A5 d X" H while(1) //开关7 t. B2 k. D6 \9 p( Y
{ PA=0xff;
3 }* t" e+ ~3 M# H" z* } P1=0;& T* f: `9 d @7 |8 V
TR0=0; k, l5 F( H+ G
ET1=0;9 \! `2 e$ f7 ?6 v
get_num=50;' E# D5 C+ z( u5 G
if(testkey())
2 g' A' v7 U. _; y {
. d7 f) p$ P) J4 c: F, Z delay();& E t( x( F$ {* v/ `* `" q
if(testkey()), _$ b# n+ d. u/ E' t
get_num=getkey();, K0 u2 r8 I _
}
+ {* ?; h9 z0 z; `* ?; L! q if(get_num==10)
- p$ |1 `' z5 R! ^/ L% b7 X0 ` break;5 w' A [* Y1 i/ ]5 [7 C
}
- o. W: Y" B& [$ t% t light1=1;
2 V& z1 |3 j% [# {/ Y- Y) Z( t- V# ?' W. y4 H. E+ x" r0 Z5 }
while(1) //输入第一个数
* ^2 d4 A+ v" g4 [' u; W {
, j# `5 _2 S& B1 r1 D1 v- }. V& G! | get_num=50;8 x+ f% d! l- s7 G) n
if(testkey())
) K3 x. r6 S( b* F' ^' ~9 @ {
; ~) [3 I& y' A7 y# H* h) j. K delay();
3 f; |/ f3 [2 F( d& T if(testkey())
2 p: }% v! V' ?5 Y! u Z get_num=getkey();
6 J! H4 t W2 D' J6 i! z9 h }; s: d1 V) n9 W; V |7 h
if(get_num<10)2 V. a( d% g- G( |1 d$ H. U
break;
. [$ L, G5 F% W6 n if(get_num==10)
) x; B8 E5 [- X goto start;. e) m: a! U2 M6 J
ledplay(0);4 n' `, ?+ T' e+ n1 L) y: a
}
; T6 |+ A0 o# h }9 F! W time_num=get_num*10;
5 t3 w" A: d$ u: m' F( l$ L$ k/ O0 R# D! O2 {% I- `
while(1) //输入第二个数
; S" ^+ J" s7 C* x0 K( E {9 F8 v$ e! {4 }& c
get_num=50;( `% _! T2 ~ [; ]" @, M9 N7 A
if(testkey())) D/ Z# r% {& [8 \
{! j' J" Z8 {4 N' d
delay();
- i8 e& v- _" a% {+ d" f if(testkey())9 _* `# p* E* ^, k u* z
get_num=getkey();( I* |( X& n/ w6 i
}4 f; d5 }3 p- c i- v
if(get_num<10)/ N4 F4 p7 @* i% e* e6 ]1 _
break;5 B* @3 N8 e$ b+ D3 U4 c
if(get_num==10)
1 E2 x* n& T: ~! \+ k7 b5 |0 Y9 I goto start;
' @, S' u5 v( I8 E ledplay(time_num);7 g9 E6 W1 w- ]0 z! b* v# @; G
}0 I6 z }- u% E( L
time_num+=get_num;
" W0 \, T+ e/ x' y4 c6 f, q3 {+ Z& \# F# F4 Y/ K& j* Z
while(1) //输入火力挡位
$ a+ F; K, x ~: U- c/ N2 p( ] {7 E+ ]" X+ h2 G
get_num=50;
- e7 ]3 D# ~* k0 u2 F" g( @ if(testkey())
7 e1 x* c: i, i {2 u5 u& Q( x" b8 a# L! K6 V9 N
delay();
8 c- f: E/ o# \# T/ a3 U if(testkey())7 V$ \. Y: t2 c9 O4 Q0 c' f) \* ^
get_num=getkey();- u3 W) z& ^' C' h: B; k% Q
}
5 `2 D+ V% A, Q
) A, F5 W+ ^; B0 R
: t5 r v4 ^0 ^% f5 y. d, z( m0 \…………限于本文篇幅 余下代码请从论坛下载附件…………
1 C2 r' C7 d* {0 B' e
1 t/ d0 }! N$ K& i% p
4 [9 R; O! q2 o% U/ l* P* _- V+ [1 p* j; P
# ~% I5 Z) Y5 z r6 I8 o- k
|
|