导航:首页 > 操作系统 > 如何实现led与单片机的对话

如何实现led与单片机的对话

发布时间:2022-06-27 21:07:14

1. 如何用单片机实现人机对话!

人机对话的方式有多种上面说的使用超级终端进行交互,最常见的人际对话方式是LCD显示+键盘输入;即要有单片机的信息输出方式,还要有操作者的信息输入方式,但不仅限于键盘。手机就是个很好的例子。也可以通过LED输出+按键的方式来实现命令的输入和单片机反馈结果的输出。

2. LED显示屏和单片机是怎么串行连接的

LED显示屏硬件实现对LED灯的驱动并提供控制接口。驱动芯片也称LED DRIVER ,不同的DRIVER有不同的控制方式。DRIVER之间有并行或串行连接。你所说的与单片机的串行连接,应该查看LED显示屏的用户手册。单色LED显示屏有的是通过RS232通讯,RGB三基色的彩色LED显示屏通讯控制线有多根,可以包括时钟、数据线、输出使能、锁存以及数据输出等信号。具体通讯方式查看手册。

3. 如何用单片机控制LED 想让LED发出不同颜色的光 怎么用单片机进行控制

听你的问题应该是刚入门不久的,如果可以的话,用三基色LED做,用PWM调光,实现全彩色显示。

4. 如何把这样的led灯连到单片机上

这种LED灯的功率有点高,他们的电压要求也有点大,通过继电器座耦合即可。通过继电器可实现LED灯的亮灭

5. 单片机 怎么连接led 控制Led

【...在初学者模版上面的弄的,所以电路都是焊接好的】

在面包板上,也按照模版上的电路来弄,即可。

6. 想利用89C51单片机设计一个能用语音控制其亮灭的LED灯。请教各位大神该如何实现,程序如何

如果是需要语音识别的话,买个语音识别模块吧,淘宝之!
如果不用识别,一声响亮,一声响灭的话,麦克风+放大+(电压比较器)+程序即可实现!

7. 单片机C语言如何实现8个LED流水灯来回流动

1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。

2、具体实现方法可以参考如下程序:

2、单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

3、单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

8. 用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

C语言实现LED灯闪烁控制配套51单片机开发板。

#include //包含单片机寄存器的头文件

/****************************************
函数功能:延时一段时间

*****************************************/

void delay(void) //两个void意思分别为无需返回值,没有参数传递。

{

unsigned int i; //定义无符号整数,最大取值范围65535。

for(i=0;i<20000;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灯的源程序:

#include<reg52.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;x>0;x--)

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

}

(8)如何实现led与单片机的对话扩展阅读:

单片机应用分类:

通用型:

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型:

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。

另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型:

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。

通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

参考资料来源:网络-单片机



9. 用vc上位机控制51单片机的led灯亮灭,求大神指导如何实现

在MFC里用一个串口控件,选中控件属性,里面有个控件属性OnComm。点击添加,在对话框CPP里会添加一个消息事件,用于实施监控串口的。除此之外还要为这个串口控件添加一个相关的变量
这个控件事件函数里可以这么写:m_COM为这个串口控件对应的变量,m_SendData,m_strReceive,为CString类型数据,全局变量,自己在xxxxDlg.h中自己定义
void CxxxxDlg::OnCommMscomm1()
{
VARIANT m_Input1;
COleSafeArray m_Input2;
long length,i;
BYTE data[1024];
CString str;
BYTE a;
if(m_COM.get_CommEvent() == 2) //事件值为2表示接收缓冲区内有字符
{
m_Input1 = m_COM.get_Input(); //读缓冲区
m_Input2 = m_Input1;

length=m_Input2.GetOneDimSize();
for (i=0;i<length;i++)
{
m_Input2.GetElement(&i,data+i);
}
for (i=0;i<length;i++)
{
a=*(char*)(data+i);
str.Format("%c",a);
m_strReceive+=str;
}

}
UpdateData(FALSE); //变量->编辑框
SetDlgItemText(IDC_EDIT_COM_RecText,m_strReceive);//这里是把字符显示到文本控件上
}

下面写PC端 VC的打开这个串口的函数,这里的nIndexSelect为串口号,自己给
void CxxxxDlg::OpenCom()
{

if (m_COM.get_PortOpen())
{
m_COM.put_PortOpen(FALSE);
}

m_COM.put__CommPort(nIndexSelect);//这里的nIndexSelect为串口号

m_COM.put_InBufferSize(1024);
m_COM.put_OutBufferSize(512);
m_COM.put_InputLen(0);
m_COM.put_InputMode(1);
m_COM.put_RThreshold(1);

m_COM.put_Settings("9600,N,8,1");
if (!m_COM.get_PortOpen())
m_COM.put_PortOpen(TRUE);
else
{
m_COM.put_OutBufferCount(0);
}

}

下面是PC上VC的发送函数
void CXXXXXDlg::OnBnClickedButton_Sendcom()
{

int i,Count;
GetDlgItemText(IDC_EDIT_COM_SendText,m_SendData);//获取对话框上编辑框里的要发送的字符,IDC_EDIT_COM_SendText为自己文本编辑框的ID号,自己定
Count=m_SendData.GetLength();
CByteArray m_Array;
m_Array.RemoveAll();
m_Array.SetSize(Count);
for(i=0;i<Count;i++)
m_Array.SetAt(i,m_SendData[i]);
m_COM.put_Output(COleVariant(m_Array));
}

以上是PC上的程序
下面是单片机上的程序,我主要来控制单片机电机和LED的
#include<reg52.h>
#include<reg52.h>
#include <string.h>
sbit led_send=P1^6;
sbit led_rec=P1^7;
sbit led_working=P1^4;
sbit led_ready=P1^2;
sbit led_close=P1^0;

sbit led_1=P1^1;
sbit led_2=P1^3;
sbit led_3=P1^5;

unsigned int dli,dlj,i,j;
unsigned char ch;
bit read_flag=0;
unsigned char code table[]="I get ";

//步进电机声明
sbit A1=P2^0;
sbit B1=P2^1;
sbit C1=P2^2;
sbit D1=P2^3;

#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}

unsigned int SPEED;

// 延时函数
void delay(unsigned int xms)
{
for(dli=xms;dli>0;dli--)
for(dlj=110;dlj>0;dlj--);
}

//步进电机正传
void Moto_Left()
{
Coil_AB1
delay(SPEED);
Coil_BC1
delay(SPEED);
Coil_CD1
delay(SPEED);
Coil_DA1
delay(SPEED);
Coil_OFF

}
//步进电机反转
void Moto_Right()
{
Coil_DA1
delay(SPEED);
Coil_CD1
delay(SPEED);
Coil_BC1
delay(SPEED);
Coil_AB1
delay(SPEED);
Coil_OFF
}

//串口初始化
void init_serialcom( void ) //串口通信初始设定
{
// SCON = 0x50 ; //UART为模式1,8位数据,允许接收
//TMOD |= 0x20 ; //定时器1为模式2,8位自动重装
// PCON |= 0x80 ; //SMOD=1;
//TH1 = 0xFD ; //Baud:19200 fosc="11".0592MHz
// IE |= 0x90 ; //Enable Serial Interrupt
//TR1 = 1 ; // timer 1 run
// TI=1;

TMOD=0X20;
TH1=0Xfd;
TL1=0Xfd;
TR1=1;
TI=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;

led_ready=0;
delay(2000);
led_ready=1;
}

//串口接收中断函数
void serial () interrupt 4
{
led_rec=0;
RI = 0 ;
ch=SBUF;

if(ch==97)//假如收到的字符在ASKII表里对应号码是97,就让下面的灯亮,以及电机左转
{
led_1=0;
led_2=1;
led_3=1;
j=64;
while(j--)
{
Moto_Left();
}

}
else if(ch==98)//假如收到的字符在ASKII表里对应号码是98,就让下面的灯亮,以及电机右转
{
led_2=0;
led_1=1;
led_3=1;
j=64;
while(j--)
{
Moto_Right();
}
}

led_3=0;
led_2=1;
led_1=1;
delay(100);
led_3=1;

read_flag= 1 ; //就置位取数标志
delay(100);
led_rec=1;

}
void main()
{
j=64;//旋转一周时间
SPEED=5;
Coil_OFF

led_close=0;
delay(2000);
led_close=1;

delay(2000);

init_serialcom(); //初始化串口

while ( 1 )
{

led_working=0;
if (read_flag==1) //如果取数标志已置位,就将读到的数从串口发出
{
ES=0;
led_send=0;
for(i=0;i<6;i++)
{

SBUF=table[i];
while(!TI);
TI=0;

}
SBUF=ch;
while(!TI);
TI=0;
ES=1;
led_send=1;
read_flag= 0 ; //取数标志清0

}
}
}

10. 单片机 怎么把led , 流水灯 , 按键 在一起实现

你这种LED流水灯程序单片机占用资源太大了,你写个按键估计都不能用,单片机大部分时间在软件延时上面,你可以用定时器定时使用switch语句控制LED流水灯,在主程序里面执行按键扫描,这样单片机执行起来一点压力都没有,也不会占用单片机资源。

阅读全文

与如何实现led与单片机的对话相关的资料

热点内容
cnc手动编程铣圆 浏览:720
cad中几种命令的意思 浏览:324
oraclelinux安装目录 浏览:133
安卓系统可以安装编译器吗 浏览:570
javajson实体类 浏览:690
板加密钢筋是否取代原钢筋 浏览:66
学习编程的思路 浏览:230
app易语言post怎么学 浏览:965
地梁的箍筋加密区位置 浏览:302
二分法排序程序及编译结果 浏览:679
日语命令形和禁止型 浏览:285
安装软件用管理员解压 浏览:505
编译原理代码块 浏览:400
小孩可以用压缩面膜吗 浏览:14
锥形倒角怎么计算法 浏览:883
java合并链表 浏览:508
pic单片机编译器 浏览:806
丽水四轴加工中心编程 浏览:691
国产系统怎么解压 浏览:554
战双程序员 浏览:485