51单片机基础程序文档格式.docx

上传人:b****6 文档编号:18944154 上传时间:2023-01-02 格式:DOCX 页数:19 大小:17.08KB
下载 相关 举报
51单片机基础程序文档格式.docx_第1页
第1页 / 共19页
51单片机基础程序文档格式.docx_第2页
第2页 / 共19页
51单片机基础程序文档格式.docx_第3页
第3页 / 共19页
51单片机基础程序文档格式.docx_第4页
第4页 / 共19页
51单片机基础程序文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

51单片机基础程序文档格式.docx

《51单片机基础程序文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机基础程序文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

51单片机基础程序文档格式.docx

b++);

while

(1)

{

delay();

led0=1;

led1=0;

led1=1;

led2=0;

led2=1;

led3=0;

led3=1;

led4=0;

led4=1;

led5=0;

led5=1;

led6=0;

led6=1;

led7=0;

led7=1;

}

方法2总线方法

#defineucharunsignedchar

#defineuintunsignedint

unsignedchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchara,b;

uchari;

while

(1)

for(i=0;

i<

8;

i++)

P0=table[i];

//11111110

//P0=0xfd;

//11111101

方法三移位流水

uchark,i;

k=0xfe;

//11111110<

<

P0=k;

k=k<

1;

//11111100|

k=k|0x01;

//把最低位置1

//11111101

}//11111010

}//00000001

//11111011

}

方法四函数调用

intrins.h>

uchark;

k=_crol_(k,1);

蜂鸣器继电器1月28号

sbitbeep=P0^1;

beep=1;

sbitrelay=P0^0;

relay=1;

relay=0;

_

_____________________________________________________________

步进电机的按键控制1月29号

voiddelay(unsignedintt);

//Motor

sbitk1=P2^7;

sbitk2=P2^6;

sbitF1=P1^0;

sbitF2=P1^1;

sbitF3=P1^2;

sbitF4=P1^3;

unsignedcharcodeFFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};

//反转

unsignedcharcodeFFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

//正转

/*步进电机驱动

*/

voidmotor_ffw()

unsignedchari;

unsignedintj;

for(j=0;

j<

12;

j++)//转1*n圈

for(i=0;

i<

i++)//一个周期转30度

P1=FFW[i]&

0x1f;

//取数据

delay(10);

//调节转速

voidmotor_ffz()

P1=FFZ[i]&

voidmotor_stop()

{P1=1;

voiddelay(unsignedintt)

{

unsignedintk;

while(t--)

for(k=0;

k<

80;

k++)

{}

main()

{P2=0xff;

switch(P2)

{case(0xfe):

motor_ffw();

break;

case(0xfd):

motor_ffz();

default:

motor_stop();

break;

__

____________________________________________________________

呼吸灯4月13号

#include<

reg51.h>

#defineuintunsignedintuinti;

sbitled=P2^3;

voiddelay(uinta)

while(a-=1);

voidbreath()

{uinti;

for(i=1;

=499;

{led=0;

delay(i);

led=1;

delay(501-i);

for(i;

i>

=1;

i--)

{while

(1)

{breath();

}

_______________________________________________________________________________

流水呼吸灯4月15号

//调用库函数

#defineuintunsignedint//宏定义

uinti;

ucharbb;

{while(a--);

//定义延时函数

voidbreath()//定义呼吸函数

i++)//FOR循环

{P2=bb;

//控制BB位的LED

//延时,随着FOR循环延时点亮的时间逐渐缩短,即每次循环的时间减少,亮度减弱

P2=0XFF;

//BB位LED为低电平的时间增长,高电平时间为0

i--)//由高电平时间为0转换为低电平为0

{bb=0xfe;

while

(1)//循环主函数

bb=_crol_(bb,1);

//_crol_带循环

//<

是位左移,后面补0

//数码管动态显示7月21号

intduanxuan[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

inti,k,e,z=0xfe;

voiddelay(intj)

{while(j--);

voiddisp()

{P0=0x00;

P1=0xff;

P0=duanxuan[k];

P1=z;

delay(200);

z=z<

z=z|0x01;

voidmain()

{for(k=0;

k<

=8;

k++)

{

disp();

___

____________________________________________________________________________

点阵显示7月23号

没有取模软件,懒得算数

______________________________________________________________________________

独立按键7月23号

unsignedcharsmg_gy[]={~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7f,~0x6f};

sbitk1=P3^0;

sbitled=P0^0;

voiddelay(intt)//误差0us

unsignedcharj;

for(;

t>

0;

t--)

for(j=19;

j>

j--);

{intnum;

P3=0xff;

//消抖

{if(k1==0)

{delay(200);

if(k1==0)

{num++;

led=0;

if(num==8)

num=0;

while(!

k1);

}else

P1=smg_gy[num];

__________________________________________________________88月2号矩阵键盘

#defineuintunsignedint

ucharduanxuan[16]={

~0x3f,~0x06,~0x5b,~0x4f,

~0x66,~0x6d,~0x7d,~0x07,

~0x7f,~0x6f,~0x77,~0x7c};

uchartable[12]={

0xed,0xdd,0xbd,0x7d,

0xeb,0xdb,0xbb,0x7b,

0xe7,0xd7,0xb7,0x77};

voiddisplay(uchari)

P1=duanxuan[i];

voiddelay_50us(uintt)

ucharj;

for(;

unsignedchari,key_1,key_2,hh;

while

(1)

P3=0xf0;

key_1=P3;

if(key_1!

=0xf0)

delay_50us(200);

key_1=P3;

{

P3=0x0f;

key_2=P3;

hh=key_1|key_2;

for(i=0;

{

if(hh==table[i])

{

display(i);

break;

}

}

___________________________________________________________

8月7号中断函数

sbitp=P0^0;

while(a--);

//定义延时函数

}

voidclock(void)

p=0;

delay(100);

IT0=0;

EA=1;

EX0=1;

P2=0x00;

clock();

 

voidit0()interrupt0

P2=0xf0

__________________________________________________________

8月11号定时器方式的数码管动态显示

unsignedcharnum,k=0,z=0xfe;

intduanxuan[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};

TMOD=0X01;

//设置定时器工作方式为定时方式1

TH0=(65536-500)/256;

//装入初值12M晶振定时

TL0=(65536-500)%256;

//打开总中断开关

ET0=1;

//打开定时器开关

TR0=1;

//启动定时器

if(num==5)

k++;

k=k%8;

z=_crol_(z,1);

}//等待中断响应

voidtime0()interrupt1

num++;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1