VB与单片机的温度测控系统实习报告 - 图文

更新时间:2023-10-26 19:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

粮库温度监控管理系统

实习报告

系别:电气工程系 班级:应电121班 姓名:啜文彬 学号:27号

指导教师:曹世超老师、李鑫老师

VB与单片机实习

一、实习内容

实习名称:粮库温度监控管理系统

实习时间:14-15周 A312 CAD实训室

所需软件:VB.NET 、Proutues、Keil、串口调试助手、虚拟串口。

实习目的:1、掌握MCS51单片机与上位机的串行通信方法 2、掌握MCS51单片机的程序汇编 3、掌握仿真器使用方法 4、掌握MCS51单片机的调试步骤 5、掌握VB的图形绘制

二、电路仿真图

三、MCS51单片机程序

#include unsigned char i=0,z;

unsigned char IDD[8][5]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},

{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},}; void DelayMs(unsigned char n) {

unsigned char i=0,j=0; for(i=0;i

bit flag1s = 0; //1s定时标志

unsigned char T0RH = 0; //T0重载值的高字节 unsigned char T0RL = 0; //T0重载值的低字节

void ConfigTimer0(unsigned int ms);

extern void ConfigUART(unsigned int baud);

unsigned char IntToString(unsigned char *str, int dat);

extern bit Start18B20();

extern unsigned char lcdadd,tmp; extern bit Get18B20Temp(int *temp); extern void InitLcd1602();

extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str); void main() {

bit res;

int temp; //读取到的当前温度值 int intT, decT; //温度值的整数和小数部分 unsigned char len; unsigned char str[12];

EA = 1; //开总中断 ConfigTimer0(10); //T0定时10ms ConfigUART(9600);

Start18B20(); //启动DS18B20

InitLcd1602(); //初始化液晶

while (1) {

if (flag1s) //每秒更新一次温度 {

flag1s = 0;

res = Get18B20Temp(&temp); //读取当前温度

if (res) //读取成功时,刷新当前温度显示 {

intT = temp >> 4; //分离出温度值整数部分 decT = temp & 0xF; //分离出温度值小数部分 len = IntToString(str, intT); //整数部分转换为字符串 str[len++] = '.'; //添加小数点

decT = (decT*10) / 16; //二进制的小数部分转换为1位十进制位

str[len++] = decT + '0'; //十进制小数位再转换为ASCII字符 while (len < 4) //用空格补齐到6个字符长度 {

str[len++] = ' '; }

str[len] = '\\0'; //添加字符串结束符 switch(lcdadd) {

case 0:LcdShowStr(0, 0, \

//显示到液晶屏上

case 1:LcdShowStr(8, 0, \

case 2:LcdShowStr(0, 1, \//显示到液晶屏上

case 3:LcdShowStr(8, 1, \

case 4:LcdShowStr(0, 0, \//显示到液晶屏上

case 5:LcdShowStr(8, 0, \

case 6:LcdShowStr(0, 1, \//显示到液晶屏上

case 7:LcdShowStr(8, 1, \

default: break; }

for(z=0;z<2;z++)

IDD[lcdadd][z]=str[z]; IDD[lcdadd][2]='\\0'; }

else //读取失败时,提示错误信息 {

LcdShowStr(0, 0, \ }

/*********************************************************/

if(tmp==1) {

while(IDD[lcdadd][i]!='\\0') {

SBUF=IDD[lcdadd][i]; while(!TI); TI=0; i++;

DelayMs(30);

本文来源:https://www.bwwdw.com/article/a8k2.html

Top