毕业设计最终修订 定稿版(8)

2019-06-02 16:27

朱野:基于无线传感网络的温度监控系统

#define LCD_CLEAR_SCREEN 0x01 // 清屏

#define LCD_HOMING 0x02 // 光标返回原点 void LCD_Write(bit style, unsigned char input) {

LcdEn=0;

LcdRs=style;

LcdRw=0; _nop_();

DBPort=input; _nop_();//注意顺序 LcdEn=1; _nop_();//注意顺序 LcdEn=0; _nop_(); LCD_Wait(); }

/设置显示模式*************************************************/ #define LCD_SHOW 0x04 //显示开 #define LCD_HIDE 0x00 //显示关 #define LCD_CURSOR 0x02 //显示光标

#define LCD_NO_CURSOR 0x00 //无光标 #define LCD_FLASH 0x01 //光标闪动 #define LCD_NO_FLASH 0x00 //光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode) {

LCD_Write(LCD_COMMAND, 0x08|DisplayMode); }

/设置输入模式************************************************************/ #define LCD_AC_UP 0x02

#define LCD_AC_DOWN 0x00 // default #define LCD_MOVE 0x01 // 画面可平移 #define LCD_NO_MOVE 0x00 //default void LCD_SetInput(unsigned char InputMode) {

LCD_Write(LCD_COMMAND, 0x04|InputMode); }

/初始化LCD**************************************************************/ void LCD_Initial() {

LcdEn=0;

LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵 LCD_Write(LCD_COMMAND,0x38);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动 }

//液晶字符输入的位置**************************************************/

30

安徽工程大学机电学院毕业设计(论文)

void GotoXY(unsigned char x, unsigned char y) {

if(y==0)

LCD_Write(LCD_COMMAND,0x80|x); if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40)); }

/***********************将字符输出到液晶显示****************************/ void Print(unsigned char *str) {

while(*str!='\\0') {

LCD_Write(LCD_DATA,*str); str++; } }

void show_value() //液晶显示程序 {

ReadTemp(); //开启温度采集程序

temp_to_str(); //温度数据转换成液晶字符 GotoXY(12,1); //液晶字符显示位置 Print(TempBuffer); //显示测量温度

GotoXY(12,0); //液晶字符显示位置 Print(maxtemp); //显示报警温度 Delay1ms(400); //扫描延时 }

void Warming()

{if(temp_value>=maxtenp) JDQ=~JDQ; else JDQ=0; }

#include #include

typedef unsigned char uchar; typedef unsigned char uint;

//****************************************IO端口*************************************** sbit MISO =P1^3; sbit MOSI =P1^1; sbit SCK =P1^4; sbit CE =P1^5; sbit CSN =P1^0; sbit IRQ =P1^2;

31

定义朱野:基于无线传感网络的温度监控系统

sbit LcdRs = P2^3; sbit LcdRw = P2^2; sbit LcdEn = P2^1;

sbit ACC0 = ACC^0; sbit ACC7 = ACC^7;

sbit Set = P2^5; //模式切换键 sbit Up = P2^6; //加法按钮 sbit Down = P2^7; //减法按钮

sbit DQ = P2^0; //温度传送数据IO口

sbit JDQ= P2^4; //发光二极管模拟继电器输出 char done,count,temp,flag,up_flag,down_flag; int temp_value; //温度值 int temp_value; //报警温度 uchar TempBuffer[5];

/***********1602液晶显示部分子程序****************/

//Port Definitions***************************************

sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 /内部等待函数*********************************************** unsigned char LCD_Wait(void) {

LcdRs=0;

LcdRw=1; _nop_();

LcdEn=1; _nop_(); LcdEn=0;

return DBPort; }

//向LCD写入命令或数据**************************** #define LCD_COMMAND 0 // Command #define LCD_DATA 1 // Data #define LCD_CLEAR_SCREEN 0x01 // 清屏

#define LCD_HOMING 0x02 // 光标返回原点 void LCD_Write(bit style, unsigned char input) {

LcdEn=0;

LcdRs=style;

LcdRw=0; _nop_();

DBPort=input; _nop_();//注意顺序 LcdEn=1; _nop_();//注意顺序 LcdEn=0; _nop_(); LCD_Wait(); }

/设置显示模式*************************************************/ #define LCD_SHOW 0x04 //显示开

32

安徽工程大学机电学院毕业设计(论文)

#define LCD_HIDE 0x00 //显示关 #define LCD_CURSOR 0x02 //显示光标

#define LCD_NO_CURSOR 0x00 //无光标 #define LCD_FLASH 0x01 //光标闪动 #define LCD_NO_FLASH 0x00 //光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode) {

LCD_Write(LCD_COMMAND, 0x08|DisplayMode); }

//设置输入模式************************************************************ #define LCD_AC_UP 0x02

#define LCD_AC_DOWN 0x00 // default #define LCD_MOVE 0x01 // 画面可平移 #define LCD_NO_MOVE 0x00 //default void LCD_SetInput(unsigned char InputMode) {

LCD_Write(LCD_COMMAND, 0x04|InputMode); }

//初始化LCD************************************************************ void LCD_Initial() {

LcdEn=0;

LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵 LCD_Write(LCD_COMMAND,0x38);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动 }

//液晶字符输入的位置************************ void GotoXY(unsigned char x, unsigned char y) {

if(y==0)

LCD_Write(LCD_COMMAND,0x80|x); if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40)); }

//将字符输出到液晶显示

void Print(unsigned char *str) {

while(*str!='\\0') {

LCD_Write(LCD_DATA,*str); str++;

33

朱野:基于无线传感网络的温度监控系统

} }

void show_value() //液晶显示程序 {

ReadTemp(); //开启温度采集程序

temp_to_str(); //温度数据转换成液晶字符 GotoXY(12,1); //液晶字符显示位置 Print(TempBuffer); //显示测量温度

GotoXY(12,0); //液晶字符显示位置 Print(maxtemp); //显示报警温度 Delay1ms(400); //扫描延时 }

void Warming()

{if(temp_value>=maxtenp) JDQ=~JDQ; else JDQ=0; }

/***********ds18b20子程序*************************/ /***********ds18b20延迟子函数(晶振12MHz )*******/ void delay_18B20(unsigned int i) {

while(i--); }

/**********ds18b20初始化函数**********************/ void Init_DS18B20(void) {

unsigned char x=0;

DQ = 1; //DQ复位 delay_18B20(8); //稍做延时

DQ = 0; //单片机将DQ拉低

delay_18B20(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay_18B20(14);

x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20); }

/***********ds18b20读一个字节**************/ unsigned char ReadOneChar(void) {

uchar i=0;

uchar dat = 0; for (i=8;i>0;i--) {

34


毕业设计最终修订 定稿版(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年高考数学总复习精品资料13

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: