资源简介
液晶温度计.zip

代码片段和文件信息
/*作者:王先生
51单片机:清华电子的板
联系方式:QQ:2019529860*/
#include
#include
#include
typedef unsigned char uchar;
typedef unsigned int uint;
sbit DS = P2^2;//DS18B20接口
sbit BP = P2^3;//蜂鸣器
sbit DU = P2^6;//数码管段选码
sbit WE = P2^7;//数码管位选码
sbit key_s1 = P3^0;
sbit key_s2 = P3^1;
sbit key_s3 = P3^2;
sbit EN = P3^4;//LCD使能端
sbit RS = P3^5;//LCD数据命令选择端
sbit RW = P3^6;//LCD读写选择端
uint FF;
uint DDLL;
uint K=0;
uint M=0;
uint s=0;
void delayus(uchar us)
{
while(us--);//us--要6.5us进入一次函数11.95us;
} //微秒延时
void LCD_READ_BUSY() //忙不忙
{
uchar busy;
P0 = 0XFF;
RS = 0;
RW = 1;
do
{
EN = 1;
busy = P0;
EN = 0;
}while(busy&0X80);
EN = 1;
}
void LCD_WRITE_CMD(uchar cmd)//写一个字节命令流程
{
LCD_READ_BUSY();//判断忙不忙
RS = 0;
RW = 0;
P0 = cmd;
EN = 1;
EN = 0;
}
void LCD_WRITE_DATE(uchar dat)//写一个字节数据
{
LCD_READ_BUSY();
RS = 1;
RW = 0;
P0 = dat;
EN = 1;
EN = 0;
}
void LCD_OneChar(uchar x uchar yuchar dat)//指定位置显示字符
{
if(y)
x |= 0x40;//位选或
x |= 0x80;
LCD_WRITE_CMD(x);
LCD_WRITE_DATE(dat);
}
void LCD_Str(uchar x uchar y uchar *str)//指定位置显示字符串
{
if(y)
x |= 0x40;
x |= 0x80;
LCD_WRITE_CMD(x);
while(*str != ‘\0‘)
{
LCD_WRITE_DATE(*str++);
}
}
void LCD_Init() // 初始化
{
LCD_WRITE_CMD(0x38); // 设置16*2显示,5*7点阵,8位数据接口
LCD_WRITE_CMD(0x0c); //开显示
LCD_WRITE_CMD(0x06); //读写一字节后地址指针加1
LCD_WRITE_CMD(0x01); //清除显示
}
bit ds_init()//单总线初始化程序
{
bit i;
DS = 1;
_nop_();
DS = 0;
delayus(75);//拉低总线;保持480us以上,75*6.5+11.95=499.45ms
DS = 1;//释放总线
delayus(1);//1*6.5+11.95=18.45us等待发回信号(15-60us)
i = DS;
delayus(20);//读取存在信号的时间20*6.5+11.95=141.95us
DS = 1; //释放总线
_nop_();
return(i);//i=0代表DS18B20已经准备好了
}
void displayN(int c)//温度正常显示
{
uint i;
uchar M1M2M3M4;
uchar TestStr[] = {“Tem:“};
uchar TestStr1[] = {“DB:WYX“};
/*if(c<0)
{m = 2;}
else if(c>=0)
{m = 0;}*/
i = abs(c);
M1 = i/1000;//千位
M2 = i%1000/100;//百位
M3 = i%1000%100/10;//十位
M4 = i%10; //个位
DU = 0;
WE = 0;//关闭数码管显示
LCD_Init();//1602初始化
LCD_Str(0 0 &TestStr[0]); //显示字符串
LCD_Str(0 1 &TestStr1[0]); //显示字符串
LCD_OneChar(6 0 43+s);//正负号
LCD_OneChar(7 0 M1+48); //显示温度
LCD_OneChar(8 0 M2+48);
LCD_OneChar(9 0 M3+48);//正负号
LCD_OneChar(10 0 46);
LCD_OneChar(11 0 M4+48);
LCD_OneChar(12 0 39);
LCD_OneChar(13 0 67);
LCD_OneChar(15 0 78+DD*10); //显示蜂鸣器开关
LCD_OneChar(15 1 78+LL*10); //显示指示灯开关
}
void displayM(int c)
{
uchar M1M2M3M4;
int im;
uchar TestStr[] = {“Tem:“};
uchar TestStr1[] = {“High“};
if(c<0)
{m = 2;}
else if(c>=0)
{m = 0;}
i = abs(c);
M1 = i/1000;//千位
M2 = i%1000/100;//百位
M3 = i%1000%100/10;//十位
M4 = i%10; //个位
DU = 0;
WE = 0;//关闭数码管显示
LCD_Init();//1602初始化
LCD_Str(0 0 &TestStr[0]); //显示字符串
LCD_Str(7 1 &TestStr1[0]); //显示字符串
LCD_OneChar(6 0 43+m);//正负号
LCD_OneChar(7 0 M1+48); //显示温度
LCD_OneChar(8 0 M2+4
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-09-04 10:30 液晶温度计\
文件 29876 2018-07-03 09:04 液晶温度计\DS18B20-LCD
文件 11104 2018-09-04 10:30 液晶温度计\DS18B20-LCD.c
文件 11656 2018-07-03 09:04 液晶温度计\DS18B20-LCD.hex
文件 54 2018-07-03 09:04 液晶温度计\DS18B20-LCD.lnp
文件 27373 2018-07-03 09:04 液晶温度计\DS18B20-LCD.LST
文件 36749 2018-07-03 09:04 液晶温度计\DS18B20-LCD.M51
文件 35294 2018-07-03 09:04 液晶温度计\DS18B20-LCD.OBJ
文件 214 2018-09-04 10:30 液晶温度计\DS18B20-LCD.plg
文件 55777 2018-09-04 10:30 液晶温度计\DS18B20-LCD.uvopt
文件 13246 2018-07-01 19:13 液晶温度计\DS18B20-LCD.uvproj
文件 55783 2018-07-03 11:11 液晶温度计\DS18B20-LCD_uvopt.bak
文件 13247 2018-06-27 13:04 液晶温度计\DS18B20-LCD_uvproj.bak
- 上一篇:LIN总线物理层设计评估
- 下一篇:中国各省边界shape文件
相关资源
- Listary Pro 破解最新版
- Allway Sync Pro 10.5.8注册码 序列号 激活
- 百度文库破解软件
- winfrom自定义设计器源码
- 操作系统哲学家就餐问题(界面+源码
- 康耐视电子表格实战
- getdata破解补丁
- 一键反修复远程桌面.rar
- STM32F407ZGT6实现HAL库硬件I2C读写EEPROM功
- arcGis10.2
- PS技术 在学校里 学三年 也学不到这么
- Hi3520D300 硬件设计用户指南
- Hi3536 Linux开发环境用户指南
- activiti-explorer流程图设计器汉化文件
- 数据库课程设计停车场管理系统
- m×n的长方阵迷宫问题完美求解
- 针对MPLAB® X IDE使用PICKit™ 3在线调
- 东软股份教育事业部解决方案
- 东软数字化校园网解决方案成功应用
- 奶瓶(beini)无限免费破解增强版 使
- 交通灯multisim仿真(附图)
- powerdesigner 15.1 license key
- powerdesigner15.0的注册码license key
- visio软件64位破解版本
- Internet Explorer 11 Windows 系统 各版本
-
开机速度优化工具Startup Dela
yer3.0中 - tomcat 8.0 32位 绿色版
- 四路抢答器
- SolidWorks-100多个
- delphi源码-检测是否运行了多个程序
评论
共有 条评论