|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机三层电梯控制proteus仿真设计 带源码
6 c. G4 w9 G! ]# P' f# ~5 a8 M6 G) y" G( W, |( t
* K1 w5 C3 S8 X5 n8 i4 h. W" v. t单片机三层电梯控制,使用数电和带单片机,适合新手。, h. |2 K" t! q' i* g
9 a. V/ ~2 {7 |5 ]
. @) f% n( M3 n, _. ~0 T1 p& w
单片机三层电梯的源程序:# ]9 h' l* F7 @( E" a
/******************************************************************
; E, \9 ], ~1 Q AT89S51的T0,T1计数器对输入的信号进行频率计数,测量结果用五位数码管& e# N M) B- D- p5 n
动态显示,要求对0~65KHZ的信号频率进行准确测量,误差不超过5HZ
1 t$ J$ S! O, F) V- o. ] W*****************************************************************/
. m7 t, u" k7 N* j" m& G0 f#include
* \+ t4 m/ @" ]( e3 E; |9 d& H#define uint unsigned int& o2 O1 x2 `$ ?, `' S8 o
sbit KEY_1=P2^0;- u! G6 V' m1 g1 W
sbit KEY_2=P2^1;
+ K6 j* s$ F! h" m% ?: \sbit KEY_3=P2^2;
+ B& z: u G" m! Jsbit KEY_4=P3^3;
1 Y5 D3 r) C# w0 }6 lsbit LED1=P3^0;
: d; `+ x6 L bsbit LED2=P3^1;, b3 ~ U% \/ h/ U
sbit LED3=P3^2;
3 Z. ?# n3 H6 N( n% `unsigned int num=0;; R& g6 t2 T% a- v1 b( O2 o
code unsigned char TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X77};
" L% _/ h k2 Y! @1 E /*显示变量对应的数值*/" `: k5 l+ B2 I- E& P
/***************定时器0中断服务函数************************/$ q) b& b8 a1 h" ^' {
void timer0()interrupt 1{
3 D/ H. T) S4 }( u! I5 h TH0 = (65536 - 10000) / 256;/ U! M6 V/ r \9 W3 l
TL0 = (65536 - 10000) % 256;$ |- ^/ j2 y" u8 {, ?2 x
num++;//记到20就直接停止: K/ |& E0 l) t1 H$ D
//if(num>=50)
$ e# ]" r; E) e/ X5 X3 U$ J* f}; D; p- W) L1 k. |. e1 T$ N
/**************************延时函数************************************/
, D; D1 l4 Y7 ~# svoid delay(unsigned char t){
. I, b& T3 c. U unsigned char i,j;
3 Y3 A5 I8 @3 ?8 d8 G for(i=0;i<t;i++)' R3 r6 a& p/ E4 q" d
for(j=0;j<125;j++);
8 G% K' D+ |- F% @1 x}
* {8 E- v* y! g* `: j' ^5 y: Uvoid delayms(unsigned int xms)
9 M. W3 I( a Z& @{3 ]& ?5 |' L% N! g _/ {4 F! P
unsigned int x;, D1 M. p* k) H) e; o
unsigned char y;+ d$ D; X+ N. [1 H" F$ [
for(x = xms; x > 0; x--)
+ Q' p1 J, Y6 ^$ m. n% v' u for(y = 124; y>0; y--);//11.0592MHz: 114 //12MHz: 124/ M* |$ M: y* m5 A9 Y
}
' S8 P% q( W0 X9 ]# ]void delayus( int xus)
; s+ E7 V4 C( [3 z" T! A6 K{
9 S3 M* b. y2 U; U while(--xus>0);
, Y. O9 E) q! d}
- }% D' M" g: ]0 D8 S5 ]/*************************显示函数**************************************/
9 w8 r. r: K% H) ?5 G
# I4 ?! B# K9 J8 y: Nvoid main(){ d8 _" S$ P8 c j7 i
, I! o9 l! {5 F+ s$ u( Y& Z* L: R
TMOD=0x01;//T0 记时 T1计数' J4 S. s3 e/ ~7 p4 h$ @' Y
TH0 = (65536 - 10000) / 256;$ Y# V @) n; ?+ W' U4 m: Z+ l: b: C
TL0 = (65536 - 10000) % 256;
1 G2 o* S9 s2 G0 i3 D3 F
6 X- x* h6 W ]- I- {, g TR0=1; //开T0 // IT1=1;4 Z' s( ^" |9 a9 M% _& r2 W
ET0=1;//开中断! k$ [7 c6 A( j
EA=1;//打开总中断 0x86 0xdb 0xcf
7 `2 a+ x1 R/ r' Z$ X: V' V0 [ LED1=1;+ c4 h! ]" F& u; R5 ]+ z& g7 p
LED2=1;* e7 h3 f: ?$ K( i! p
LED3=1;- v1 A4 {: P+ N A, s/ t) C$ ]1 U: y: o
num=0; //1 1000 0110 2 1101 1011 3 1100 1111/ l4 a( j) I) p7 X
while(1)! S7 ~- S# v h! {# o
{
. c+ j5 x* x4 V if(KEY_1==0){ LED1=1; LED2=1; LED3=1;while(P1!=0X86);num=0; LED1=0; while(num<500){if(KEY_2==0||KEY_3==0)break;} if(P1==0X86)LED1=1; }4 A" |/ E( Q) s( l( K" s9 R0 s M
else if(KEY_2==0) {LED1=1; LED2=1; LED3=1;while(P1!=0Xdb);num=0; LED2=0; while(num<500){if(KEY_1==0||KEY_3==0)break;} if(P1==0Xdb)LED2=1;}+ R" A$ e5 [* w
else if(KEY_3==0) {LED1=1; LED2=1; LED3=1;while(P1!=0Xcf);num=0; LED3=0; while(num<500){if(KEY_1==0||KEY_2==0)break;} if(P1==0Xcf)LED3=1;}
! G( y" w- o5 `: f* I q) ` Y}3 ^5 c" B- ]1 X+ h/ A
}
+ q! F% P. F8 g6 M K1 i7 Z( Q //
( B& p( l- s9 w0 Y2 `$ t0 \" E. A2 _. I/ R8 D- j
1 D6 n* h5 o. m1 ^% K) r& n
单片机三层电梯控制系统的所有资料下载:
2 K. Q) e8 ?9 `1 \# a* ~2 h
. B" i% Y0 q6 ^. ]2 j$ S9 c# K' f( u( S* T# I
|
|