资源简介
用ds18b20测量温度并在带中文字库的12864液晶屏上显示,设置上限温度用于防火报警。
代码片段和文件信息
/***************************lcd12864部分******************************/
#include
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1
sbit rs = P3^7; //H=data; L=command;
sbit rw = P3^6; //H=read; L=write;
sbit e = P3^5; //input enable;
sbit psb= P0^3; //H=并口; L=串口;
sbit rst= P0^1; //Reset Signal 低电平有效
//并行数据口接P2口
//还可以另外定义一个lcd busy bit可用于接指示灯等指示lcd忙状态
//部分函数声明:
void wr_lcd (uchar dat_commuchar content);
void chk_busy (void);
void delayus(uint us);
void delayms(uint ms);
/******************************************************************************************
* 函数名称 :delay
* 功能描述 :延时10*us
******************************************************************************************/
void delayus(uint us) //delay time
{
while(us--);
}
/******************************************************************************************
* 函数名称 :delayms
* 功能描述 : 延时ms毫秒
******************************************************************************************/
void delayms(uint ms)
{
uint ij;
for(i=0;i for(j=0;j<15;j++)
delayus(1);
}
/******************************************************************************************
* 函数名称 :init_lcd
* 功能描述 : 初始化
******************************************************************************************/
void init_lcd(void)
{
rst=1;
psb=1;
wr_lcd(comm0x30); /*30---基本指令动作*/
wr_lcd(comm0x01); /*清屏,地址指针指向00H*/
wr_lcd(comm0x06); /*光标的移动方向*/
wr_lcd(comm0x0c); /*开显示,关游标*/
}
/******************************************************************************************
* 函数名称:locate_lcd
* 功能描述: lcd定位显示
******************************************************************************************/
void locate_lcd(unsigned char poxunsigned char poy)//行数pox=1-4;每行
//有8个poy=1-8
{ unsigned char data pos;
if(pox&0x01) //第一、三行,pox=0x010x03
{
pos=poy|0x80;
if(pox&0x02) pos+=0x07;//pos=poy+0x80+0x07第三行
else pos-=0x01; //pos=poy+0x80-0x01第一行
}
else
{
pos=poy|0x90;
if(pox&0x02) pos-=0x01;//pos=poy+0x90-0x01第二行
else pos+=poy|0x07; //pos=poy+0x90+0x07第四行
}
wr_lcd(commpos);
}
/******************************************************************************************
* 函数名称 :wr_lcd
* 功能描述 :写控制命令或显示数据
******************************************************************************************/
void wr_lcd(uchar dat_commuchar content)
{
chk_busy();
if(dat_comm)
{
rs=1; //data
rw=0; //write
}
else
{
rs=0; //command
rw=0; //write
}
P2=content; //output data or comm
e=1;
;
e=0;
}
/***********************************************************************
- 上一篇:国科大_模式识别_刘成林向世明_2017年期末试卷
- 下一篇:蚁群算法-TSP旅行商
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- stm32 ds18b20 温度传感器 测试通过
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- DS18B20分布式多点测温的Proteus仿真
- 单片机 DS18B20 温度控制系统
- 课程设计蔬菜大棚自动控制系统,包
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- lcd12864的VHDL程序
- 51单片机频率计(很简单)
- LCD12864滚动显示
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
评论
共有 条评论