急求简单51单片机控制电路C语言程序

核心提示2011-3-8已更新,有结果吱一下砖头如下:#inlcude <reg51.h>sbit OUT=P2^0;sbit Key=P3^3;#define DELAYCONST 50000//#define DELAYCONST2 20//简

2011-3-8已更新,有结果吱一下

砖头如下:

#inlcude <reg51.h>

sbit OUT=P2^0;

sbit Key=P3^3;

#define DELAYConST 50000//

#define DELAYCONST2 20//简单的定时参数设定。

void Delay(char j)

{

unsigned int k,l;

for(j=0;j<60;j++)

for(k=0;k<DELAYCONST2;k++)

for(l=0;l<DELAYCONST;l++)

;

}

main()

{

char i=3;

while(1)

{

while(i==3)

{

OUT=!Key;

i=P1&3;

}

if(i==2)

{

OUT=0;Delay(1);OUT=1;

}

else

{

OUT=0;Delay(5);OUT=1;

}

while(P1&3==3);//此后按任意键,还可以复位重来。

OUT=0;

i=3;//补充

}

}

希望能对你入门编程有所帮助。如有错误,自行调试。谢谢!

#include "STC12C54.H"

#define uchar unsigned char

#define uint unsigned int

#define dataport P1//P1直接驱动数码管的8个阳极

sbit wei1=P3^3;//再有三个管脚接3个三极管驱动数码管的阴极

sbit wei2=P3^4;

sbit wei3=P3^5;

uint a=0;//中断次数计数,一次50ms,20次为1 秒

//共阴数码管七段码

uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//延时子程序

void delay1ms(uint t)

{

uint i,j,k;

for(i=t;i>0;i--)

for(j=15;j>0;j--)

for(k=27;k>0;k--);

}

//显示子程序

void display(uint n)

{

uchar a1,a2,a3;

a1=n/100%10;

a2=n/10%10;

a3=n%10;

wei1=1;

dataport=TABLE[a1];

delay1ms(1);

wei1=0;

dataport=0x80|TABLE[a2];//这里多个小数点

delay1ms(1);

wei3=1;

dataport=TABLE[a3];

delay1ms(1);

wei3=0;

}

void init(void)

{

TMOD=0X01;

TH0=(655536-50000)/256;//定时50ms

TL0=(655536-50000)%256;

EA=1;

ET0=1;

TR0=1;

P1M0=0;

P1M1=0xff;//P1口设为推挽输出,驱动能力强

P3M0=0;

P3M1=0x38;//P3.3P3.4 P3.5口设为推挽输出

}

void main(void)//主程序

{

init();//初始状态设定

while(1)

{

display(a/2);//显示计数值,以十分之一秒为单位

}

}

void timer0(void)interrupt 1//中断子程序

{

TH0=(655536-50000)/256;

TL0=(655536-50000)%256;

a++;

if(a==1980)a=0;//1980次是99秒

}

 
友情链接
鄂ICP备19019357号-22