简单的程序编写.docx
- 文档编号:11889977
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:16
- 大小:16.84KB
简单的程序编写.docx
《简单的程序编写.docx》由会员分享,可在线阅读,更多相关《简单的程序编写.docx(16页珍藏版)》请在冰豆网上搜索。
简单的程序编写
编程
<一>.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
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;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 程序 编写