導航:首頁 > 操作系統 > 如何實現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與單片機的對話相關的資料

熱點內容
蘋果騰訊管家如何恢復加密相冊 瀏覽:115
手機軟體反編譯教程 瀏覽:858
sqlserver編程語言 瀏覽:650
gpa國際標准演算法 瀏覽:238
伺服器編程語言排行 瀏覽:947
怎麼下載快跑app 瀏覽:966
小紅書app如何保存視頻 瀏覽:170
如何解開系統加密文件 瀏覽:809
linux切換root命令 瀏覽:283
c編譯之後界面一閃而過怎麼辦 瀏覽:880
怎麼看ic卡是否加密 瀏覽:725
lgplc編程講座 瀏覽:809
cnc手動編程銑圓 瀏覽:723
cad中幾種命令的意思 瀏覽:327
oraclelinux安裝目錄 瀏覽:134
安卓系統可以安裝編譯器嗎 瀏覽:571
javajson實體類 瀏覽:691
板加密鋼筋是否取代原鋼筋 瀏覽:67
學習編程的思路 瀏覽:231
app易語言post怎麼學 瀏覽:968