欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
stc15單片機1602串口顯示北斗定位數據程序
[打印本頁]
作者:
heaven666
時間:
2019-3-13 09:39
標題:
stc15單片機1602串口顯示北斗定位數據程序
單片機源程序如下:
#include "MAIN.H"
#include "DELAY.H"
#include "lcd1602.h"
#include "uart.h"
#include<string.h>
#define Uart1_Buf_Max 70//串口數據緩存長度
#define Uart2_Buf_Max 70
#define uint unsigned int
#define uchar unsigned char
/************* 本地常量聲明 **************/
write_com(unsigned char);
/************* 本地變量聲明 **************/
u8 count = 0;
u8 idata Rec_Buf[Uart1_Buf_Max]; //串口數據緩存
u8 point1 = 0; //綬存指針
u8 a,flag;
u8 xdata Uart2_Rec_Buf[Uart2_Buf_Max]; //串口數據緩存
u8 point2 = 0;
/************* 本地函數聲明 **************/
/************* 外部函數和變量聲明 *****************/
bit B_TX2_Busy = 0;
/******************** IO配置函數 **************************/
void GPIO_config(void)
{
P5M0 &= ~(1<<5); //設置P5.5為準雙向口
P5M1 &= ~(1<<5);
}
/******************** 主函數 **************************/
void UartInit(void) //9600bps@11.0592MHz
{
//注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為
// 高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用
//相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
// P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位數據,可變波特率
AUXR |= 0x40; //定時器1時鐘為Fosc,即1T
AUXR &= 0xFE; //串口1選擇定時器1為波特率發生器
TMOD &= 0x0F; //清除定時器1模式位
TMOD |= 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xDC; //設定定時初值
TH1 = 0xDC; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
S2CON = 0x50; //8位數據,可變波特率
AUXR |= 0x04; //定時器2時鐘為Fosc,即1T
T2L = 0xE0; //設定定時初值
T2H = 0xFE; //設定定時初值
AUXR |= 0x10; //啟動定時器2
UART2_INT_ENABLE();
ES = 1;
EA = 1;
}
/*----------------------------
發送串口數據
----------------------------*/
void SendData(unsigned char ch)
{
SBUF = ch; //寫數據到UART數據寄存器
while(TI == 0);
TI = 0;
}
/*----------------------------
發送字符串
----------------------------*/
void SendString(char *s)
{
while (*s) //檢測字符串結束標志
{
SendData(*s++); //發送當前字符
}
}
void Send(unsigned char *s,unsigned int len)
{
for(a = 0;a<len;a++)
{
SendData(*s++); // *s指向ReBuf[0],*s指向下一個ReBuf[1];
}
}
bit Hand(unsigned char *a) // 串口命令識別函數
{
if(strstr(Rec_Buf,a)!=NULL)
return 1;
else
return 0;
}
void CLR_Buf(void) // 串口緩存清理
{
memset(Rec_Buf, 0, Uart1_Buf_Max); //清空
point1 = 0;
}
/*----------------------------
通過串口2發送串口數據
----------------------------*/
void Uart2SendData(unsigned char ch)
{
while(B_TX2_Busy); //不忙后發送數據
S2BUF = ch; //寫數據到UART數據寄存器
B_TX2_Busy = 1;
}
/*----------------------------
通過串口2發送字符串
----------------------------*/
void Uart2SendString(char *s)
{
while (*s) //檢測字符串結束標志
{
Uart2SendData(*s++); //發送當前字符
}
}
bit Uart2Hand(unsigned char *a) // 串口命令識別函數
{
if(strstr(Uart2_Rec_Buf,a)!=NULL)
return 1;
else
return 0;
}
void Uart2CLR_Buf(void) // 串口緩存清理
{
memset(Uart2_Rec_Buf, 0, Uart2_Buf_Max); //清空
point2 = 0;
}
void main(void)
{
unsigned char add;
unsigned char hh;
hh=Uart2_Rec_Buf[20],10;
GPIO_config();
UartInit();
Init_LCD1602();
LCD1602_write_com(0x80); //指針指向第1行第0個位置
LCD1602_write_word("weidu ");
LCD1602_write_com(0x80+0x40); //指針指向第2行第0個位置
LCD1602_write_word("jingdu ");
Send(&Uart2_Rec_Buf[32],11);
hh=Uart2_Rec_Buf[32];
LCD1602_write_word("hh ");
write_com(0x80+0x40+add);
write_date(0x30+hh);
delay_ms(200);
while(1)
{
SendString("\r\n");
Send(&Uart2_Rec_Buf[0],70);
SendString("\r\nweidu:\r\n");
Send(&Uart2_Rec_Buf[20],10);
SendString("\r\nnanbeibanqiu:\r\n");
Send(&Uart2_Rec_Buf[30],1);
SendString("\r\n");
SendString("jindu:\r\n");
Send(&Uart2_Rec_Buf[32],11);
SendString("\r\n");
SendString("dongxibanqiu:\r\n");
Send(&Uart2_Rec_Buf[43],1);
SendString("\r\n");
SendString("shijian(shi fen miao):\r\n");
Send(&Uart2_Rec_Buf[7],6);
SendString("\r\n");
SendString("shijian(nian yue ri):\r\n");
Send(&Uart2_Rec_Buf[61],2);
Send(&Uart2_Rec_Buf[59],2);
Send(&Uart2_Rec_Buf[57],2);
SendString("\r\n");
SendString("dimiansudu:\r\n");
Send(&Uart2_Rec_Buf[45],6);
SendString("\r\n");
SendString("dimianhangxiang:\r\n");
Send(&Uart2_Rec_Buf[51],6);
SendString("\r\n");
SendString("cipianjiaofangxiang:\r\n");
Send(&Uart2_Rec_Buf[66],1);
SendString("\r\n");
/*
flag = 0;
point1=0;
point2=0;
ES = 1; */
clrStruct();
SendString("\r\n");
Send(&Uart2_Rec_Buf[0],70);
SendString("\r\nweidu:\r\n");
Send(&Uart2_Rec_Buf[20],10);
SendString("\r\nnanbeibanqiu:\r\n");
Send(&Uart2_Rec_Buf[30],1);
SendString("\r\n");
SendString("jindu:\r\n");
Send(&Uart2_Rec_Buf[32],11);
SendString("\r\n");
SendString("dongxibanqiu:\r\n");
Send(&Uart2_Rec_Buf[43],1);
SendString("\r\n");
SendString("shijian(shi fen miao):\r\n");
Send(&Uart2_Rec_Buf[7],6);
SendString("\r\n");
SendString("shijian(nian yue ri):\r\n");
Send(&Uart2_Rec_Buf[61],2);
Send(&Uart2_Rec_Buf[59],2);
Send(&Uart2_Rec_Buf[57],2);
SendString("\r\n");
SendString("dimiansudu:\r\n");
Send(&Uart2_Rec_Buf[45],6);
SendString("\r\n");
SendString("dimianhangxiang:\r\n");
Send(&Uart2_Rec_Buf[51],6);
SendString("\r\n");
SendString("cipianjiaofangxiang:\r\n");
Send(&Uart2_Rec_Buf[66],1);
SendString("\r\n");
}
}
void Usart2() interrupt 8 using 1
{
UART2_INT_DISABLE();
if(RI2)
{
CLR_RI2(); //清除RI位
Uart2_Rec_Buf[point2] = S2BUF;
if(Uart2_Rec_Buf[0]!=
)
{
point2=0;
return;
}
point2++;
if(point2>=Uart2_Buf_Max)
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
08.LCD1602液晶顯示.zip
(41.51 KB, 下載次數: 35)
2019-3-13 09:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2019-3-13 15:26
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1