亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版
標題:
自己寫的RS485型風向傳感器連接單片機,LCD1602顯示風向的程序,求大家幫忙看看
[打印本頁]
作者:
明日香
時間:
2020-11-7 10:40
標題:
自己寫的RS485型風向傳感器連接單片機,LCD1602顯示風向的程序,求大家幫忙看看
風向傳感器的說明書:
風向傳感器4.PNG
(148.41 KB, 下載次數: 66)
下載附件
2020-11-7 10:38 上傳
這是源程序:
main.c:
#include<stc12c5a.h>
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<math.h>
#include<intrins.h>
#include "LCD.h"
uchar table[24]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uchar wind_direction[8]={0x01,0x03,0x00,0x00,0x00,0x02,0xC4,0x0B};//風向傳感器問詢幀
uchar wind_direction1[2]={0x00,0x00};//單片機接收風向數據
void delay(uint z)//延時函數
{
uint x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
void init() //系統初始化
{
TMOD=0X20;//定時器T1,方式2,波特率由PCON寄存器的SMOD決定
TH1=0xfa;
TL1=0xfa;
TR1=1;//定時器1中斷
SCON=0x50;//方式1 SCON是串行口1的串行控制寄存器
PCON=0x00;//各工作方式波特率加倍
TR1=1;//定時器1開始工作
IP=0X10;
EA=1;
ES=1;
}
void main()
{
init();
while(1)
{
int i;
for(i=0;i<8;i++)
{
SBUF=wind_direction[i];
while(!TI); //數據發送結束時TI置1
TI=0;
}
lcd1602_show(0x80,wind_direction1[0]);
}
}
void UART_1() interrupt 4
{
int i=0;
//接收完緩沖數據后RI置1
if(RI)//如果RI為1
{
RI=0; //RI置0
table[i++]=SBUF;
if(i>8)
{
wind_direction1[0]=table[3];//風向數據給wind_direction1[0]
}
}
}
復制代碼
LCD.c程序:
#include<reg52.h>
#include<intrins.h>
#include "LCD.h"
#define uchar unsigned char
#define uint unsigned int
#define IODATA P0
sbit E=P2^2; //1602使能引腳
sbit RW=P2^1; //1602讀寫引腳
sbit RS=P2^0; //1602數據/命令選擇引腳
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--);
for(j=120;j>0;j--);
}
void wcmd(uchar del)//寫命令函數
{
RS=0;//命令選擇端
delay(10);
RW=0;//寫命令
delay(10);
IODATA=del; //把命令字寫入
delay(10);
E=1;//使能
delay(10);
E=0;
}
void lcd1602_writedata(uchar dat)//寫數據函數
{
delay(10);
RS=1;//數據選擇端
delay(10);
RW=0;//寫命令
delay(10);
IODATA=dat; //把要顯示的數據寫入
delay(10);
E=1;
delay(10);
E=0;
}
void lcd1602_init()//LCD初始化
{
wcmd(0x38);
wcmd(0x0C);
wcmd(0x06);
wcmd(0x01);
}
void lcd1602_show(uchar a,uchar code sign[])
{
uchar m=0;
lcd1602_init();
delay(1000);
wcmd(a);
delay(1000);
for(m=0;m<4;m++)
{
lcd1602_writedata(sign[m]);
}
}
復制代碼
LCD.h程序:
#ifndef _LCD_H
#define _LCD_H
#define uchar unsigned char
#define uint unsigned int
void lcd1602_init();
void wcmd(uchar del);
void lcd1602_writedata(uchar dat);
#endif
作者:
51hei團團
時間:
2020-11-7 16:34
好資料,51黑有你更精彩!!!
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1