EDA365电子论坛网

标题: 关于微波炉设计的单片机仿真以及程序资料 [打印本页]

作者: helendcany    时间: 2018-12-6 09:36
标题: 关于微波炉设计的单片机仿真以及程序资料
关于微波炉设计的单片机仿真以及程序资料
6 {9 _2 b' d6 J$ ]% |- x0 z
9 }- O: ?  }3 V& }, Z

; @3 O0 t# |* l2 r6 q) K有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
1 A9 i$ y" U# D& e6 j) q& S; d ! W3 X6 W! s/ X  t* [0 I( z6 Z

' ]/ D) u9 ~3 I( R
- z: l, I5 B2 I) O4 _
6 |2 \  g; z  g2 p' i$ ?: r; w; Z( A单片机源程序:
1 R# B' k9 U: L% ?
#include<stdio.h>
2 a9 i; M# r" b' `7 J1 i. t#include<reg52.h>' u3 n) I( U4 E
#include <absacc.h>
' h2 q; g7 L5 p9 i, m9 Y#define PA XBYTE[0x8000]
& ]8 w/ y4 Q3 u0 ?#define PB XBYTE[0x8001]
, p  r- i' L6 _* P4 `#define PC XBYTE[0x8002]
1 ?) a5 E& j5 L. j: L# D& W, y#define COM XBYTE[0x8003]
' Y# R# |2 F  ^/ Dunsigned 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}};
7 }) D- s; \' t' m4 S! t# junsigned int i,t=0,time_num=0;
$ W4 s! Z0 A  T0 o9 \sbit light1=P1^0;# H+ i3 f9 ]7 c$ P: s) m/ t/ T( N
sbit light2=P1^1;5 a* n* v  ?5 `! S/ [6 v! W2 |: R
sbit light3=P1^2;
) d* t; t$ }$ e5 l; H' Bsbit light4=P1^3;
  `$ O$ x& l, f- V- b/*===================延迟子程序============*/8 d1 T& s- ^, V4 H$ V% T9 y
void delay(void)
" ~: J7 H% X1 ~* [# s# L) |) |7 m{8 f7 Y3 a5 }0 h9 Z
   unsigned char j,k;% M! `4 s( ^% p4 M" `. E1 j& v6 x1 \
        for(j=20;j>0;j--)9 Y# J9 s/ r/ \
                for(k=200;k>0;k--);
2 n6 b5 Q! D- e, _: a$ b2 W}( ]3 x& ?. I4 n7 G. B2 _7 F
/*===========数码管显示子程序===============*/: s" b0 i  V' m1 B5 A9 t, c8 |- P
void ledplay(int b)+ q0 D4 X3 A) I% U/ x( L
{0 R/ f3 J* ~6 w9 g, A3 ~) H
    unsigned int m,x[2];
" ?, ^5 `$ h) U& j    for(i=0;i<2;i++)
1 `; [* }3 c6 e, x; b; Z    {
5 L* n5 W" g1 R7 O* @        x=b%10;
( [! y0 _$ A( U, C% H        b=b/10;; {$ F$ [/ {- Z$ P
    }/ H7 t! z; N4 v/ f
    for(i=0;i<2;i++)
1 Q1 m* {$ A3 v% v( G( Z    {
* J5 y; K9 [* r        x=ledtable[x];
! P2 g# P5 L8 y3 C    }
$ r- \/ ]8 z$ Y2 D4 {: t8 Q9 {3 X    m=0xfd;* o* M# Y4 A. t5 t7 B* Z! \- \
    for(i=2;i>0;i--)) X' ?% e+ f$ g* n5 i& A
    {) |4 @5 p8 ]% H5 w& S5 X' _( b( @
        PA=x[i-1];
6 D; `/ j( ]9 ~1 N( M6 x4 D        PC=m;. Q" j! {: P0 t5 T
        delay();2 }% E. I* }0 O& [0 g
        PC=0xff;
/ Z7 e$ Q# L* n- Y% j; N        PA=0xff;; x6 ]9 C1 H3 Y8 f0 b
        m=(m>>1)|(0x80);; N: S* v# M# k! n1 K" V
     }
- C7 k- K: i3 |/ t}# L6 c; h' v1 J0 _
/*=============测试按键===========*/
9 r+ U$ p5 }: e* J# c. }unsigned char testkey(void)
- t, b$ H" \# i{' A8 @" f' S; C, _# i
    PC=0;' H" e* o$ ]  S/ }' _0 u
   if((PB&0x0f)!=0x0f)
3 y8 B% Y* Z! G         return(1);+ M8 K- T" X5 J! o
    else
& Z+ w' w$ \) q; ~3 D" }# H         return(0);% a6 f) v; A- ]5 p7 ?
}
; [; U" W$ S2 I8 A: A0 H3 Z  F5 Z& O7 o! v6 q
/*===============得到键值==========*/7 I8 `: Q5 g0 b3 M
unsigned int getkey(void)8 k/ _! u+ O0 I. O% z9 Q" ^: P. d
{
7 }0 p) E/ z0 d/ w  }    unsigned int x,y,m;8 t% O- X" P5 _0 L
    m=0xfe;
" M, W) ]' ^2 m0 }  e) c2 _    PC=m;
" ?4 j+ T, u2 e7 W6 C    while((PB&0x0f)==0x0f)           //键盘扫描
3 R( K% A  u! U! p2 L% D6 b    {* N* D; k3 J5 I* F! x  ~9 R1 G
            m=(m<<1)|0x01;6 _) I% f. T' H: F. ^. Y/ B$ N- q
                PC=m;
- P- R$ X8 t8 p/ _        }
9 @- i8 W: M) J6 r2 `& C( I    y=m;8 k5 `' X; N) d7 R0 i  A" a
    x=PB;5 G3 {5 z7 T! I2 ^* a; V3 M6 z7 Z
    for(i=0;(x&0x01)!=0;i++)         ! x1 m) _9 x' W. ]3 ?- k
           x>>=1;
/ Q+ w8 S3 z6 f3 v2 y( t: u    x=3-i;                            //行数
5 y! }# [9 [( R) n1 Z+ W    for(i=0;(y&0x01)!=0;i++)6 {5 x! U& ?; ^4 K( r1 U9 O& {
           y>>=1;% E+ Y0 {0 V" i( c5 N
    y=5-i;                            //列数
8 [1 A; j% J; F7 D+ d    while(testkey());                 //等待按键释放
: Q6 Y8 K: a6 J- P! t5 ^1 v    return(keytable[x][y]);           //查表得键值
! f% h; j  O2 u- q- k}! n. r0 [. W8 y
/*====================main=============*/# Z6 [7 \+ }0 `+ I& z
main()7 D' Y7 H4 w9 Q5 W  V
{   
6 ]  A' Y" |) s     unsigned int get_num;& h) n1 A% X' j  S
     COM=0x82;& z1 ]" ^0 m4 `8 @  X
start:while(1)$ d% K0 Y0 p3 b+ V/ Z
     {   
0 g" c$ y% p5 y/ {$ O; x         while(1)                     //开关
$ X) b4 R7 ^, U         {  PA=0xff;' Q: Q' P$ q. }3 r& ]
            P1=0;
9 h; g/ ~# q6 {9 m# f            TR0=0;
( d& q1 P9 {0 l; L            ET1=0;' G, |: w4 m' @; Z  s
            get_num=50;
  J; S+ \% `- ^# x5 r            if(testkey())& d  R! O5 d) y( G/ }+ P
            {
; v- F' z& D; m, D7 @# m0 d+ ?1 Q                delay();
4 [* }2 [3 D2 [' ~- S/ i9 g' q                if(testkey())
0 M  z. M2 M: x% Q: v7 a                    get_num=getkey();
$ `# {2 Y: B. |            }
0 O% e1 Z* m" E5 z% V) @. B            if(get_num==10)
. ?$ _6 ^6 \# J! H4 E                break;
; k$ Q4 Z- P. {; t4 \; t/ x         }* v9 ?2 r; ^  b6 T* v! P) v
         light1=1;
3 S! E* C# [8 \0 b) x- q
1 \3 `0 h% c! q- T, k. N         while(1)                   //输入第一个数
6 n" W3 O+ E1 d6 W         {- b( D, {' O" ]2 C9 b* t* r
            get_num=50;
- S% _3 ]8 q- f4 d: ?0 {            if(testkey()). T/ d( y7 N# v, N
            {
2 _; X7 h& X, I6 u. S1 P                delay();! p7 m8 o# I* G' l% e) N$ J& B
                if(testkey())
( `% s* a: |6 E- {; Y; v                    get_num=getkey();
' s# \; j3 I- O1 c0 e) Q7 k4 Z            }
9 u5 {* s9 H8 j, h) K/ A- ~  Q            if(get_num<10)* T3 I# P- l; P. e1 a& y) t+ u+ a; S
                 break;
/ J/ n* a% B, i: d/ r2 }            if(get_num==10)7 Y) Q( H1 k% P" }5 [- E' ?' m
                 goto start;! s. g" z* Z3 ^3 b3 I8 ]
            ledplay(0);( ^. V* c" A$ ^/ z0 T) ^
         }
8 M) @8 h" `0 r# v" _7 k) y* d         time_num=get_num*10;' m- k9 s, [2 M# s/ F
; k( U: ^- b3 K6 `) a  |% J
         while(1)                      //输入第二个数2 ?" a/ S$ W: `
         {
! u$ m3 f6 m! |# U  h% D$ A            get_num=50;
0 |  n6 X) ^0 S# i% D+ V            if(testkey())* p, H, f$ r5 r
            {
( K: K6 p7 f& n: D                delay();
; Q3 A6 R/ t/ w3 e                if(testkey())
0 b( t% Y7 K7 W' A- `5 x1 `                    get_num=getkey();9 x% ~' o8 E/ f
            }! \4 _1 w: l3 O  g
            if(get_num<10), ^0 w6 D* T* D
                 break;
8 z/ |. ]( {9 [$ Z; B- u# z            if(get_num==10)
/ b# P9 V) B  V/ v# L# e                 goto start;# `3 m3 B7 n7 L* {# X  J! e
            ledplay(time_num);
2 {4 W" M. {4 o" B- b         }
. U, }* r) g4 d         time_num+=get_num;
6 T, m8 }* _! T
1 s0 @9 Z: J" b( Q6 @$ N* e         while(1)                     //输入火力挡位
- s* @8 L" `) |         {
/ Q- D" |+ _' a1 p            get_num=50;8 J; a0 Q3 ?3 _1 \! A
            if(testkey())- ]; H; C5 g0 ~" z( `3 @1 z
            {1 l1 C. i4 m$ c1 e+ M; E& L
                delay();/ q6 {( I0 e8 W  {
                if(testkey())6 M) e$ j# M9 w1 v+ R7 G1 S
                    get_num=getkey();5 J+ G' @1 e# e+ h  _+ q8 w$ ~
            }% B0 i+ S/ j+ n: g
8 F+ v+ S: @: A( ]# I0 x. L  ~

! E9 _$ R2 G. B9 T# C, X, i…………限于本文篇幅 余下代码请从论坛下载附件…………4 u+ e$ I% h6 S# d

+ l& s1 T! g6 ^. N7 p$ N7 R
5 Z: \5 y; s0 j3 W

! F. `/ T. Z+ \8 R$ e
( A& i. O9 m, h7 l- s4 x8 k9 D

作者: Demyar    时间: 2018-12-6 11:26
学习一下
作者: wu68aq    时间: 2018-12-6 11:26
看看
作者: yxlk    时间: 2018-12-6 11:29
谢谢分享
作者: shengzhidao702    时间: 2024-6-5 09:05
/ p0 j- G, r: H' ]% q+ {0 Y; W
感谢楼主分享,学习了




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2