数字温度计C程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验内容:DS18b20温度传感器
晶振:11.0592M
实验连线:
*/
#include
#include
#include
unsigned char disp0, disp1, disp2, disp3;
sbit DQ = P2^7;
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
sbit led4=P2^4;
sbit led5=P2^5;
#define Com_Buf 0x45//命令缓冲单元
#define Dat_Buf 0x46//数据缓冲单元
#define Leng 0x47//读写字节长度存放单元
#define Table 0x78//表首地址存放单元
#define SoftRes 0xe2//液晶软件复位指令
#define Disp_On 0xaf//液晶显示指令
#define Page_Add 0xb8//液晶页面选择指令
#define Col_Add 0x00//液晶列设置指令
#define Colen 0x43//列地址长度存储单元
#define dd 0xd0
typedef unsigned char BYTE;
#define Lcd_Bus P0 //MCU P1<------> LCM unsigned char code HK_HZ[12][16];
unsigned char code HK_HZ1[11][32];
sbit A0=P2^3; //Master chip enable
sbit E1=P2^0; //Slave chip enable
sbit E2=P2^1; //6800 mode Enable single
sbit RW=P2^2; //Data or Instrument Select
sbit Lcd_Rst=P2^4; //Lcm reset
/*------------------延时子程序-----------------------------*/ void delay(unsigned int t)
unsigned int i,j;
for(i=0;i for(j=0;j<10;j++) ; } /*------------------写命令到LCD------------------------------*/ void write_com(unsigned char cmdcode) { A0=0; Lcd_Bus=cmdcode; E1=0; E2=0; //delay(1); E1=1; //delay(1); E1=0; //delay(1); E2=1; //delay(1); E2=0; //delay(1); } /*-------------------写数据到LCD----------------------------*/ void write_data(unsigned char Dispdata) { A0=1; Lcd_Bus=Dispdata; E1=0; E2=0; //delay(1); E1=1; //delay(1); E1=0; //delay(1); E2=1; //delay(1); E2=0; //delay(1); } /*-------------------写数据到LCD----------------------------*/ void write_data1(unsigned char Dispdata) { A0=1; Lcd_Bus=Dispdata; E1=0; E2=0; E1=1; delay(1); E1=0; } /*-------------------写数据到LCD----------------------------*/ void write_data2(unsigned char Dispdata) { A0=1; Lcd_Bus=Dispdata; E1=0; E2=0; E2=1; delay(1); E2=0; } /*------------------清除内存---------------*/ void Clr_Scr() { unsigned char j,k; for(k=0;k<4;k++) { write_com(Page_Add+k); write_com(Col_Add+0); for(j=0;j<61;j++) write_data(0x00); } /*---------------------指定位置显示汉字16*16-----------------------*/ void hz_disp16_1(unsigned char pag,unsigned char col, unsigned char code *hzk) { unsigned char j=0,i=0; for(j=0;j<2;j++){ write_com(Page_Add+pag+j); write_com(Col_Add+col); for(i=0;i<16;i++) write_data1(hzk[16*j+i]); } } /*---------------------指定位置显示汉字------8*16---------------*/ void hz_disp16_2(unsigned char pag,unsigned char col, unsigned char code *hzk) { unsigned char j=0,i=0; for(j=0;j<2;j++){ write_com(Page_Add+pag+j); write_com(Col_Add+col); for(i=0;i<8;i++) write_data2(hzk[8*j+i]); } } /*------------------初始化LCD屏--------------------------*/ void init_lcd() { Lcd_Rst=1; A0=0; RW=0; delay(100); write_com(SoftRes);//软复位 write_com(Disp_On);//打开显示 write_com(dd);