EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机多路开关控制 00-59 99秒计数器的proteus仿真及程序
' u: x" {4 ?9 m, v! Q b& f! Z
7 }. V0 O, b2 i 8 J2 F; U6 V' g, s! l6 o; n
多路开关控制proteus仿真原理图:
8 G6 o, d8 Q! ^ C3 q
; ~" k+ H5 x( l. |' A: l7 G8 L; ~- p" ~2 K
单片机源程序: |
#include<reg52.h>
0 |! I, p4 O9 Y" n/ Nsbit P10 = P1^0 ;
6 }5 Q/ j' f; m! {/ ~- ~sbit P11 = P1^1 ;
6 D2 V+ b4 C' u& Osbit P12 = P1^2 ; ) @+ M) C, N3 H Y/ [ o% @
sbit K1=P3^2; % I8 I& L" Q8 G
sbit K2=P3^3;
( L# y2 Z- ~0 a; A6 |$ Bsbit K3=P3^5; & t+ x/ G" P+ |: ]7 \$ @
3 }% o. r6 J$ i1 E ^
% |& b/ n* w! _$ Y" l# [4 P7 U+ K
! A) t- m) u4 t- g7 i
//标记的用法,一个按键控制一个LED灯的亮灭
! m. X( D2 u& }) i: ?- fvoid main() ' \& X4 e# ]: I: u" c
{
+ g7 Q( O; U. B unsigned int n,m,k;
2 j C' ?/ R! h4 J- c+ K4 u9 [" b" [# _4 q% w% i" g
while(1) 4 x; T8 ^ n: {0 X' M- X
{
' [% C" u5 F) F* }2 ^ T. J" b if(!K1) //如果读到K1为0 M: g% W5 Q7 K- i3 _+ ^
{ 4 ^" C. Q: ^4 s. Z( V3 E
for(n=0;n<1000;n++); //等待按键稳定 " {4 Q" j6 @4 y4 z; }. M5 E
while(!K1); //等待按键松开
0 L1 e) J; G+ e7 ? d; S P10=~P10;
$ \/ g9 x2 B# |& M6 z. k* T, H }
% J, Y; B4 S; H/ { f" X/ h+ M! F+ i. Y9 U' j
9 ?. N# c7 n! R% D' L ?$ G5 U if(!K2) //如果读到K2为0 W" h! N: o! p% d8 R6 K5 B" G
{ ) S9 l7 }5 i: y n: \/ F+ w6 L5 u
for(m=0;m<1000;m++); //等待按键稳定
: p" z2 R/ ?, R' n+ a while(!K2); //等待按键松开 7 d1 Y3 ?5 H- c3 \) |
P11=~P11;
1 e3 B" r$ E6 l) ^/ u9 e+ g4 t } 7 H0 X' |$ U( ~) K* }; [
' M% L3 z. q( K+ E" O+ T; l
if(!K3) //如果读到K3为0 . H- p: J! R6 b
{ 6 a' m( m& d" s9 K% I( {
for(k=0;k<1000;k++); //等待按键稳定
A d& ]- |# a$ Z- i- K; I while(!K3); //等待按键松开
( x) y9 |" U* _ P12=~P12;
( h+ O% n8 q% D0 P7 J }
5 l8 `) P c+ F& v! y$ }' o
+ C1 u2 X3 W" J6 M
& R2 [6 v/ s6 e% d/ q( F
0 l8 `; G) p# ?
# M+ P2 J+ R: q5 V+ i }
C& \" n$ y1 S& I0 H; S1 A
* \2 t a# z& @( S" j}
2 W; F/ F% r! {, C5 H
( A. Y! Z4 `( D: v) A0 u. D: E
: i7 b" r) V) T+ d
$ x& t/ e4 n; o |