十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
C语言实现LED灯闪烁控制配套51单片机开发板。
成都创新互联专注于耀州企业网站建设,自适应网站建设,电子商务商城网站建设。耀州网站建设公司,为耀州等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
#include //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void) //两个void意思分别为无需返回值,没有参数传递。
{
unsigned int i; //定义无符号整数,最大取值范围65535。
for(i=0;i20000;i++) //做20000次空循环。
; //什么也不做,等待一个机器周期。
}
/*******************************************************
函数功能:主函数 (C语言规定必须有也只能有1个主函数)。
********************************************************/
void main(void)
{
while(1) //无限循环。
{
P0=0xfe; //P1=1111 1110B, P0.0输出低电平。
delay(); //延时一段时间。
P0=0xff; //P1=1111 1111B, P0.0输出高电平。
delay(); //延时一段时间。
}
}
单片机驱动LED灯的源程序:
#includereg52.h //头文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定义。
void delay_ms(uint);//mS级带参数延时函数。
void main()
{
while(1)
{
LED1=0;
delay_ms(1000);
LED1=1;
delay_ms(1000);
}
}
void delay_ms(uint z) //延时子程序
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
扩展资料:
单片机应用分类:
通用型:
这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
总线型:
这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。
另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
控制型:
这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。
通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
参考资料来源:百度百科-单片机
如果是PC机需要配置一块MOXA的TTL板卡来实现高低电瓶输出:
1、先设定LED灯是低电平亮还是高电瓶亮,这里假设低电平;
2、设置一个定时器,在定时器里面写代码,分别发送高、低电瓶值可实现交替闪耀;
例程:
#include reg51.h
sbit led1 = P0^0;
sbit led2 = P0^1;
void delayms(unsigned int nMS)
{
unsigned char i,j;
while (nMS--)
{
for (i = 12; i0; i--)
{
for (j = 246; j0; j--);
}
}
}
void main()
{
while(1)
{
led1 = 0;
led2 = 1;//一亮一灭
delayms(100);
led1 = 1;
led2 = 0;//交换亮灭
delayms(100);
}
}
我写的这个程序应该可以,按一下灯亮,再按一下灯灭
#include
"REG52.H"
sbit
LED1_01
=
P1^1;
//LED灯
sbit
KEY0_01
=
P1^2;
//按键
void
Delay_1ms(unsigned
int
Time)
{
unsigned
int
x,
y;
for(x
=
Time;
x
0;
x--)
for(y
=
120;
y
0;
y--);
}
int
main(void)
{
LED1_01
=
1;
//打开LED灯点亮
while(1)
{
if(KEY0_01
==
0)
//检测按键是否按下
{
Delay_1ms(10);
//延时去抖动
if(KEY0_01
==
0)
//确定按键按下
{
LED1_01
=
~
LED1_01;
//取反LED灯
[
亮
.
灭
]
}
while(KEY0_01
==
0);
//检测松手
}
}
}
你的图里有A/D转换器
AD转换函数ADC_DIS.C
#include
REGX51.H
#include"def.h"
#include"lib.h"
sbit
adc_cs=P1^0;
sbit
adc_rd=P1^1;
sbit
adc_wr=P1^2;
/***ADC0804启动转换函数***/
INT8U
start_ad()
{
INT8U
temp;
adc_cs=0;
adc_wr=1;
delay(1);
adc_wr=0;
delay(1);
adc_wr=1;
delay(1);
//启动AD
adc_rd=1;
delay(1);
adc_rd=0;
delay(1);
temp=P2;
delay(1);
adc_rd=1;
delay(1);
//读取数据
return
temp;
}
用这个程序。