简单的程序编写.docx

上传人:b****2 文档编号:2705495 上传时间:2023-05-04 格式:DOCX 页数:16 大小:16.84KB
下载 相关 举报
简单的程序编写.docx_第1页
第1页 / 共16页
简单的程序编写.docx_第2页
第2页 / 共16页
简单的程序编写.docx_第3页
第3页 / 共16页
简单的程序编写.docx_第4页
第4页 / 共16页
简单的程序编写.docx_第5页
第5页 / 共16页
简单的程序编写.docx_第6页
第6页 / 共16页
简单的程序编写.docx_第7页
第7页 / 共16页
简单的程序编写.docx_第8页
第8页 / 共16页
简单的程序编写.docx_第9页
第9页 / 共16页
简单的程序编写.docx_第10页
第10页 / 共16页
简单的程序编写.docx_第11页
第11页 / 共16页
简单的程序编写.docx_第12页
第12页 / 共16页
简单的程序编写.docx_第13页
第13页 / 共16页
简单的程序编写.docx_第14页
第14页 / 共16页
简单的程序编写.docx_第15页
第15页 / 共16页
简单的程序编写.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

简单的程序编写.docx

《简单的程序编写.docx》由会员分享,可在线阅读,更多相关《简单的程序编写.docx(16页珍藏版)》请在冰点文库上搜索。

简单的程序编写.docx

简单的程序编写

编程

<一>.IO口输出(LED继电器蜂鸣器)

1.点亮一个LED灯

#include

sbitLED=P2^0;

voidmain(void)

{

LED=0;

while

(1);//防止跑飞

}

2.继电器启动

#include"reg51.h"

sbitJDQ=P1^4;

voidmain(void)

{

JDQ=0;//P1.4引脚控制三极管再由三极管控制继电器,

//输出0三极管导通继电器得电吸合,输出1三极管截止继电器失电断开

while

(1);

}

3.蜂鸣器蜂鸣

#include

sbitSPK=P1^5;

voidmain(void)

{

SPK=0;//P1.5引脚控制三极管再由三极管控制蜂鸣器,输出0三极管导通蜂鸣器得电,输出1三极管截止蜂鸣器失电

while

(1);

}

<二>.LED灯,数码管

1.LED灯一灭一亮

A:

#include

sbitled=P2^0;

voiddelay(intm)

{

inti;

for(i=0;i<=m;i++);

}//定义延时函数

voidmain()

{

while

(1)

{

led=1;

delay(20000);

led=0;

delay(20000);

}

}

B:

用定时器中断亮灭间隔一秒

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitled=P2^0;

ucharnum;

voidmain()

{

TMOD=0X01;

TH0=(65536-45827)/256;

TL0=(65536-45827)%256;

EA=1;

ET0=1;

TR0=1;

while

(1);

}

voidT0_time()interrupt1

{

TH0=(65536-45827)/256;

TL0=(65536-45827)%256;

num++;

if(num==20)

{

num=0;

led=~led;

}

}

C:

单一灯的左移右移,八个发光二极管L1-L8

分别接在单片机的P2.0-P2.7接口上,输出“0”时,发光二极管亮,开始

时P2.0→P2.1→P2.2→P2.3→┅→P2.7→P2.6→┅→P2.0亮,重复循环。

#include

unsignedchari;

unsignedchartemp;

unsignedchara,b;

voiddelay(void)

{

unsignedcharm,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

voidmain(void)

{

while

(1)

{

temp=0xfe;

P2=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<

b=temp>>(8-i);

P2=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P2=a|b;

delay();

}

}

}

D:

利用取表的方法,使端口P1做单一灯的变化:

左移2次,右移2次,闪烁2次

(延时的时间0.2秒)。

#include

unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,

0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0x00,0xff,0x00,0xff,

0x01};

unsignedchari;

voiddelay(void)

{

unsignedcharm,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

voidmain(void)

{

while

(1)

{

if(table[i]!

=0x01)//如果table[]不等于0x01则执行下一命令

{

P2=table[i];

i++;

delay();

}

else

{

i=0;

}

}

}

E:

开关P3^7控制LED灯:

按下灯亮松开灯灭

#include

sbitK1=P3^7;

sbitL1=P2^0;

voidmain(void)

{

while

(1)

{

if(K1==0)

{

L1=0;

}

else

{

L1=1;

}

}

}

F:

开关控制LED灯亮灭(四个按键控制八个LED灯)

#include//若改用做头文件,则必须先对P2_0~P2_7进行声明

voidmain(void)

{

while

(1)

{

if(P3_7==0)

{

P2_0=0;

P2_1=0;

}

else

{

P2_0=1;

P2_1=1;

}

if(P3_6==0)

{

P2_2=0;

P2_3=0;

}

else

{

P2_2=1;

P2_3=1;

}

if(P3_5==0)

{

P2_4=0;

P2_5=0;

}

else

{

P2_4=1;

P2_5=1;

}

if(P3_4==0)

{

P2_6=0;

P2_7=0;

}

else

{

P2_6=1;

P2_7=1;

}

}

}

G:

开关P3^7控制LED灯由左向右点亮(用到intrins.h函数中的_crol_命令,即循环左移的命令,和按键消抖的编程操作)

#include

#include

unsignedcharcount,i;

voiddelay10ms(void)

{

unsignedchari,j;

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

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

}

voidmain(void)

{

while

(1)

{

if(P3_7==0)//按键消抖

{

delay10ms();

if(P3_7==0)

{

if(i==8)

{

i=0;

}

count=0xfe;

count=_crol_(count,i);//count左移i位

P2=count;

i=i+1;

while(P3_7==0);

}

}

}

}

H:

开关控制LED灯点亮(switch语句)

#include

voidmain()

{

while

(1)

{

switch(P3)

{

case0x7f:

P2_0=0;

break;

case0xbf:

P2_1=0;

break;

case0xdf:

P2_2=0;

break;

case0xef:

P2_3=0;

break;

case0xf7:

P2_4=0;

break;

case0xfb:

P2_5=0;

break;

}

}

}

2.数码管显示数字

A:

动态扫描数码管亮0123(动态扫描是靠人眼的视觉停留原理。

其实数码管是一个一个亮过去的,每个数码管显示它该现实的数字,中间只间隔十毫秒,由于断电的那几毫秒数码管有余晖,人眼看过去好像整排数码管都是量的。

#include

#defineuintunsignedint

unsignedchardate[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voiddelay(uint);

voidmain()

{

while

(1)

{

P1=0xfe;

P0=0XFF;//消影

P0=date[0];

delay(500);

P1=0xfd;

P0=0XFF;

P0=date[1];

delay(500);

P1=0xfb;

P0=0XFF;

P0=date[2];

delay(500);

P1=0xf7;

P0=0XFF;

P0=date[3];

delay(500);

}

}

voiddelay(uintt)

{

uinti,j;

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

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

}

B:

数码管同时亮1234间隔位1s

#include

#include

unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsignedcharx;

unsignedchari,j,k,m;

voiddelay1s()//误差0us

{

unsignedchara,b,c;

for(c=167;c>0;c--)

for(b=171;b>0;b--)

for(a=16;a>0;a--);

_nop_();//ifKeil,requireuseintrins.h

}

voidmain(void)

{

P1=0XF0;

while

(1)

{

for(x=0;x<10;x++)

{

P0=table[x];

delay1s();

}

}

}

C:

用中断控制数码管由1-99计数,每计一个数时间为一秒

#include

ints,t,j;

unsignedchardate[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voiddelay(intm)

{

inti;

for(i=0;i<=m;i++);

}

voiddisplay(void);

voidmain()

{

s=0;

t=0;

EA=1;//打开总开关

ET0=1;//打开定时器中断

TMOD=0X01;//定时器模式选择(方式1)(16位)

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;//启动定时器

while

(1)

{

while(s==20)

{

t=t+1;

s=0;

}

display();}

}

voiddisplay(void)

{

if(t>99)

t=0;

P1=0XFE;

P0=date[t/10];

delay(100);

P0=0XFF;//消影

P1=0XFD;

P0=date[t%10];

delay(100);

P0=0XFF;//消影

}

voidtime()interrupt1//中断函数

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

s=s+1;

}

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2