|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料
9 a& h- h6 R+ \/ _) G X
3 N9 x7 Q1 w$ c' k5 D' \0 S( o
- s! M z% l F/ [有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图3 j) B; [$ T) z4 P, H+ u: f
$ o! g. {1 y) [' l7 o
; k( D5 P' @9 d* q' B# k, ` 9 s' d; e7 @6 O ?/ N
4 O* ]( w/ g5 H2 ^+ |, I1 _, h) y3 m3 i
单片机源程序:
D4 a* k" k& r#include<stdio.h> N6 D2 P+ _& D6 R( n5 z5 \1 Z
#include<reg52.h>6 z$ Z q9 r# d. t4 a! J
#include <absacc.h>3 q4 V' `: }+ |/ i4 l$ q
#define PA XBYTE[0x8000]
1 n( L2 ~: Q( V/ Z, n#define PB XBYTE[0x8001]
% h! g; {( {# n8 b& v' r#define PC XBYTE[0x8002]
. M5 K% t! u" {8 i#define COM XBYTE[0x8003]
! Z" h' Y( I6 k4 F1 y) Sunsigned 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}};
' \' C0 C( ]; J% F& f6 Vunsigned int i,t=0,time_num=0;
; A, |6 Z8 l' \+ N" Z$ xsbit light1=P1^0;
/ j9 R" X8 P3 `6 B) h6 B# i% esbit light2=P1^1;: D$ G7 t1 d1 y) n, v0 ~) }
sbit light3=P1^2;
/ c% a' v: _1 |/ _sbit light4=P1^3;6 ~! r8 b( w" F! P
/*===================延迟子程序============*/" U; t5 Z6 |) K1 h4 l6 N M
void delay(void)
' i6 ]$ K! O# K, S{
; B8 l7 E; K2 O# f# n unsigned char j,k;) m4 T8 F5 ]* Q+ [
for(j=20;j>0;j--)
" e/ B& E5 `/ j& E( X0 t6 b for(k=200;k>0;k--);! n: ]. ~0 `+ e7 ]1 n
}
7 S3 P1 c% T; M4 t. ~/ }/*===========数码管显示子程序===============*/
8 u% g' N% P) ivoid ledplay(int b)' {% k9 f# d0 [) M
{
- E6 f" X' Y5 C0 {" P unsigned int m,x[2];$ j* }4 A. X# w1 s0 _( a; W
for(i=0;i<2;i++)
, v, r6 ]9 i5 _+ d {0 F1 \4 [/ e9 h. m7 x; }
x=b%10;
8 j2 a6 \! R" y: m+ V b=b/10;- M1 m2 r4 {. E" ]$ F0 u0 f
}
$ c+ [2 _8 ^5 H/ ^" ~ for(i=0;i<2;i++)! B' Z& G! E/ B3 U+ A. u
{) y- L B( B$ \+ E
x=ledtable[x];
, g2 K) {% G* g$ J }6 W/ r1 ]0 K, C1 S0 q/ C
m=0xfd;
( V, T; f W6 Q# [$ ~- h, w for(i=2;i>0;i--)% V, U7 G) U- g
{
i4 Z7 w. z n4 T8 Q PA=x[i-1];
6 ~2 _1 y; A b' [. t! t' R PC=m;4 N; [1 S5 z" Z+ \* y% ?" j
delay();
: G8 T* b; C" L- H, c, p PC=0xff;
2 t# d+ N# ^8 { PA=0xff;% W* y, L4 i% i4 w/ P9 R# Z6 P8 h
m=(m>>1)|(0x80);
- N) Z4 D/ k1 \9 i4 T" {' B }* ^2 r9 m, C& O* f
}$ U- M/ _2 F7 S/ {- L/ y
/*=============测试按键===========*/
1 n- T! h3 \2 S! z' m- Z* C" zunsigned char testkey(void)" j1 X$ e- U$ P
{
( q @9 z f- X5 d3 a PC=0;
0 g j6 ^: S! r# H$ n5 X8 ? if((PB&0x0f)!=0x0f)6 A0 [) h0 M/ R( s0 O1 `: S5 r
return(1);# ]! N: e! @, A7 k$ X6 z0 j }( ?
else
# q: l7 Y* ]. ~* [. _3 w+ L( p2 t" I return(0);
) P |% I+ _5 r% h( |# P+ Z}$ t* u ~+ g3 ^' ?3 E; X+ H
1 Z: G) u1 r' N1 w% D6 W% t
/*===============得到键值==========*/
& X& J5 P. C* n/ gunsigned int getkey(void)
4 i8 c* S/ V& i$ j* H0 ^{$ c3 G) u, o* `' \2 j H
unsigned int x,y,m;4 V% \9 Y# n4 t: q
m=0xfe;
, f9 r1 t# c1 w7 k% ^6 E PC=m;
; h# u: X. C. [1 J while((PB&0x0f)==0x0f) //键盘扫描, y5 u. c0 ^5 j* y ?
{! O1 _; }( E3 g/ ~+ f! i
m=(m<<1)|0x01;& Z& {9 F% ?' Q
PC=m;
7 a1 S( M$ N( b4 ]6 C! [" e }
# p* \4 {* e9 b1 W+ Z2 U2 r+ D/ P y=m;9 h! X- ]4 r( C. |$ O
x=PB;
( j4 S% r0 \. V' i* e for(i=0;(x&0x01)!=0;i++) 0 j1 J- H$ m& z1 Q2 s3 \2 U
x>>=1;8 D9 F. q! \- X8 r
x=3-i; //行数2 J( J4 z+ H& i) E2 Z& d
for(i=0;(y&0x01)!=0;i++)& @$ Q: p1 w8 D' I, f7 `
y>>=1;3 o$ [. e$ C5 ^" _- U5 D
y=5-i; //列数
+ v$ D- a q2 r6 C; l while(testkey()); //等待按键释放
) g6 G! m* _3 x# D# X; K return(keytable[x][y]); //查表得键值
- S5 U6 t0 P6 M6 O' V2 y! Y q$ u}4 J5 R* o- J# B ^8 v& J& g( [3 a
/*====================main=============*/
$ N' i5 T( `, v B4 h0 lmain(): c- c% h. j/ c0 ^' K
{ / R% A! r& ]4 p2 S% d* Q4 I
unsigned int get_num;+ C0 n$ U% \* ^% x' e
COM=0x82;, t: t4 G. v; S; T3 S# b
start:while(1)8 u! ^3 `' v Y n3 y
{
- k! h! {+ h; m% } while(1) //开关$ Y3 q/ V3 Y. g2 r5 T1 w' H' r
{ PA=0xff;0 X% ^/ t5 V4 P& `; ~% c* T$ G4 v; y
P1=0;
) t0 `9 U2 M. E" d9 m( E TR0=0;' ?, m: }$ I* {2 Q- O3 p& O+ b
ET1=0;
- w- ^6 }; a9 e. n get_num=50;7 ~: `* M' V' S
if(testkey())7 F* E& R: Q6 a# k! G2 U
{
9 z: o$ n& a/ X( E8 b6 b9 w delay();
4 l/ [* ]2 E- z if(testkey())4 J, X& w2 i% g6 ~: e7 N
get_num=getkey();; l. e! ]+ u# s% K, P
}1 u! [, y- C6 \" U; g8 [
if(get_num==10). r2 m# m" `/ @$ I& g. U
break;
+ e# I/ P2 ^( Q. g- J4 Q }
# b# H, J# x7 G7 {2 q6 v light1=1;
& V& k/ s2 ]6 x9 Q. @/ L6 [( [" P9 Z4 Y1 l/ [9 R, U& ~8 J
while(1) //输入第一个数
4 {+ L5 ~" n) w+ T {8 J2 j5 @* t. e& V- y
get_num=50;+ k2 e) v9 ?1 ~. G) K' W, W- n) F
if(testkey())
0 S" F( h J2 _' B& Y1 ~! ] {2 M, O# I H. U0 s
delay();7 g6 a3 v- I2 B2 c7 x8 j( |2 x
if(testkey())
) b9 o/ l% L6 d" \4 p6 M/ v get_num=getkey();+ C/ V, u- X1 z3 I3 z0 z
}
! @5 K% v- N# p0 w if(get_num<10)" Q2 E8 w, C/ Q5 [, R' M# P
break;6 A9 T4 {; M7 Z) {) C
if(get_num==10)7 u( K/ t/ i- L' f# b
goto start;% l8 m9 i3 R( z& M0 ~: a
ledplay(0);: B2 X) R* I1 j' L3 @( S4 X
}
& x) |1 A7 i5 o% o" b7 X time_num=get_num*10;
5 V0 l# k3 Z8 K7 a$ z& k6 U1 i- E6 I* H- X
while(1) //输入第二个数
: P' E, k, K! ?) Y! v% T* L2 t { l* p! t$ C6 U
get_num=50;
" |5 W K' m/ H- y; x% U if(testkey())
+ ^+ V: j- ?5 \4 T5 i+ v {+ ?, W s6 U3 ]( ?8 \
delay();* _1 B2 E7 I% d4 Y; K; B. C
if(testkey())6 q8 c3 ?2 g( t5 Y) h3 w
get_num=getkey();
7 C7 Q, n* R# N, |; U6 A V2 C9 R }( \& m2 e' }, p, G. W8 F: c
if(get_num<10)& b; I% a& G" q5 B9 y
break; t" P6 I0 X; @. t* Z, V j$ e
if(get_num==10)
0 ]) D1 C! m3 E3 _+ N$ a goto start;; S- O! Y, m/ d- V/ C
ledplay(time_num);& v, D, I& s9 |2 Q
}; V8 @' ^, Z; M
time_num+=get_num;# V# E: Y$ g: x. ~- s5 ]( c8 ?
) j. C) B8 _0 v, n
while(1) //输入火力挡位
/ g! i5 y1 `% Z7 J {% c$ d# |& x5 f3 Z) ^
get_num=50;
9 F3 D) d4 L8 \ if(testkey())
% |7 Q! s5 ]- y5 P {
# h8 ]" p( m1 K0 a5 F# F delay();
2 T& }. n& W5 y0 {' s- y- a if(testkey())
w8 o8 y) m8 w get_num=getkey();
9 }7 A( e# V+ M+ h5 B3 d' | }& B6 y" O) F* H4 a, {
% M4 k$ B- V2 _& G6 E) ~( ^6 ^! q! A9 y" r# P2 I/ _( L. T. Z
…………限于本文篇幅 余下代码请从论坛下载附件…………
8 B+ V# C0 E6 \$ ~4 J; V& W' N& q- F ~) ^# @6 H5 o
( J- V6 t: X' f+ M8 p1 ^- o
5 x- J' ?+ q. `8 k' O7 r$ ?% X- [1 W- ^: \3 a# P
|
|