DS1302时钟+DS18B20用LCD1602显示(系统很简单).doc
文本预览下载声明
DS1302时钟+DS18B20用LCD1602显示(系统很简单)
看仔细点啊? 貌似很多这样的图但可不一样喔? 最小系统是用AT89s52搭建的!记得回去自己用protues和Keil仿真一下,这样有利于进一步了解!故未将仿真好的代码上传,如果真的需要的话可以和我联系!程序代码:
#include REG51.H#include intrins.h//#include LCD1602.h//#include DS1302.h#define uint unsigned int#define uchar unsigned charsbit? DS1302_CLK = P1^7;????????????? //实时时钟时钟线引脚?sbit? DS1302_IO? = P1^6;????????????? //实时时钟数据线引脚?sbit? DS1302_RST = P1^5;????????????? //实时时钟复位线引脚sbit? wireless_1 = P3^0;sbit? wireless_2 = P3^1;sbit? wireless_3 = P3^2;sbit? wireless_4 = P3^3;sbit? ACC0 = ACC^0;sbit? ACC7 = ACC^7;char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;? //秒,分,时到日,月,年位闪的计数sbit Set = P2^0;?????? //模式切换键sbit Up = P2^1;??????? //加法按钮sbit Down = P2^2;????? //减法按钮sbit out = P2^3;?????? //立刻跳出调整模式按钮sbit DQ = P1^0;??????? //温度传送数据IO口char done,count,temp,flag,up_flag,down_flag;uchar temp_value;????? //温度值uchar TempBuffer[5],week_value[2];
void show_time();?? //液晶显示程序/***********1602液晶显示部分子程序****************/
//Port Definitions**********************************************************sbit LcdRs??= P2^5;sbit LcdRw??= P2^6;sbit LcdEn? ?= P2^7;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??? //显示开#define LCD_HIDE???0x00??? //显示关??
#define LCD_CURSOR???0x02 ?//显示光标#define LC
显示全部