|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于微波炉设计的单片机仿真以及程序资料 t) B+ n5 W9 @
( G- O4 @+ X; N( M, R, U
( a1 ~/ v' U; K: w* t
有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
0 ~6 N! f$ H( }5 D5 w+ D
) k7 _" m f+ |- b L$ I' {& \8 k* J+ k6 E) d+ n
" {- a. m0 j' X; w+ q. L1 a
8 h: |" G* j4 v) @( f% g* Y
单片机源程序:
. r" d) Q, ^3 t6 G/ Y#include<stdio.h>& d- P8 ~+ q) m6 O4 r
#include<reg52.h>
8 ^, k+ a- {4 t I7 Q#include <absacc.h>
& \8 M N- ]) |! ^$ c#define PA XBYTE[0x8000]
X6 ]! p6 K$ r7 K6 Z6 q& Z#define PB XBYTE[0x8001]
4 l& b3 e1 B0 f# G7 m6 H#define PC XBYTE[0x8002]
& @% C9 q8 `1 V: f$ {- C#define COM XBYTE[0x8003], |- w, H; e" ~( E5 D& D* j# a
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}};. c* H1 E2 v% G+ o9 g/ z# W
unsigned int i,t=0,time_num=0;
5 o/ M# ^( I! L- w8 Tsbit light1=P1^0;
$ v3 O5 i! V0 X3 H J( r. e$ nsbit light2=P1^1;
7 b1 h% f) z4 a( a7 }" tsbit light3=P1^2;
+ Z7 m( S @ d0 }( Asbit light4=P1^3;
8 E d: m" Q/ S' P4 i$ J7 J5 D& E/*===================延迟子程序============*/% X8 _2 |( Z5 `+ |8 r9 m! s
void delay(void)
1 W7 s9 h |; s{
6 X, n. C1 u9 \: h unsigned char j,k;4 P/ e' L, y5 u) j
for(j=20;j>0;j--)
5 |% t. N& G: E6 K2 ?" F6 W for(k=200;k>0;k--);0 L: `' u. c9 v. n- s8 W5 N
}
" u0 Y+ ^- {) E6 `# ^4 {/*===========数码管显示子程序===============*/8 a7 P0 A& _4 k5 k1 M# ?: l6 g
void ledplay(int b)+ p# ^5 T* P0 |! P" T
{) j+ [8 M( A" X6 M0 D5 b0 f
unsigned int m,x[2];
" m+ a7 s/ b* v1 r% O for(i=0;i<2;i++)$ Z K9 O( y; P7 m
{
+ U/ J: r' z! K z4 M x=b%10;' [' a( H/ n+ l8 M4 h4 L, Z
b=b/10;
% V6 J6 u3 J) f& ` }
* I+ `! u: D" p# o J* I for(i=0;i<2;i++)
. b: t* Z. L8 u9 d {! S8 h8 m: \) I' S' F4 v
x=ledtable[x];6 C6 j: G0 V5 v% Y
}
/ f9 j9 c7 z, X- V; d m=0xfd;% i7 T; ~3 u# C- J3 o
for(i=2;i>0;i--)$ k& L8 M7 ]! S' G
{
6 I$ o3 _% \4 u/ u$ k, v PA=x[i-1];9 q* E0 [/ p7 T2 r e
PC=m;
N0 \9 M& j7 z" i9 o7 B& X delay();, M" a5 V. m( t, D
PC=0xff;
. I3 g" _3 @ e5 X PA=0xff;
/ _/ M7 T' Y7 c6 g, F+ h' R m=(m>>1)|(0x80);5 [+ q, o4 l% u1 h* G+ w
}
! W; w7 r& I1 F0 z- ?, v}
* y5 V1 W0 w/ W( o' v; O) m: g+ ?/*=============测试按键===========*/7 [/ a2 t! ^) {0 t
unsigned char testkey(void)3 I) V( I7 o! j7 {8 f8 n
{
4 m% q+ R$ S! }, Q3 A( V1 D PC=0;
$ x4 x2 t) k; Z ? if((PB&0x0f)!=0x0f)6 V7 Y9 T# g" |5 i+ Z, d- r" A( t7 O* ?
return(1);; b% q1 q! V$ a) o1 M; C( R
else. w _) i$ c6 d) ~
return(0);
: m& H& q2 a, j8 U: F}( ^' J" w+ n- x" n( j3 n
1 ?% _- Y! t. \ ~7 r' s/*===============得到键值==========*/( p$ V5 A5 _) d( a* h: ~6 `9 f
unsigned int getkey(void)- u" W: @8 I$ b; q2 |9 S( v# G. ]
{' k( F$ e$ \3 L- V. _# I
unsigned int x,y,m;
8 ~# U) W, C {3 k m=0xfe;
# a- g: b: T4 ^- a% M6 a PC=m;) `# ?. |' i6 {& @$ H4 s! `) L
while((PB&0x0f)==0x0f) //键盘扫描
. \, L) A4 t0 F3 T {
2 i! w9 U! w% f2 V @- Z1 S m=(m<<1)|0x01;
& }- W" F4 h9 D. ^: M PC=m;/ S$ X6 S8 D* }5 @/ W% V
}$ M/ L6 ^3 ~- }' A+ f
y=m;
8 D. W: M3 g- e c* K! ^ x=PB;
& d! @3 W4 ^. m4 a! Z y for(i=0;(x&0x01)!=0;i++) " I9 P3 R; ~' L
x>>=1;
1 D: u. w5 ?" o9 c x=3-i; //行数- C, m# a9 ^0 W
for(i=0;(y&0x01)!=0;i++)7 j5 Z1 q. `1 Z+ Q# r$ S2 S! D9 n3 O7 k
y>>=1;$ d5 K1 p8 K9 O5 r7 ^0 I2 S# N9 p" Y
y=5-i; //列数+ J% v" c0 X* f
while(testkey()); //等待按键释放
) u) p+ U, N. \7 V: h return(keytable[x][y]); //查表得键值$ E& ~; D& _' [0 I# L
}( |1 k0 [ t" W( x' T9 X/ }" c' n
/*====================main=============*/3 R3 r( n3 i [
main()
5 ~* |" N b. }2 T1 B{
! p+ {! e9 b3 a7 I( a unsigned int get_num;
) L* @2 i, V1 p9 a/ P3 B' K6 b COM=0x82;
6 i2 E) {, c: n) N$ R+ T, [, X4 nstart:while(1)3 N0 n- z5 ^( V. i' Z x( s
{
5 Q2 z! }4 S! @& m while(1) //开关
: b9 A! s+ J. M; S+ U6 `$ r { PA=0xff;
, [* w) Y; |0 e B P1=0;5 v* ?1 u' H& x
TR0=0;2 y$ J7 H5 U2 T6 E
ET1=0;
3 O) b1 w" O" |/ W get_num=50;
4 G: k' r5 [9 G, m if(testkey())0 m) i/ h/ s/ f. d( a
{/ h) y! Y8 u/ n: `- u Y
delay();
, n0 N) [1 F0 C if(testkey())
$ ], J1 ]! r# i: ?) } get_num=getkey();* f6 d" A, v/ N. Z2 y7 |/ K! Z
}
/ }. H* K% ], j( B9 u( x( } if(get_num==10)
/ a" S/ A" m/ J- S( ] break;
6 L6 }+ [7 }+ {" d }
9 S8 p$ {& J* V5 y/ s& f+ X light1=1;
! @5 L9 g1 J7 B% i# t( p3 J) v! X) Q y/ c3 X6 k; h
while(1) //输入第一个数8 D# x3 C7 t( ? k
{
! z0 F f( `! I' p) e2 B3 u {, j get_num=50;
4 t6 I5 n9 e% `5 ^: L if(testkey())
1 ^, k7 n* |: [- I, n' z" O" U {% \7 j- y2 m, y/ N B f
delay();
" _2 h s% }: e* V7 p if(testkey())7 A- G9 z" R8 p2 [& T! C! ?
get_num=getkey();; c5 e+ F$ B, R& B/ A! A: E
}
% l1 k5 `: B, c2 H$ a- n if(get_num<10)
- e* \5 h ]' V7 g break;
7 E" e+ M# k' t3 n/ e2 W$ B if(get_num==10)
0 \0 ?) e6 J. e goto start;
4 f7 t7 l' }! \( E ledplay(0);3 c( _4 K+ y8 Y1 q& k
}( y9 V# H l6 P
time_num=get_num*10;
$ ]% O/ j: a& i# G" J
/ m0 v$ r7 ~- h+ o# ` while(1) //输入第二个数1 B8 ]" p$ E1 E7 `1 {
{
0 S: Q8 H: ~' D0 \' e b) W+ W9 w/ B get_num=50;
! L% f) u3 H8 v) w if(testkey())# s4 a. ?* \0 R o6 ]
{
0 s# n0 f6 t; n delay();
: d# ]+ W) x6 q# G& B H2 \" ? if(testkey())5 R( ?8 m5 ]5 o: F. i, c
get_num=getkey();$ e8 `( V+ Z" G$ C9 D
}
" s( v3 b" r* w( K. H if(get_num<10)
- A! @( ~+ G( k: o& e break;/ T( i& c3 Z$ I$ ?1 q' X, M
if(get_num==10)$ N o6 a* @8 F/ I
goto start;
9 L. u; p+ x% K" ^4 @ ledplay(time_num);
8 N$ E5 e8 p+ ?* D$ K9 Z }( k. [' z4 H) ~/ o+ I n
time_num+=get_num;
3 T. Y) L Y: p$ O! V& u6 ~+ S8 \& O9 P3 {+ G
while(1) //输入火力挡位/ ~. H/ s6 M2 R% \; N1 Z: v2 V
{* {, ~6 L/ \2 _) o9 i
get_num=50;- K: K& D A" g" L: t
if(testkey())9 `* ^, y! L- ^5 e3 Q1 r
{/ X4 d3 y, J! R$ f7 {' ~5 n
delay();9 H& F" o: ~! R& R! k- s9 }
if(testkey()), ?5 a1 p4 |6 m8 Q; Q/ E
get_num=getkey();
' v7 a6 t3 S7 |5 Y* \& x2 V9 T7 T }3 u/ Z& p5 a- B# y( T9 a
+ w, P }) A# Q
- L& J% ?/ o- o2 E! K; F* u2 U
…………限于本文篇幅 余下代码请从论坛下载附件…………% w( Q' z! S/ `( I$ S5 a/ o
+ u- p) D9 g$ X# ~0 a1 y
. G z9 B, z) t3 [3 K g0 |; h
( l% e- T3 ]; e+ r
9 O( \5 r! U* Q8 x |
|