⑴ 誰有51單片機連接USB串口電路原理圖。要CAXA畫的。謝謝了
自己在電路圖軟體里畫好然後導出DXF,再導入CAXA即可
⑵ 高分求救,關於51單片機埠外接電路有圖!
1、當光電管接通時,P2.3口是高電平。
2、有四個LED燈,但是沒有畫出來,單片機的P1口,P3口引腳還有剩餘吧,那就用啊。
⑶ 51單片機的串口通信這塊怎麼也學不懂,誰介紹個好方法來。謝謝了
外部接線電路、串口設置、方式、T1...,樓主什麼地方不懂,說說看。
看看這個有幫助否:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/d50edc2f1321965b4ec22662.html
⑷ 51單片機與rs485連接電路在串口程序中怎麼驅動485在線等!!!謝謝
像使用串口一樣就可以了
⑸ 51單片機串口工作原理,硬體原理
一般必須有晶振,復位電路,還有就是給單片機供電,這樣就是一個最小系統,至於單片機內部電路我也不知道,但是我會用單片機,會寫程序,就可以了,不知道可不可以幫到你
⑹ 請問一下 STC89C51單片機如果不買開發板,自己做電路,需要USB轉串口的下載線嗎
如果你的電腦是台式機,有串口的話,就不需要USB
最小系統電路很簡單,你搜下就有
STC89c51不用下載器,內部有編好的程序,不用管,硬體用max232晶元就好,連接rxd,txd和串口就可以了,用stc提供的在線編程下載軟體就行了
⑺ 電腦接入51單片機的串口,然後通過串口來控制51的4部步進電機正轉反轉和停止。最好C語言有電路圖,多謝!
如果單純的只是控制正反轉,應該很簡單啊,就給幾個控制命令字就行了,然後在中斷里進行對應的狀態位來控製程序的流程轉向就行了。
如果想要程序可以qq我,471361865,但是必須有你的步進電機的資料,才能寫出來對應的驅動脈沖。
⑻ 電路圖中51/STC串口口是什麼
串口就是PLC或者單片機,還有電腦互相傳遞信號的端子。一般有硬體和軟體共同完成信號傳遞。
⑼ 51單片機串口的原理和過程
單片機C51串口中斷接收和發送測試常式(含通信協議的實現)
通信協議:第1位元組,MSB為1,為第1位元組標志,第2位元組,MSB為0,為非第一位元組標志,其餘類推……,最後一個位元組為前幾個位元組後7位的異或校驗和。
測試方法:可以將串口調試助手的發送框寫上 95 10 20 25,並選上16進制發送,接收框選上16進制顯示,如果每發送一次就接收到95 10 20 25,說明測試成功。
//這是一個單片機C51串口接收(中斷)和發送常式,可以用來測試51單片機的中斷接收
//和查詢發送,另外我覺得發送沒有必要用中斷,因為程序的開銷是一樣的
//程序編寫: 龔建偉 [email protected]
//技術主頁:http://www.gjwtech.com
//您有這方面的問題可以和我討論
#include <reg51.h>
#include <string.h>
#define INBUF_LEN 4 //數據長度
unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3;
bit read_flag=0;
void init_serialcomm(void)
{
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; //SMOD=1;
TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1; // timer 1 run
// TI=1;
}
//向串口發送一個字元
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
//向串口發送一個字元串,strlen為該字元串長度
void send_string_com(unsigned char *str,unsigned int strlen)
{
unsigned int k=0;
do
{
send_char_com(*(str + k));
k++;
} while(k < strlen);
}
//串口接收中斷函數
void serial () interrupt 4 using 3
{
if(RI)
{
unsigned char ch;
RI = 0;
ch=SBUF;
if(ch>127)
{
count3=0;
inbuf1[count3]=ch;
checksum= ch-128;
}
else
{
count3++;
inbuf1[count3]=ch;
checksum ^= ch;
if( (count3==(INBUF_LEN-1)) && (!checksum) )
{
read_flag=1; //如果串口接收的數據達到INBUF_LEN個,且校驗沒錯,
//就置位取數標志
}
}
}
}
main()
{
init_serialcomm(); //初始化串口
while(1)
{
if(read_flag) //如果取數標志已置位,就將讀到的數從串口發出
{
read_flag=0; //取數標志清0
send_string_com(inbuf1,INBUF_LEN);
}
}
}
⑽ 51單片機和計算機之間實現串口通信的電路圖
串口通訊參考程序如下:
來源:深入淺出AVR單片機
#include<reg51.h>
unsignedcharUART_RX;//定義串口接收數據變數
unsignedcharRX_flag;//定義穿行接收標記
/*********************************************************************************************
函數名:UART串口初始化函數
調用:UART_init();
參數:無
返回值:無
結果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產生波特率(佔用)
備註:振盪晶體為12MHz,PC串口端設置[4800,8,無,1,無]
/**********************************************************************************************/
voidUART_init(void){
EA=1;//允許總中斷(如不使用中斷,可用//屏蔽)
ES=1;//允許UART串口的中斷
TMOD=0x20;//定時器T/C1工作方式2
SCON=0x50;//串口工作方式1,允許串口接收(SCON=0x40時禁止串口接收)
TH1=0xF3;//定時器初值高8位設置
TL1=0xF3;//定時器初值低8位設置
PCON=0x80;//波特率倍頻(屏蔽本句波特率為2400)
TR1=1;//定時器啟動
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口接收中斷處理函數
調用:[SBUF收到數據後中斷處理]
參數:無
返回值:無
結果:UART串口接收到數據時產生中斷,用戶對數據進行處理(並發送回去)
備註:過長的處理程序會影響後面數據的接收
/**********************************************************************************************/
voidUART_R(void)interrupt4using1{//切換寄存器組到1
RI=0;//令接收中斷標志位為0(軟體清零)
UART_RX=SBUF;//將接收到的數據送入變數UART_data
RX_flag=1;//標記接收
//用戶函數內容(用戶可使用UART_data做數據處理)
//SBUF=UART_data;//將接收的數據發送回去(刪除//即生效)
//while(TI==0);//檢查發送中斷標志位
//TI=0;//令發送中斷標志位為0(軟體清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送函數
調用:UART_T(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_T(unsignedcharUART_data){//定義串口發送數據變數
ES=0;//禁止穿行中斷
SBUF=UART_data;//將接收的數據發送回去
while(TI==0);//檢查發送中斷標志位
TI=0;//令發送中斷標志位為0(軟體清零)
ES=1;//打開穿行中斷
}
/*********************************************************************************************
函數名:UART串口發送字元串函數
調用:UART_S(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_S(unsignedchar*str)
{
while(1)
{
if(*str=='