资源简介
用stc89c52单片机控制液晶1602显示温度(温度传感器ds18b20)和时间,不同温度段有不同的指示灯亮,四个按键进行调时,有原理图
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#include
sbit YLED=P1^6;
sbit GLED=P1^5;
sbit RLED=P1^4;
sbit dq=P1^3;//18b20
sbit rs=P1^2;//1602
sbit rw=P1^1;//1602
sbit ep=P1^0;//1602
sbit k3=P2^3;
sbit k2=P2^1;
sbit k1=P2^2;
sbit k0=P2^0;
int temp;
unsigned char datas[10];
uchar tt;
uchar hou=12min=30sec=0
nh=20nl=11 //2011年
y=6r=12; //6月12日
void delay(uint z) // 延时程序
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) // 写入指令数据到LCD
{
rs=0;
ep=0;
P0=com;
delay(5);
ep=1;
delay(5);
ep=0;
}
void write_data(uchar date) // 写入字符显示数据到LCD
{
rs=1;
P0=date;
delay(5);
ep=1;
delay(5);
ep=0;
}
void init() // LCD初始化
{ tt=0;
rw=0;
write_com(0x38); // 显示模式设置
write_com(0x0c); // 显示开关及光标设置
write_com(0x06); // 显示光标设置
write_com(0x01); // 显示清屏设置
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
}
/*数据处理显示*/
void lcd_sfm(uchar adduchar aa) //时分秒
{
uchar hl;
h=aa/10;
l=aa%10;
write_com(0xc0+add);
write_data(0x30+h);
write_data(0x30+l);
}
void lcd_nh(uchar adduchar aa) // 年h
{
uchar hl;
h=aa/10; // 2
l=aa%10; // 0
write_com(0x80+add);
write_data(0x30+h);
write_data(0x30+l);
}
void lcd_nl(uchar adduchar aa) // 年l
{
uchar hl;
h=aa/10; //1
l=aa%10; //1
write_com(0x80+add);
write_data(0x30+h);
write_data(0x30+l);
}
void lcd_yr(uchar adduchar aa) // 月日
{
uchar hl;
h=aa/10;
l=aa%10;
write_com(0x80+add);
write_data(0x30+h);
write_data(0x30+l);
}
void changetime()
{ int s=0t=1;
while(t)
{ if(k2==0)
{delay(10);
if(k2==0)
{
while(k2==0);
s++;
}
}
if(s==1)
{write_com(0xc0+0x0b); write_com(0xc0+0x0c); // 调分
write_com(0x0f);
if(k1==0)
{ delay(10);
if(k1==0)
{while(k1==0);
min++;
if(min==60)
min=0;
lcd_sfm(0x0bmin);
}
}
if(k3==0)
{ delay(10);
if(k3==0)
{while(k3==0);
min--;
if(min==-1)
min=59;
lcd_sfm(0x0bmin);
}
}
}
if(s==2)
{write_com(0xc0+0x08); write_com(0xc0+0x09); // 调时
if(k1==0)
{delay(10);
if(k1==0)
{while(k1==0);
hou++;
if(hou==24)
hou=0;
lcd_sfm(0x08hou);
}
}
if(k3==0)
{delay(10);
if(k3==0)
{while(k3==0);
hou--;
if(hou==-1)
hou=23;
lcd_sfm(0x08hou);
}
}
}
if(s==3) // 调日
{write_com(0x80+0x0b); write_com(0x80+0x0c);
if(k1==0)
{delay(10);
if(k1==0)
{ while(k1==0);
r++;
if(r==32)
r=1;
lcd_yr(0x0br);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-08-02 14:44 lcd1602 ds18b20 at89c51\
文件 20519 2011-07-17 08:55 lcd1602 ds18b20 at89c51\l
文件 6628 2011-07-17 08:55 lcd1602 ds18b20 at89c51\l.c
文件 7074 2011-07-17 08:55 lcd1602 ds18b20 at89c51\l.hex
文件 50 2011-07-17 08:55 lcd1602 ds18b20 at89c51\l.lnp
文件 16277 2011-07-17 08:55 lcd1602 ds18b20 at89c51\l.LST
文件 29025 2011-07-17 08:55 lcd1602 ds18b20 at89c51\l.M51
文件 22211 2011-07-17 08:55 lcd1602 ds18b20 at89c51\l.OBJ
文件 1239 2011-07-17 11:26 lcd1602 ds18b20 at89c51\l.Opt
文件 1231 2011-06-13 19:48 lcd1602 ds18b20 at89c51\l.opt.bak
文件 356 2011-07-17 11:26 lcd1602 ds18b20 at89c51\l.plg
文件 2026 2011-06-12 19:54 lcd1602 ds18b20 at89c51\l.Uv2
文件 2026 2011-06-12 19:54 lcd1602 ds18b20 at89c51\l.Uv2.bak
文件 56614 2011-06-15 22:56 lcd1602 ds18b20 at89c51\l.uvopt
文件 13388 2011-06-13 22:54 lcd1602 ds18b20 at89c51\l.uvproj
文件 174853 2011-07-02 11:31 lcd1602 ds18b20 at89c51\Last Loaded LCD1602.DBK
文件 175466 2011-07-17 08:50 lcd1602 ds18b20 at89c51\LCD1602.DSN
文件 1054 2011-07-17 11:27 lcd1602 ds18b20 at89c51\LCD1602.PWI
文件 1237 2011-07-13 16:30 lcd1602 ds18b20 at89c51\l_Opt.Bak
文件 56614 2011-06-13 22:54 lcd1602 ds18b20 at89c51\l_uvopt.bak
文件 5115 2002-04-16 14:32 lcd1602 ds18b20 at89c51\STARTUP.A51
文件 11665 2011-07-17 08:55 lcd1602 ds18b20 at89c51\STARTUP.LST
文件 749 2011-07-17 08:55 lcd1602 ds18b20 at89c51\STARTUP.OBJ
- 上一篇:基于smtp协议的邮件发送程序
- 下一篇:hmc5883l 与51单片机接线图
相关资源
- arduino_LiquidCrystal_I2C库及proteus仿真LC
- DS18B20 Verilog驱动程序
- 基于DS18B20的DSP温度测量并用液晶显示
- 基于stc89c52rc单片机的红外遥控小车,
- 基于ARM的DS18B20程序
- DS18B20测温及QT界面实现
- 1602+DS1302时钟+DS18B20
- 简单、规范的Linux下的ds18b20驱动基于
- 飞思卡尔DG128单片机ds18b20程序
- FPGA驱动LCD1602完整工程
- s3c2440裸机DS18B20程序
- LCD1602 PCB封装库
- 基于89C51的等精度频率计LCD1602显示基
- 51单片机pwm波,lcd1602,l298n带prtues仿真
- 51单片机用温度传感器控制直流电机转
- 基于DS18B20的多路温度监测系统设计
- STC89C52循迹小车
- nrf905无线双向通信
- STC单片机原理图库和PCB库
- DS18B20 多点温度测量 用proteus仿真 课
- 基于51单片机的ds18b20的proteus仿真
- 温度传感器数据在数码管上显示
- 汇编语言的饮水机控制程序
- DS18B20 资料原理图+test code
- 基于STC89C52RC单片机的交通灯设计
- 基于STC89C52RC的超声波测距系统设计
- 无线测温程序
- 单片机温湿度检测源代码 dht11 lcd160
- msp430 温湿度sht10 和 DS18B20显示
- DS18B20温度传感器源码
评论
共有 条评论