久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機串口連續通訊
[打印本頁]
作者:
huanghu
時間:
2018-5-19 08:42
標題:
單片機串口連續通訊
上一篇發的是,只能單一的發,這是連續發送,打開電腦串口助手可以接受都你發的東西,原理就是,比如你隨便輸三位數,發送給單片機,讓數碼管顯示,可是你的讓單片機知道你發是什么,分別把你的三位數,每一位都取出來,傳遞給你寫的串口通信那塊,,不要想著這樣就結束了,這樣想只能單一的發送,不能連續的發送和接收,你想怎么樣才能讓它連續的接收和發送呢。其原理差不多,就比如像你強火車票一樣,一直不停的刷新,希望有火車票一樣,(比喻不好還請見諒)而你實現連續串口發送接收原理我自己感覺差不多,就是把你串口接收發送那塊,不斷的刷新,這樣就可以實現,連續接收和發送了
單片機源程序如下:
/*********************該程序可實現燈的亮滅**可以實現串口通信以及電腦控制單片機/*實現連續發送*********************************/
/*該程序寫的比較好*//*通過兩個不同的標志位實現,非常棒*/
//可以連續發送
#include <STC15f2k60s2.h>
#define u16 unsigned int
#define u8 unsigned char
u16 pwm_value;
sbit LED = P1^0;//用于檢測電腦與單片機串口正常通信
unsigned char UART_buff;//串口的接收和發送(只能是單個字符的使用)
unsigned char receive[50];//用于接收所發出來的字符串
unsigned char i;
int xianshi,copy;
double shuju;
bit New_rec = 0, Send_ed = 1, Money = 0; //定義的一些標記位
unsigned char code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};//這是時鐘所用到的數
/*******用于一毫秒的延時****************/
void delayms(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/*數碼管顯示程序2*/
void display1(int h)
{
P2=0xfe;
P0=DSY_CODE[h/100]&0x7f;
delayms(1);
P2=0xff;
P0=0xff;
P2=0xfd;
P0=DSY_CODE[h%100/10];
delayms(1);
P2=0xff;
P0=0xff;
P2=0xfb;
P0=DSY_CODE[h%100%10];
delayms(1);
P2=0xff;
P0=0xff;
}
//========================================================================
// 函數: UpdatePwm(u8 PCA_id, u16 pwm_value)
// 描述: 更新PWM值.
// 參數: PCA_id: PCA序號. 取值 PCA0,PCA1,PCA2,PCA_Counter
// pwm_value: pwm值, 這個值是輸出高電平的時間.
// 返回: none.
// 版本: V1.0, 2012-11-22
//========================================================================
void UpdatePwm(u16 uart_date)
{
pwm_value=uart_date/2;
if(pwm_value == 0)
{
CCAP0H =0xff;
}
else
{
CCAP0H = (u8)(256 - pwm_value);
}
}
//----------------------------------------------
void main (void)
{
AUXR |= 0x40; //設置1T
AUXR &= 0xfe; //設置定時器1為串口1波特率發生器
PCON &= 0x7f; //不加倍
TMOD = 0x20; //定時器1工作方式2
TH1 = 0xdc;
TL1 = 0xdc;
SM0 = 0;
SM1 = 1;
REN = 1;
TR1 = 1;
ES = 1;
EA = 1;
while(1)
{
while(i%3==0&&i!=0)
{
copy=i/3;
// shuju=(double)(receive[0])+(double)(receive[1])/10+(double)(receive[2])/100;
shuju=(double)(receive[(copy-1)*3])+(double)(receive[(copy-1)*3+1])/10+(double)(receive[(copy-1)*3+2])/100;
xianshi=shuju*100;
display1(xianshi);
// PCA0初始化
AUXR1 &= ~0x30;
AUXR1 |= 0x10; //切換IO口, 0x00: P1.2 P1.1 P1.0 P3.7, 0x10: P3.4 P3.5 P3.6 P3.7, 0x20: P2.4 P2.5 P2.6 P2.7
CCAPM0 = 0x42; //工作模式 PWM
PCA_PWM0 = (PCA_PWM0 & ~0xc0) | 0x00; //PWM寬度, 0x00: 8bit, 0x40: 7bit, 0x80: 6bit
CMOD = (CMOD & ~0xe0) | 0x08; //選擇時鐘源, 0x00: 12T, 0x02: 2T, 0x04: Timer0溢出, 0x06: ECI, 0x08: 1T, 0x0A: 4T, 0x0C: 6T, 0x0E: 8T
CR = 1;
UpdatePwm(xianshi);
}
if ((New_rec == 1) && (Send_ed == 1))
{ //如果收到新數據及發送完畢
New_rec = 0;
Send_ed = 0;
}
}
}
//----------------------------------------------
void ser_int (void) interrupt 4
{
if(RI == 1)
{ //如果收到.
RI = 0; //清除標志.
New_rec = 1;//表明收到了信息了
if((SBUF >= '0') && (SBUF <= '9'))
{
receive[i]=SBUF-'0';//將字符串按字節放入到數組當中,起到一定的緩存作用
i++;
}
UART_buff = SBUF; //接收.只支持字符,不支持字符串
SBUF=UART_buff;//這個用于電腦串口的接收,也就是發送
TI = 0; //清除標志.
Send_ed = 1;
}
else { //如果送畢.
TI = 0; //清除標志.
Send_ed = 1;
}
}
///*********************該程序可實現燈的亮滅**可以實現串口通信以及電腦控制單片機/只能發送單個*********************************/
///*該程序寫的比較好*//*通過兩個不同的標志位實現,非常棒*/
//#include <STC15f2k60s2.h>
//
//#define u16 unsigned int
//#define u8 unsigned char
//
//u16 pwm_value;
//
//sbit LED = P1^0;//用于檢測電腦與單片機串口正常通信
//unsigned char UART_buff;//串口的接收和發送(只能是單個字符的使用)
//unsigned char receive[50];//用于接收所發出來的字符串
//unsigned char i;
//int xianshi;
//double shuju;
//bit New_rec = 0, Send_ed = 1, Money = 0; //定義的一些標記位
//unsigned char code DSY_CODE[]=
//{
//0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
//};//這是時鐘所用到的數
///*******用于一毫秒的延時****************/
//void delayms(unsigned int xms)
//{
//unsigned int i,j;
//for(i=xms;i>0;i--)
//for(j=110;j>0;j--);
//}
///*數碼管顯示程序2*/
//void display1(int h)
//{
//P2=0xfe;
//P0=DSY_CODE[h/100]&0x7f;
//delayms(1);
//P2=0xff;
//P0=0xff;
//P2=0xfd;
//P0=DSY_CODE[h%100/10];
//delayms(1);
//P2=0xff;
//P0=0xff;
//P2=0xfb;
//P0=DSY_CODE[h%100%10];
//delayms(1);
//P2=0xff;
//P0=0xff;
//}
//
////========================================================================
//// 函數: UpdatePwm(u8 PCA_id, u16 pwm_value)
//// 描述: 更新PWM值.
//// 參數: PCA_id: PCA序號. 取值 PCA0,PCA1,PCA2,PCA_Counter
//// pwm_value: pwm值, 這個值是輸出高電平的時間.
//// 返回: none.
//// 版本: V1.0, 2012-11-22
////========================================================================
//void UpdatePwm(u16 uart_date)
//{
// pwm_value=uart_date/2;
// if(pwm_value == 0)
// {
// CCAP0H =0xff;
// }
// else
// {
// CCAP0H = (u8)(256 - pwm_value);
// }
//}
//
////----------------------------------------------
//void main (void)
//{
// AUXR |= 0x40; //設置1T
// AUXR &= 0xfe; //設置定時器1為串口1波特率發生器
// PCON &= 0x7f; //不加倍
// TMOD = 0x20; //定時器1工作方式2
// TH1 = 0xdc;
// TL1 = 0xdc;
// SM0 = 0;
// SM1 = 1;
// REN = 1;
// TR1 = 1;
// ES = 1;
// EA = 1;
//
// while(1)
// {
// while(i>=2)
// {
// shuju=(double)(receive[0])+(double)(receive[1])/10+(double)(receive[2])/100;
// xianshi=shuju*100;
// display1(xianshi);
//
// // PCA0初始化
// AUXR1 &= ~0x30;
// AUXR1 |= 0x10; //切換IO口, 0x00: P1.2 P1.1 P1.0 P3.7, 0x10: P3.4 P3.5 P3.6 P3.7, 0x20: P2.4 P2.5 P2.6 P2.7
// CCAPM0 = 0x42; //工作模式 PWM
// PCA_PWM0 = (PCA_PWM0 & ~0xc0) | 0x00; //PWM寬度, 0x00: 8bit, 0x40: 7bit, 0x80: 6bit
// CMOD = (CMOD & ~0xe0) | 0x08; //選擇時鐘源, 0x00: 12T, 0x02: 2T, 0x04: Timer0溢出, 0x06: ECI, 0x08: 1T, 0x0A: 4T, 0x0C: 6T, 0x0E: 8T
// CR = 1;
// UpdatePwm(xianshi);
// }
// if ((New_rec == 1) && (Send_ed == 1))
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
15電腦串口控制單片機電壓精美版1.zip
(31.15 KB, 下載次數: 13)
2018-5-19 08:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
99tv成人影院
|
三级黄色网址
|
国产精品一区一区
|
日韩精品视频在线
|
久久成人午夜
|
国产免费高清
|
男女羞羞的网站
|
蜜桃在线视频
|
日韩不卡一区二区
|
在线观看av网站
|
男人的天堂中文字幕
|
久久精品一区二区视频
|
91精品国产自产在线老师啪
|
亚洲欧美日韩中文在线
|
欧美爱爱视频
|
久久99精品久久久久久
|
中文字幕在线一区二区三区
|
久久久亚洲一区
|
瑟瑟激情
|
亚洲狠狠爱
|
中文成人无字幕乱码精品
|
91精品久久久久久久99
|
亚洲一区二区三区在线视频
|
精品国产伦一区二区三区观看说明
|
亚洲精品二区
|
久久久久国产精品一区
|
久久精品国产久精国产
|
久久久久久国产一区二区三区
|
日日夜夜免费精品视频
|
免费av毛片
|
日韩精品无码一区二区三区
|
国产精品高清在线
|
日本久久视频
|
免费在线视频精品
|
亚洲国产精品久久久
|
精品一区二区三区四区
|
亚洲一区综合
|
成人精品国产免费网站
|
久久人人网
|
国产精品久久久久久久免费大片
|
re久久
|