|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料0 G l. d4 _- [& O# i
* y* |: ^3 B b/ p7 y4 J# V' Z) x* d/ f+ D! y4 `. I" {0 S+ `
有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
* X+ J `! Z- w# ~$ ] 7 z: h% \) b9 R
k3 O9 R2 d$ _. |' M
7 }4 b6 j2 z* |. u; b
! e9 ]5 l9 g. ^* S$ G" n单片机源程序:
4 V4 b( F# R% Z3 |( C) r#include<stdio.h>
5 \. [$ [- I1 R, f) W& H9 g I#include<reg52.h>1 w$ ]" L- I5 E- _) A! A0 N
#include <absacc.h>: j0 F# q' {! q! Q
#define PA XBYTE[0x8000]
# f2 t8 I- D* |#define PB XBYTE[0x8001]4 x' s C& ?/ @; _: O0 e
#define PC XBYTE[0x8002]$ j8 q, j o$ T3 Y) v6 R
#define COM XBYTE[0x8003]! N+ |' C8 J4 @5 o- b
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 c: I2 o0 y; S' X0 ]. f2 y: |unsigned int i,t=0,time_num=0;! V( g+ y( b) g/ Y/ ^9 g' x: n9 F1 t
sbit light1=P1^0;
; p1 _. s6 v% C8 osbit light2=P1^1;
$ S7 S* H& y3 _! gsbit light3=P1^2;
' t, ] e1 f' k; S4 n" c* `. Isbit light4=P1^3;
- n( _1 ]( Y5 g1 k, p/*===================延迟子程序============*/" N, i y! y ]% g9 s2 z2 i# N
void delay(void)
+ s9 ^. \7 L: Y1 c7 }{
/ l1 q- W3 w+ c; }% z7 {+ [ unsigned char j,k;
) H/ `0 W, @, z2 g, D" t for(j=20;j>0;j--)
! j4 a- W. `% ~4 h for(k=200;k>0;k--);/ H4 u2 z& n: F! Y. u& J
}
- } l6 ~) h- H/*===========数码管显示子程序===============*/
) z+ Z+ `! ~6 b) h" qvoid ledplay(int b)
% Y. e1 _; }( R/ X' o5 I/ k6 f' F{" K) B# {; A* e% P( i
unsigned int m,x[2];
$ ?7 ^- I* o' N7 Z) x2 Y# ]/ z for(i=0;i<2;i++)
6 U# y6 M ^/ I( l$ I {; R5 S K t; R+ Q( M
x=b%10;
& s$ u& q( k5 v3 c2 @# X b=b/10; ]4 {- j5 A7 @1 @% E1 e# u V3 h6 `
}9 K, d" h# u$ R" }) |
for(i=0;i<2;i++)! E( p' @2 K3 q E' m' j, H
{3 q" |$ P: m" [" D
x=ledtable[x];
$ w; f% y& n9 _) `$ p }1 a! ]- i5 ~4 ~9 ]% F9 N
m=0xfd;- q) p8 Z, Q# @( n( H
for(i=2;i>0;i--): ]+ c" `- w6 q+ [2 j$ \
{
3 x U8 N5 i9 D PA=x[i-1];) d) K6 }3 x8 ~
PC=m;4 X# i3 l8 d& ]& ~2 v
delay();
, i( I1 _6 _. r6 l* R PC=0xff;# s4 ~1 j( {9 F
PA=0xff;9 A: d2 [9 t& j( M
m=(m>>1)|(0x80);
* B) [' y0 a+ x2 k, J2 K( u }
* o0 G2 h) j4 {# B3 [2 E1 k}
1 b$ u- K' g& q8 u& e" b/*=============测试按键===========*/
* T5 U, s; V# H/ xunsigned char testkey(void)# x* } J5 b5 a3 Y1 F: A6 b
{
( I( t# e) J0 Y PC=0;
2 \, Q. |0 s& b2 g' m if((PB&0x0f)!=0x0f)
5 j% T" p. p- L3 l( v p) q return(1);
; x1 J/ D8 E# j# T else5 O) Q% w+ O& X7 R1 A4 U, {0 v# P
return(0);
+ E7 j/ i4 D% h' t c}% b# r5 _2 j' y" `8 m
5 B5 f9 Y' T5 ^) r* m( M/*===============得到键值==========*/' C w1 L) s9 a
unsigned int getkey(void)
M D! i% ^0 q- t9 p{7 d4 F$ G; s! Z3 }) Q, Q
unsigned int x,y,m;8 F8 T4 i+ M* ~' x
m=0xfe;
! I: T$ ~ p& C7 G PC=m;
0 r# X# S* b f. { a. R while((PB&0x0f)==0x0f) //键盘扫描
- A5 o: d% f, C+ m9 a1 T {
" t( n6 T/ _4 t! [# E m=(m<<1)|0x01;9 w8 c8 X0 t- u! G0 h6 [6 S. L' W6 X
PC=m;
$ T _, b3 |# t/ _2 a }7 f2 T4 c9 J9 `' l/ Z5 v" s
y=m;
# ]/ c* F0 c# C U3 c x=PB;2 I5 j/ `1 \; l5 K" u% q
for(i=0;(x&0x01)!=0;i++) $ K5 Q" H% h8 ~7 z7 S# F7 O$ }) K
x>>=1;6 @; T2 I. A9 a" f
x=3-i; //行数
' D {2 r" B+ j& h for(i=0;(y&0x01)!=0;i++)
. p6 ?% N7 t# h! c5 B, u y>>=1;: R7 C/ l3 b! w- u4 W* L
y=5-i; //列数
8 T: t3 l N' }/ p/ @: Z4 n' J while(testkey()); //等待按键释放1 f2 X3 f* U) k0 H2 _4 l% \$ l
return(keytable[x][y]); //查表得键值( k6 p% _4 N( U; _) I* B% b4 s/ I
}
$ R+ c5 c" r* J' v2 L, H/*====================main=============*/
9 Y* j6 R, C% S; x- rmain()! V- G5 w2 H: T H) \0 r9 y
{
Z6 Z4 z: a1 N2 q( o unsigned int get_num;
3 [1 s! m' S3 v! h# ^3 i3 I COM=0x82;
- }( P7 C$ i: @start:while(1)' K7 f8 n' N! J9 c
{ ( A5 L, h; E& x! @! }5 x8 `
while(1) //开关
0 x0 l: D' j7 h0 U7 K { PA=0xff;& B% I- Q$ i) H$ D2 z' v( T
P1=0;8 U% [& Q+ V+ r5 n5 p4 c
TR0=0;& f4 U( U- i5 U0 ^/ w
ET1=0;0 ^/ x, ?) Z+ S2 r/ h! d, X% P6 ^
get_num=50;
. |8 Z" A# d& g" x if(testkey())/ K" C# f* P" i
{- y; O+ W# G8 h8 I! V/ D
delay();
6 b1 q( K* t& A: C) F9 C if(testkey())4 D+ F s, D. \9 z. e/ Y
get_num=getkey();
! F# u' T* e( o2 c' ^; Z8 f }
1 _. o3 g( p! z if(get_num==10)
; e' l+ @ s) q: o) L break;" q+ n o' L' n5 w( P) S0 }
}: _( e$ z1 R1 j4 `! R% Z
light1=1;
' H7 W1 |' z+ S2 o3 G* {8 i
1 A3 w" g4 a/ l8 U3 z7 s( ~: N while(1) //输入第一个数7 Q- B5 z' X+ q: G. U% n
{2 d! }3 B( R ]' Q- w3 r( z7 b
get_num=50;
8 f3 g8 k" L9 B/ r# J; V if(testkey())5 \$ B' g+ J/ S; @
{6 b' y: u' {/ ~) n
delay(); i3 F" i6 B8 N( v; |- o' v
if(testkey())
5 |8 _* U9 K" _2 J ? get_num=getkey();' |% N& k* n, e9 y
}
- N1 Z3 I, S5 S" l; o if(get_num<10)9 e/ j) r T5 O5 p! |& u
break;9 b5 I# m' Z* b M6 d4 B
if(get_num==10)$ w' e3 u( [- z6 B4 Y, w0 E
goto start;
9 e D* q( N" ~. } ledplay(0);0 p& u7 y x* R% j o M
}
8 j1 { w4 g9 K* t V! Z I time_num=get_num*10;
( g: H$ V9 c: ~$ W% j' P
( j; H* ^+ }! S' U while(1) //输入第二个数/ B; j4 \+ t0 c8 [# n5 ]
{* q2 `5 j8 g, Z4 q& Q- P A6 ^: Z
get_num=50;3 h. e7 J: |9 K% S
if(testkey())
7 D, g" E" P) a2 F7 G v: W8 T {7 B0 _8 V3 U! J" e9 f/ {+ h
delay();
7 A; ?1 V" c; f4 M if(testkey())* u: z9 A! `1 C3 {
get_num=getkey();7 E2 I/ C( r9 Z! U
}! \. R# Q4 ^. z1 ~
if(get_num<10)
7 A: x+ D1 P C9 N e4 X( U break;
# \ }# R( ]: _, p. k0 F if(get_num==10)$ e6 k, I7 o. u
goto start;
; S+ U7 e9 Y+ {( j ledplay(time_num);
3 Y, b0 w* F2 v N* Q }3 F/ w9 a# O h0 A1 K5 p
time_num+=get_num;5 @5 F; f7 X3 E& R* f
3 X5 P8 v( _* g! y3 |+ E while(1) //输入火力挡位
9 |/ J4 l: R- D$ F; N {5 Y& i8 R1 L* R; F2 x4 Z
get_num=50;
: f. x- c/ j+ L2 f+ y, l' v8 _ if(testkey())
+ p: T' {& K6 D- X {
% u' b1 x9 Y3 u$ d F- |( y; ~ delay();
8 w6 B" k( A: r0 R# d+ T) s6 ] [/ d if(testkey())
2 z6 U: F' j% G) t, f. W/ L get_num=getkey();5 N n' v4 R! Q7 v
}' k+ C# e$ b0 P8 S7 C
, M' ^2 ]* q7 l# Q
3 b3 }6 ~+ a% V/ y% k! x5 Y…………限于本文篇幅 余下代码请从论坛下载附件…………
: \8 P% z& y W' G. c; J; w6 a- k& D ?: D
' T2 X1 M1 o f1 c; h
! k( [9 r- b) A3 z- E; B6 f# T7 n0 Q( l! }& g. a
|
|