串口通信編程
㈠ 串口通信程序
根據你的要求,寫了幾個簡單的子函數。 #include<reg52.h>
#define N 6   //方便修改密碼的長度
sbit key=P1^0;  //確定發送密碼,發送完後將密碼清0
unsigned char i,a[N]; //定義數組來存放密碼 void serial_init()//串口初始化
{
 TMOD=0x20;//設置定時器1為工作方式2
 TH1=0xfd; //波特率為9600,標准波特率
 TL1=0xfd;
 TR1=1;   //啟動定時器1
 PCON&=0x7f; //SMOD=0,這里不需要倍頻
 SCON=0x40;  //設置串口為工作方式1
} void serial_send() //串口發送函數
{
 for(i=0;i<N;i++)
 {
  TI=0; //串口發送完畢標志位清0
  SBUF=a[i]; //發送數組中存放的密碼字元
  while(!TI);  //等待發送完畢
 }
} void keyscan() //鍵盤掃描
{
 if(!key) //用獨立鍵盤簡單舉例,按下為低電平
 {
  delay(10);//延時10毫秒,去抖。delay()函數省略
  if(!key)
  {   while(!key); //鬆手監測
   serial_send(); //發送密碼
   for(i=0;i<N;i++)   //發送完畢清0
    a[i]=0; 
  } 
 }
} void main(){  serial_send() ;  while(1)  {   keyscan() ;   }}大概就是這個思路,你可以把密碼鍵盤的值都寫在keyscan()函數里,可以加刪除鍵(密碼輸錯可以退格),最好加個顯示,密碼雖然不能顯示出來,但還是要顯示輸入的個數吧。還有個要提醒你的,就是上位機軟體的編寫,下位機發送的格式要與上位機接收的格式對應(字元或者數字)。
#include<conio.h>
#include<stdio.h>
#include<bios.h>
#define true 1
main( )
{
   char ch;int i;
   char a[50];
   clrscr();
   for(i=0;i<50;i++)
   {
    a[i]='a'+i;
    }
   i=0;
   outportb(0x3fb,0x80);
   outportb(0x3f8,0);
   outportb(0x3f9,0x06);
   outportb(0x3fb,0x03);
   outportb(0x3fc,0x03);
   outportb(0x3f8,a[i]);
while (true)
{
       ch=inportb(0x3fd);
       if(ch&0x01)
 {
      ch=inportb(0x3f8);
       if(ch=='\r')
  {printf("jikejlm");
   outportb(0x3f8,a[i+1]);i++;
  }
  else
  { putch(ch);putch('\n');}
  }
  if(bioskey(1))
   {
      ch=bioskey(0)&0x0ff;
      if(ch=='\r')
      {
        outportb(0x3f8,ch);
        putch(ch);
       }
    }
     }
}
㈢ RS232串口通信的程序怎麼寫啊
c或vb中有mscomm控制項很好用,我常用,以下是我用delphi寫的
  with mscomm1 do begin
    
   commport:=1;           //埠號
   settings:=9600,n,8,1;           //埠設置
   InputMode:=0;                                                //設置或返回Input屬性取回的數據的類型 0:文本 1:二進制
   RThreshold:=1;                                               //每次接收到字元即產生OnComm事件
   SThreshold:=0;                                               //傳輸緩沖區允許最小字元數
   InBufferCount:=0;                                            //清空接收緩沖區內容
   InputLen:=0;                                                 //為0時 Input一次讀取整個緩沖區內容
   DTREnable:=true;                                             //數據終端准備好
   RTSEnable:=true;                                             //發送請求
 end;
mscomm1.Output:=edit1.text;//發送
str:=mscomm1.input;        //接收
㈣ 51單片機串口通信c語言編程
#include <REG52.H>                           
#define uchar unsigned char
#define uint unsigned int
sbit ring=P3^7;
sbit CASE1=P2^0;
sbit CASE2=P2^1;
sbit CASE3=P2^2;
sbit CASE4=P2^3;
uchar se=0,re=0;  
uchar temp=0;
void wait(uint cnt)
{
	while(--cnt);
}
//串口發送程序
void send(uchar se)
{
SBUF=se;           //發送數據
while(TI == 0);
TI = 0;	
}
//串口接收程序
uchar receive(void)
{
re=SBUF;           //接收數據
while(RI==0);
RI=0;
return re;	
}
//串口初始化
void  sinti(void)
{
	SCON  = 0x50;		        
    TMOD |= 0x20;               
    TH1   = 0xFD;              
    TR1   = 1;                   
    EA    = 1;                 
    ES    = 1;                
}
void delay(int cnt)
{
	while(--cnt);
}        
//主程序
int main (void)
{
	int i;
	sinti();        //串口初始化程序
	ring=1;
	while(1)
	{
		while (1)                   
		    {
				if(CASE1==0)
				{
					send('a');
					ring=0;
					break;
				}
				if(CASE2==0) 
				{
					send('b');
					ring=0;
					break;
				}
			    if(CASE3==0) 
				{
					send('c');
					ring=0;
					break;
				}
				if(CASE4==0) 
				{
					send('d');
					ring=0;
					break;
				}	
			}
		if(ring==0)
		{
		 	wait(60000);
			ring=1;
		}
		for(i=0;i<10000;i++);
	}
}
//串口中斷程序
void UART_SER (void) interrupt 4 //串列中斷服務程序
{
if(RI)                        //判斷是接收中斷產生
   {
	  RI=0;                      //標志位清零
	  temp=SBUF;
	}
   if(TI)                        //如果是發送標志位,清零
     TI=0;
}
㈤ RS232串口通信程序(VC++實現)
visual
c++_turbo
c串口通信編程實踐
㈥ 關於串口通信編程的疑問
上位機以PC,下位機以單片機為例,兩者在進行通信時一般用串口通信,而數據通過串口時是以16進制來傳送的,為了發送、接收處理方便,建議通過函數做一下處理,使發送的數據為16進制,這樣,通過串口接收到的數據也是相同的16進制,方便查看。
如果想讓下位機做某事,則需要上位機給下位機發送指令,也就是數據幀,這個要根據協議來寫,比如移動GSM、聯通GSM協議,里邊都有數據幀的格式以及具體定義。 
補充:這個協議不是說串口通信協議,那個協議是根據用途或要求來採用的,比如說,要用單片機做一個聯通GSM協議的數據通信,那麼數據幀的格式必須是X開頭,X結尾的,有固定的格式。再比如移動的,數據幀格式有7E開頭7E結尾的,也有!開頭!結尾的,如果你的數據幀格式不正確,將無法識別而不能做出相關的動作。
你如果只是自己弄著玩,數據幀可以自己定義,但如果要做項目,最好根據要求協議來編寫。
㈦ 怎樣編寫單片機的串口通信的程序,一般的步驟是怎麼樣
編寫串口通訊程序步驟為:
1、設置波特率
2、設置串口工作方式
3、收發數據。
比如:
main()
{
unsignedchardat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
while(1)
{
while(RI==0);
RI=0;
dat=SBUF;
SBUF=~dat;
while(TI==0)
TI=0;
}
}
㈧ KEIL編程 串口通信程序
如果使用51系列單片機如STC89C52,它用的是串列通信方式的在線燒寫功能,和單片機裡面編程的串列通信無關,是硬體本身的功能,你連接串口的兩根線和共地線,用STC-ISP 4.8,選擇單片機型號與程序位置,關閉單片機開發板,點擊程序下載後再上電就可以完成燒寫。通常可採用MAX232,台式機後面的串口線或USB+PL2303這兩種形式,這個功能AT89C52或是AVR系列都是不具備的。
㈨ c++ 編寫串口通信程序
c++ 編寫串口通信程序
推薦 看書
Visual C++_Turbo C串口通信編程實踐
㈩ vb串口通信程序實例
我也是自己摸索開發出來的每一款VBtoCOM通訊,有具體的思路如下:
給你推薦一個工具「com串口測試工具 ComTone V1.0 中文綠色版」
1、打開你的噪音計的測試軟體,調整好串口號、通訊頻率等等,我用溫度計舉例說明。

