找回密码
 注册
关于网站域名变更的通知
查看: 320|回复: 4
打印 上一主题 下一主题

关于微波炉设计的单片机仿真以及程序资料

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-6 09:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
关于微波炉设计的单片机仿真以及程序资料1 x: D4 I. ?8 p  {" I

* p/ {$ k, p1 s1 b3 V$ R( K
# j- Y. D+ |; K8 x
有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
, Z5 E( {4 h, |: Z! X) d ' M- [! K1 W1 ~, \

/ \( a! I2 n; a  Y4 r0 | / \/ t/ B8 q- F& U9 P8 [' b

9 Q& y' b! x# q5 m, Z. U  _+ v& r单片机源程序:

2 R0 K& F) C- U2 r7 r/ A7 K#include<stdio.h>/ L. g& Q6 N% {0 s! h: X
#include<reg52.h>0 W- {9 f9 E/ a7 s4 L; }- V
#include <absacc.h>
' P- f6 e  ^9 y) A  Z8 Q#define PA XBYTE[0x8000]+ H7 `1 E+ P1 s/ m: y/ ^4 C
#define PB XBYTE[0x8001]+ h' `( J4 L% O# D" [5 m: X
#define PC XBYTE[0x8002]
+ d2 N1 f' Q$ @; I#define COM XBYTE[0x8003]4 u0 ?# i9 C/ y1 [  `- @
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}};" H) F' _# \8 `& Z' w$ G0 g' f
unsigned int i,t=0,time_num=0;2 S0 b" T8 h1 T7 l# G; \5 h
sbit light1=P1^0;/ e* ^% K, h  q  `# ]" Y
sbit light2=P1^1;& f# y0 {" ]) X' d4 G2 f
sbit light3=P1^2;1 P5 ~# H) a$ g* [. O
sbit light4=P1^3;
0 K( _6 Y' ~+ o  Q5 c$ |/*===================延迟子程序============*/
/ g8 e) O+ ?# [( nvoid delay(void)) \* A0 r: w3 F, d' l  F( T
{
" e, o) F2 \2 c! V0 z   unsigned char j,k;& h% d3 S( Z2 d" I1 S7 \  \
        for(j=20;j>0;j--)
# D, O/ _1 `) T& x( r+ @& F                for(k=200;k>0;k--);
" Y. g' G9 E' @* C# h# c, a}
5 n9 m) ^) c1 {$ {; B8 ^$ L. z5 I/*===========数码管显示子程序===============*/
9 q9 E6 f/ Q8 N9 O8 \# Kvoid ledplay(int b)
4 j' Y0 W8 l) G( u5 T1 [: f{4 W& S3 A% Q" L! m
    unsigned int m,x[2];+ K' K4 [8 {6 @' r: [
    for(i=0;i<2;i++)+ _& ^; r# k5 Y- u4 s; z( \
    {
2 j: F5 L% g' f) f* U        x=b%10;- W0 y' F* }# @, [' q  b8 d
        b=b/10;
  T' [" L# G" O' k! t  g1 x3 V% }    }% s) r  a6 ]+ e8 Z8 ~2 \5 b
    for(i=0;i<2;i++)! ?' u+ b) s& ]6 }0 }% S0 I
    {
. D2 i- V' `2 v" W3 q2 m* F6 o1 T        x=ledtable[x];
5 b% u8 A  H  e    }9 `6 Y4 V0 R* v- K& D; }" S
    m=0xfd;
1 W6 d" W0 ?: H0 x; n, A' K    for(i=2;i>0;i--)1 q; _# y; C6 J$ z( O8 J, |
    {
5 L8 f- V' K- g- f5 o+ }  O        PA=x[i-1];
+ t0 P! z& }0 ]* g" D- o! c  `        PC=m;* Z7 _( y# \+ R! a$ }5 c4 a: Y
        delay();" V  u) b( [& p0 [2 I) E: C) @
        PC=0xff;7 ^% G. W  E) J) W4 D
        PA=0xff;( A6 y4 q% J& G
        m=(m>>1)|(0x80);; j. Y% Y) x; T4 w+ Z) B/ \( B1 M
     }2 ^& a  E* ]+ D% x- M5 R! k
}* o* j- W5 F4 B2 I& A* `( n
/*=============测试按键===========*/- ?# a/ T+ j+ I3 j" q! `8 F8 @
unsigned char testkey(void), H# y7 v' x) r7 L& u3 `1 V" L9 J/ X* d
{
& j  F& i) F4 X% K    PC=0;
( a# A- v( r. {0 n5 M" _$ w   if((PB&0x0f)!=0x0f)+ X; Q* N. @. G: U
         return(1);
1 w* h) A+ J; S  w% f) L4 y3 n1 k    else
' ~5 g9 b- V7 V% [8 U         return(0);3 [# Q0 v. S8 r: `
}% q% z1 G6 a) z6 z" s: y& ~& Y3 C

; g3 [9 ^0 M8 a- t' a- K5 q/*===============得到键值==========*/9 [4 k( w6 l5 ]# z) x) w* p( ^
unsigned int getkey(void)3 B5 S6 ^& Z& }- w, f
{
' ?: B+ _9 n0 j% P) J1 l  ]: ^    unsigned int x,y,m;: E/ ?# E7 \" ^9 S( Z) e1 {
    m=0xfe;3 Q# C1 m& x( `, b; ^' H/ Y
    PC=m;
- `: @& f, u& ], _" @    while((PB&0x0f)==0x0f)           //键盘扫描
3 J0 V0 N5 `, [5 O6 S6 v    {
2 u. Q2 Y4 ^2 y) e            m=(m<<1)|0x01;
* l  D+ l& e, o# r6 ]                PC=m;
: s8 Q, y3 q  x& N4 ?        }
# p3 E2 p# c+ ]. u! _    y=m;
" @$ m' ]# e" C9 o% k    x=PB;# {5 W/ j4 {6 ?2 C
    for(i=0;(x&0x01)!=0;i++)         4 B; p9 E$ N) h- h1 p; e* G
           x>>=1;
* f: @2 d+ t4 |6 q    x=3-i;                            //行数8 y& A) _7 X! ]5 R
    for(i=0;(y&0x01)!=0;i++)
, h" c. W; s0 a8 t6 m* g+ X' v           y>>=1;
% f- d5 W% u+ R. d. \. V1 e" V    y=5-i;                            //列数/ A, ^; |3 N' I; d- j
    while(testkey());                 //等待按键释放  b" l% `+ e5 S- A& ?
    return(keytable[x][y]);           //查表得键值% x* F# F* }" J7 |. c7 y1 t
}
: [9 a9 F: H  p) s  y/*====================main=============*/
2 P+ Y" ]9 |9 A+ [# I; d. Rmain()' t$ a) T1 n, E
{   
  b* }7 i+ L' p% F     unsigned int get_num;
4 n5 ^  G6 C7 F7 P* u% x     COM=0x82;
8 L, a/ Y6 W0 u! cstart:while(1)1 t+ E$ z$ q, W" m7 ^& g$ q* L
     {   
& W, _9 y4 j, u+ B5 \         while(1)                     //开关0 E* t7 D1 D& G  z3 V
         {  PA=0xff;
8 e) s3 ~6 \6 s) J4 o) }            P1=0;6 J" ^* r; e2 C% H4 X( ^, y& r" a
            TR0=0;/ J( C6 c9 _  J& x! b; P* s. o
            ET1=0;7 o, D- _; w$ R$ [) [! u
            get_num=50;3 ?' n" V, v: s% w9 X6 c2 k
            if(testkey())
$ m9 ^; r) R' P0 i' \! |0 S& S            {
( H0 g7 T% z' R# D4 _  C/ y                delay();4 D# ]- O$ h4 P3 I0 r8 V
                if(testkey())
8 ~' E& F( Y; V% g  V4 Y: @                    get_num=getkey();8 @. q+ l  [6 V; D% A% o
            }
. v$ W6 c, Z$ `7 w& Z+ N" q            if(get_num==10)1 e! w8 w0 N+ k% e8 _! r  }+ o
                break;
; Z3 }1 X! w. C8 V" w- _         }6 y' Z7 _2 T# R% s: ]# \
         light1=1;4 x1 p) x" A' J0 p& y; a

( }  v$ t1 [( ]  Z. O: \         while(1)                   //输入第一个数
+ @/ N: _& g; |: f' k         {6 N4 j7 c) h. d0 D4 e. @, R
            get_num=50;& E$ @# i" ]& H% N% j6 n+ H
            if(testkey())
0 X8 `! Q+ d+ S5 Z! ~            {2 t; q+ T8 k0 Y/ I4 t0 v6 U
                delay();+ w+ H3 E7 ]# R' Q- v# L
                if(testkey())* o5 o) k- Y+ D; X: I# J, h; z
                    get_num=getkey();( e/ ?9 b, _! r) }! E* I) ?7 N
            }" u" H' M: b4 f. \7 c
            if(get_num<10)+ n, Q- v3 m8 E" I
                 break;. w4 t. n. w5 Z. c
            if(get_num==10), A, H0 O) K: }: Q" l  ?. \  S
                 goto start;
, p2 K2 G% Y) I            ledplay(0);" v9 r0 n" F* U( d: J& M2 o
         }) I# c& o* W$ N3 v$ @! a4 U
         time_num=get_num*10;0 _8 S, s+ B) l+ k3 w/ O

' d* }" v% e) ?( J# ]$ z; S1 R& J         while(1)                      //输入第二个数
$ i" n" F3 L/ o0 }' M, J& {: R         {
) X; F3 k6 O: Z; R+ I! q' J5 O            get_num=50;
7 O; K/ Y7 D6 P& s1 }8 {* A# W            if(testkey())  ~  ~) e* |9 K+ d
            {+ v. W+ X! c  I' @
                delay();
# M9 f5 T) s4 J) @                if(testkey())
, D; D9 U; J6 Y  X% D                    get_num=getkey();: e; m# {/ k( n' T! F  B
            }# Y) n3 C+ c6 A- K# X
            if(get_num<10)
- a5 v; X; F" [# F                 break;
* c: @$ K* p0 D, g9 z            if(get_num==10)
4 `1 \8 f3 a4 b# k4 w8 K                 goto start;) X. \% I/ g$ q" I6 D' f
            ledplay(time_num);" L& r& J; `5 a2 Y' _& J7 |+ v
         }
% x# {% y: x# \4 `8 a* O         time_num+=get_num;
1 O% z% P' |& u  I/ ]2 ^4 P
0 K; `) K8 q* G& Q  [# p: ^         while(1)                     //输入火力挡位8 [9 e9 Q7 J# U- z& U- C4 W8 L  e
         {: x& W8 e4 s3 R2 N6 j) }
            get_num=50;3 u7 u9 q0 P& F/ D6 a' p# p& Q. c
            if(testkey())
4 ^/ G6 q. a' `$ H            {8 l& e- s3 b& F. {0 s
                delay();
% t5 \, @2 _8 m, {  t                if(testkey())
- g2 o1 M% p' W9 x                    get_num=getkey();" p9 e; v+ T  s3 F+ }
            }
) H. b8 m% `6 U* U, i) U5 ~" S$ Y7 W) f# L% Q' W

0 J% k: i6 S$ Z1 P" \# S+ f0 V…………限于本文篇幅 余下代码请从论坛下载附件…………
; X  B- D! B1 S8 f! M1 \
游客,如果您要查看本帖隐藏内容请回复
3 B7 \! Z$ o) q. E8 N. }3 w5 a9 q9 }

) N; |& w$ |9 U# _8 B  H( l9 U: Q5 D
9 ~8 B  }$ F8 l, O6 X7 Q
  • TA的每日心情
    郁闷
    2025-10-17 15:59
  • 签到天数: 59 天

    [LV.5]常住居民I

    5#
    发表于 2024-6-5 09:05 | 只看该作者
    + ~% n0 c  @. a# Q
    感谢楼主分享,学习了
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-4 02:41 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表