×
嵌入式 > 嵌入式开发 > 详情

1602液晶万年历源程序-带温度、背光、灰度 数字

发布时间:2020-09-21 发布时间:
|
//1602液晶屏 万年历时钟源程序---加温度、背光、灰度 数字?
/********************************************************************************************程序名:  1602液晶屏时钟程序   编写时间:2012年6月8日硬件支持:LCD1602液晶屏  STC12C2052外部12MHZ晶振 说明备注:    使用2402液晶屏程序,与1602液晶屏程序完全兼容2011-11-18 23:36 实现NPN13001三极管控制背光,P3^7接10K限流电阻。2011-11-19 10:10 添加调年月日时间功能键2011-11-20 08:25 添加闹铃功能2011-11-20 18:00 添加PWM调光功能2011-11-21 22:00 实现4位总线_2行显示2011-11-23 20:33 加入温度显示ds18b02 不加上拉电阻也可以2011-11-26 13:40 实验用一个按键实现长短两种开关代替两个按键2011-12-11 14:50 加入正负号判断 小数点显示温度,更精确2011-12-18 23:36 实现NPN13001三极管控制灰度,P3^5接10K限流电阻准备加入光控背光  LED测光原理应用 有光无背光,外界光线暗 有背光。/********************************************************************************************/#include //头文件#include /********************************************************************************************/typedef unsigned char      uint8;          // 无符号8位整型变量 //#define uchar unsigned char#define uint unsigned int/********************************************************************************************// 引脚定义 // (使用者根据实际更改)/********************************************************************************************/sbit key1=P3^0;                                                                //菜单sbit key2=P3^1;                                                                //调增unsigned char data MENU  = 0;     // 默认菜单 = 0 正常显示时钟/*******************************************************************************************//********************************************18b20******************************************/sbit DQ=P1^0;                                         //温度输入端口                        //uchar temp;                                                //温度值变量8位uint temp;                                                //温度值变量16位uchar s;                                                //负数标志 s=1//**************延时b*******************void delay(uchar b){while (b--){_nop_();  _nop_();}}//**************初始化************************void init_ds18b20(void){uchar n;DQ=1;delay(60); // 15-60usDQ=0;delay(240);delay(240); //480-960usDQ=1;delay(60);n=DQ;                //采集数据 n=1 有无器件delay(60);}//**************写1个字节数据*低位在前*********************************void write_byte(uchar dat){uchar i;for(i=0;i<8;i++){DQ=0;delay(1);DQ=dat&0x01;delay(60);DQ=1;dat>>=1;}delay(60);}//***************读1个字节数据*********************************uchar read_byte(void){uchar i,value;for(i=0;i<8;i++){DQ=0;value>>=1;DQ=1;delay(1);if(DQ)value|=0x80;delay(60);}return value;}//******************读取温度值******************************uchar readtemperature(void){uchar a,b; float tt;                  //浮点变量 有小数计算init_ds18b20();          //初始化write_byte(0xcc); //写指令 跳过ROMwrite_byte(0x44); //写指令 启动温度测量delay(300);                  //延时init_ds18b20();          //初始化write_byte(0xcc); //写指令 跳过ROMwrite_byte(0xbe); //写指令 读取温度数据a=read_byte();          //读取低8位b=read_byte();          //读取高8位//判断正负温度: 负数就取补码if(b>127)                  // 当高8位的第8位为1时,就是负值   1000 0000   0x80  128{a=~a+1;                 // 当为负值的时候,低8位的操作if(~a>=0xff) // 当低8位

				

				

								

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
大疆做不做军用无人机