EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机多路开关控制 00-59 99秒计数器的proteus仿真及程序 # `% w$ P' p2 h* g( I/ D& a/ S4 j
- q5 O. c% A7 v/ |# b8 U8 ?
% e! q: }; G) q) n4 b3 u# L# B
多路开关控制proteus仿真原理图:
: K5 p- n. E7 ~3 ? 0 T. F: y( n- E! i, A+ p4 E3 ^. ^
8 F+ z6 L1 k; h4 M$ W& h, ~
单片机源程序: |
#include<reg52.h> * o, s+ y6 l$ k6 i. Z0 m& U
sbit P10 = P1^0 ; 5 g. W3 w) r ]: ^& F5 X
sbit P11 = P1^1 ; + v0 O( \" \+ M, O( q( `$ p: s
sbit P12 = P1^2 ;
2 E7 G4 ~" @4 L3 G8 y* Y! msbit K1=P3^2;
$ Z a l+ P$ U! m- Rsbit K2=P3^3;
|6 G5 A: P: ? dsbit K3=P3^5;
1 u0 N7 `! v; p2 c2 ?2 Y2 o3 a( U8 A9 H' s% a% r/ O% x
3 `: M% u) F; p/ h6 S I
6 q4 I; _+ L6 a' e" l; y //标记的用法,一个按键控制一个LED灯的亮灭 6 p- m6 ~$ _2 O5 D% q9 \
void main() ! M/ i* k; f0 s r. p3 H
{
; L! F4 j8 T2 B* D( l/ e9 _$ i unsigned int n,m,k;
6 O& K' i: }' ]' X# P3 P9 b; f3 n" j+ N1 \/ t( E* y
while(1)
3 {# D$ F* I( \" f9 \$ L { - K9 | v* h5 U* @) @9 K1 p. R! M
if(!K1) //如果读到K1为0
/ y, ]" V5 v( t5 ~7 i3 I7 l. ` { - `* R6 N; o# O/ L& \9 n5 m
for(n=0;n<1000;n++); //等待按键稳定
% @" X5 \+ X5 d" [: O while(!K1); //等待按键松开 4 k/ Q- D" t: \9 V- `. h
P10=~P10;
9 N& n5 b( S1 S1 q @: L, o- q* G8 E$ \ } 7 L5 X N& ~* n( [4 x( v7 l$ w" I* O
8 @- f8 J, T; ]- v: G# k! s
4 R/ W( l" ?1 u- K- l+ G0 F$ C if(!K2) //如果读到K2为0
: I( C6 U- O: K {
% V! F4 y) U" [+ Q7 n0 k9 w; _ for(m=0;m<1000;m++); //等待按键稳定 0 }/ {/ ?- W( U. z! a
while(!K2); //等待按键松开 ; `9 ]8 T) l8 e6 @5 o( K
P11=~P11; , ]0 S3 K; L, Z1 [, d/ t& I
} : M6 {# {+ z. G# a1 f+ `! t7 B
1 m, F1 d) b9 {0 h if(!K3) //如果读到K3为0
% X6 n Y8 t( ~5 ]- k! M {
4 q- `: ]8 ~! _4 q0 {- K1 O# b for(k=0;k<1000;k++); //等待按键稳定 , w$ S( f0 u8 [9 z' M, }
while(!K3); //等待按键松开
Y1 W4 q; k* P' l$ L# _ P12=~P12;
* I( i I3 ] X& k4 n( y } " A0 w! H0 B5 q$ [3 J: X! e3 u: k
1 B4 d: m7 N9 A' L1 M/ G
, s& \ y* S1 l) c1 i" p
2 [* ]* \1 r# ?( Y$ b5 C8 v! }
8 v/ q) c) ]3 E( @1 G( q } ! e% G8 _- ?7 U. R9 m6 W
3 y8 R& D. `8 q b% e: q0 k8 t4 I" y}
4 K$ |. G9 z" R
5 b' Q+ \5 p6 ?9 | h ' [# `+ l/ q, f5 V
4 F7 o* w, K3 m, ]/ [
|