读取多个18B20的tf卡序列号读取C语言程序5110显示

18B20温度显示 c语言程序_百度文库 两大类热门资源免费畅读 续费一年阅读会员,立省24元! 18B20温度显示 上传于|0|0|暂无简介 阅读已结束,如果下载本文需要使用1下载券 想免费下载本文? 定制HR最喜欢的简历 下载文档到电脑,查找使用更方便 还剩3页未读,继续阅读 定制HR最喜欢的简历 你可能喜欢5110驱动程序_文档下载 亿万文档 免费下载 当前位置: & & 5110驱动程序 5110驱动程序 5110驱动程序.实用的单片机显示系统 #include &stc.h& #include &intrins.h& //_nop_();延时函数用 #include &dmb.h& //字符代码表 #define uchar unsigned char #define uint unsigned intsbit sce = P3^4; //片选 sbit res = P0^0; //复位,0复位 sbit dc = P3^5; //1写数据,0写指令 sbit sdin = P3^7; //数据 sbit sclk = P3^6; //时钟 uint data temp_data[2]={0x00,0x00}; //读出温度暂放 //================18b20数据口定义=============== sbit //温度输入口 unsigned char presence,flash=0; /*****************延时函数*************************/ void delay(uint t) { for (;t&0;t--); } //================延时函数===================== void delay_1ms(void)//1ms延时函数 { for (i=0;i&500;i++); }/*---------------lcd显示函数开始---------------- LCD_write_byte: 使用SPI接口写数据到LCD 输入参数:dt:写入的数据; command :写数据/命令选择; 编写日期: ----------------------------------------------*/ void LCD_write_byte(unsigned char dt, unsigned char command) { sce=0; dc= for(i=0;i&8;i++) { if(dt&0x80) sdin=1; else sdin=0; dt=dt&&1; sclk=1; } dc=1; sce=1; sdin=1; } /*--------------------------------------- LCD_init: 5110LCD初始化 编写日期: ----------------------------------------- */ void LCD_init(void) { res=0; delay_1ms(); res=1; LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令 LCD_write_byte(0xd0,0);//设定液晶偏置电压 LCD_write_byte(0x20,0);//使用基本指令 LCD_write_byte(0x0C,0);//设定显示模式,正常显示 } /*------------------------------------------- LCD_set_XY: 设置LCD坐标函数 输入参数:X:0-83 Y:0-5 编写日期: ---------------------------------------------*/ void LCD_set_XY(unsigned char X, unsigned char Y) { LCD_write_byte(0x40 | Y, 0);// column LCD_write_byte(0x80 | X, 0);// row } /*------------------------------------------ LCD_clear: LCD清屏函数 编写日期: --------------------------------------------*/ void LCD_clear(void) { LCD_set_XY(0,0); for(t=0;t&6;t++) { for(k=0;k&84;k++) { LCD_write_byte(0x00,1); } } } /*--------------------------------------------- LCD_write_shu: 显示8(宽)*16(高)点阵列数字字母符号等半角类 输入参数:c:显示的字符;
编写日期: -----------------------------------------------*/ void LCD_write_shu(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符 { LCD_set_XY(row*8, page);// 列,页 for(i=0; i&8;i++) { Word文档免费下载: (下载1-3页,共3页) 5110液晶驱动程序_信息与通信_工程科技_专业资料。5110液晶驱动程序/***5110 是一个 48 行*84 的点阵***/ /***12 列*16 的汉字只能显示 3 行(48/16=3.../* *** Nokia 5110 驱动 *说明:本驱动适用于 51 单片机(5V 或 3.3V),液晶的 VCC 接 5V 或 3.3V 修改偏置电压可改变 5110 点阵显示的亮度 5110 接 5V 时...野火K60FX系列诺基亚5110驱动程序_信息与通信_工程科技_专业资料 暂无评价/*** ** NOKIA5110(3310)液晶屏驱动程序 ** 晶振频率:11.0592M ** 线路-&单片机实验开发板 A ***/ #include /*--...LCD5110驱动程序代码(AVR单片机)_电子/电路_工程科技_专业资料。LCD5110驱动程序代码/*** 84*48点阵 X:0-83点,Y:0-5行 英文字符:全屏显示:6行*14列每个字...5110液晶驱动程序--AVR_信息与通信_工程科技_专业资料 暂无评价诺基亚 5110 屏幕显示驱动(字符、汉字、图片)对比一 5110 跟 12864 和 1602,5110 简直是太方便了,便宜好用,传送速度是 12864 和 1602 的几十倍,可高达 40...nokia5110驱动_计算机软件及应用_IT/计算机_专业资料。本驱动程序能够应用于freescale芯片#include &Nokia5110.h& #include &WordLib.h& #include &chinese.h& /...51单片机驱动5110_电子/电路_工程科技_专业资料。使用89C52单片机驱动诺基亚5110屏幕,显示时钟的时间。#include®52.h& #include&intrins.h& #define uint unsign.../*** 文件名 : Nokia5110Lcd.h 描述 : 诺基亚 5110 LCD 驱动头文件 作者 : xylch101 编辑器 : Notepad 2 日期 : 2008 年 06 月 27 日 ***/ #...2947人阅读 C/Linux C(67) #include®52.h& #include &Intrins.h& #define uint unsigned int #define uchar unsigned char //lcd引脚定义 sbit SCLK=P3^7; sbit STD=P3^6; sbit CS=P3^5; sbit DQ=P2^0; uchar ser[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void delay(uint x) &while(x--); void delaynms(uint x) &&for(;x&0;x--); && &&for(y=0;y&10;y++); //写指令或数据& (0,指令) (1,数据) void lcd_write(bit style,uchar content) && uchar a,i,j,m,b=0x80; && delay(100); && SCLK=0; && for(i=0;i&5;i++) &&&&&&& SCLK=1; &&&&&&& SCLK=0; && SCLK=1; && SCLK=0; && if(style) &&&& STD=1;&&&&& /* data */ &&&& STD=0;&&&& /* command */ && SCLK=1; && SCLK=0; && SCLK=1; && SCLK=0; && for(j=0;j&2;j++) &&&&& for(i=0;i&4;i++) &&&&&&&& if((a&b)==0)& &&&&& {STD=0;} &&&&& else&&&&&&& &&&&& {STD=1;} &&&& && SCLK=1; &&&&&&&& SCLK=0; &&&&& && b=b&&1; &&&&&&&& a=m; &&&& STD=0; &&&& for(i=0;i&4;i++) &&&&&&& SCLK=1; &&&&&&& SCLK=0; void lcd_initial(void) &delaynms(100);&&&&&&&&&&&&&&&&&&&&&& //启动等待,等lcd讲入工作状态 & &lcd_write(0,0x30);&&&&&&&&&&&&&&&&& //8 位介面,基本指令集 & &lcd_write(0,0x0c);&&&&&&&&&&&&&&&&& //显示打开,光标关,反白关 & &lcd_write(0,0x01);&&&&&&&&&&&&&&&&& //清屏,将DDRAM的地址计数器归零 &delaynms(100);&&&&&&&&&&&&&&&&&&&&&& //启动等待,等lcd讲入工作状态 &lcd_write(0,0x01); void Init_DS18B20(void)&&&&&&&&&&& & uchar x=0; & DQ = 1;&&&&&&&&&&&&&&&&&&&&& //DS18B20复位 & delay(8);&&&&&&&&&&&&&&&&&&&&& //稍做延时 & DQ = 0;&&&&&&&&&&&&&&&&&&&&& //单片机将DS18B20拉低 & delay(80);&&&&&&&&&&&&&&&&&&&& //精确延时 大于 480us & DQ = 1;&&&&&&&&&&&&&&&&&& //拉高总线 & delay(10); & x=DQ;&&&&&&&&&&&&&&&&&&&&&&&& //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 & delay(5); uchar ReadOneChar(void)&&&&&& //读一个字节 &uchar i=0; &uchar dat = 0; &for (i=8;i&0;i--) &&& DQ = 0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 给脉冲信号 &&& dat&&=1; &&& DQ = 1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 给脉冲信号 &&& if(DQ) &&& &dat|=0x80; &&& delay(5); & return(dat); //写一个字节 void WriteOneChar(uchar dat) & unsigned char i=0; & for (i=8; i&0; i--) &&& DQ= 0; &&& DQ = dat&0x01; &&& delay(5); &&& DQ= 1; &&& dat&&=1; & delay(5); void GetROMSequence() &Init_DS18B20(); &WriteOneChar(0x33); &for (i = 0; i & 8; i++) &&ser[i] = ReadOneChar();& void main() &uchar i=0; &lcd_initial(); &GetROMSequence(); &lcd_write(0,0x80); &for (i = 0; i & 8; i++) &&if(ser[i]/16&=0&&ser[i]/16&=9) &&& lcd_write(1,ser[i]/16+0x30); &&& lcd_write(1,ser[i]/16+0x60-9); &&if(ser[i]%16&=0&&ser[i]%16&=9) &&& lcd_write(1,ser[i]%16+0x30); &&& lcd_write(1,ser[i]%16+0x60-9); &while(1);& !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include ®52.h& #define uchar unsigned char #define uint unsigned int /********************************************************************/ sbit DQ = P2^2;&&&& //温度传感器信号线 sbit rs = P3^5;&&&& //LCD数据/命令选择端(H/L)位声明 sbit lcden = P3^4;& //LCD使能信号端位声明 /********************************************************************/ //&&&&&&&&&& //定义整型的温度数据 //float f_&&&&&&& //定义浮点型的温度数据 //uint warn_11 = 270;& //定义温度设定值,是温度值乘以10后的结果 //uint warn_12 = 250;& //定义温度下限值 //uint warn_h1 = 300;& //定义温度上限值 /********************************************************************/ void& delay(uint z);&&&&&&&&&&&&&&&& //延时函数 void& DS18B20_Reset(void);&&&&&&&&&& //DQ18B20复位,初始化函数 bit&& DS18B20_Readbit(void);&&&&&&&& //读1位数据函数 uchar DS18B20_ReadByte(void);&&&&&&& //读1个字节数据函数 void& DS18B20_WriteByte(uchar dat);& //向DQ18B20写一个字节数据函数 void& LCD_WriteCom(uchar com);&&&&&& //1602液晶命令写入函数 void& LCD_WriteData(uchar dat);&&&&& //1602液晶数据写入函数 void& LCD_Init();&&&&&&&&&&&&&&&&&&& //LCD初始化函数 void& Display18B20Rom(char Rom);&&&& //显示18B20序列号函数 /**********************************************/ /*&&&&&&& 主函数&&&&&&&&&&&&&&&&&&& */ /**********************************************/ void main() {&&&&&&& uchar a,b,c,d,e,f,g,h; &&&&&&& LCD_Init(); &&&&&&& DS18B20_Reset(); &&&&&&& delay(1); &&&&&&& DS18B20_WriteByte(0x33); &&&&&&& delay(1); &&&&&&& a = DS18B20_ReadByte(); &&&&&&& b = DS18B20_ReadByte(); &&&&&&& c = DS18B20_ReadByte(); &&&&&&& d = DS18B20_ReadByte(); &&&&&&& e = DS18B20_ReadByte(); &&&&&&& f = DS18B20_ReadByte(); &&&&&&& g = DS18B20_ReadByte(); &&&&&&& h = DS18B20_ReadByte(); &&&&&&& LCD_WriteCom(0x80+0x40); &&&&&&& Display18B20Rom(h); &&&&&&& Display18B20Rom(g); &&&&&&& Display18B20Rom(f); &&&&&&& Display18B20Rom(e); &&&&&&& Display18B20Rom(d); &&&&&&& Display18B20Rom(c); &&&&&&& Display18B20Rom(b); &&&&&&& Display18B20Rom(a); &&&&&&& while(1); /***************************************************/ /*&&&&&&&& 延时函数:void delay()&&&&&& */ /*&&&&&&&& 功能:延时函数&&&&&&&&&& */ /***************************************************/ void delay(uint z)//延时函数 &&&&&&& uint x,y; &&&&&&& for( x = x & 0; x-- ) &&&&&&&&&&&&&&& for( y = 110; y & 0; y-- ); /***************************************************/ /*&&&&&&&& DS18B20函数:void DS18B20_Reset()&&&&&& */ /*&&&&&&&& 功能:复位18B20&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */ /***************************************************/ void DS18B20_Reset(void)//DQ18B20复位,初始化函数 &&&&&&& DQ = 0; &&&&&&& i = 103; &&&&&&& while( i & 0 ) i--; &&&&&&& DQ = 1; &&&&&&& i = 4; &&&&&&& while( i & 0 ) i--; /***************************************************/ /*&&&&&&&& DS18B20函数:void DS18B20_Readbit()&&&&& */ /*&&&&&&&& 功能:读1个字节数据函数&&&&&&&&&&&&&&&& */ /***************************************************/ bit DS18B20_Readbit(void)&& //读1位数据函数 &&&&&&& DQ = 0; &&&&&&& i++;&&&&&&&&&&&&&&&& //i++起延时作用 &&&&&&& DQ = 1; &&&&&&& i++; &&&&&&& i++; &&&&&&& dat = DQ; &&&&&&& i = 8; &&&&&&& while( i & 0 )i--; &&&&&&& return( dat ); /***************************************************/ /*&&&&&&&& DS18B20函数:void DS18B20_ReadByte()&&&& */ /*&&&&&&&& 功能:读1个字节数据函数&&&&&&&&&&&&&&&& */ /***************************************************/ uchar DS18B20_ReadByte(void)&&&&&&& //读1个字节数据函数 &&&&&&& uchar i,j, &&&&&&& dat = 0; &&&&&&& for( i = 1; i &= 8; i++ ) &&&&&&&&&&&&&&& j = DS18B20_Readbit(); &&&&&&&&&&&&&&& dat = ( j && 7 ) | ( dat && 1 ); &&&&&&& return(dat); /***************************************************/ /*&&&&&&&& DS18B20函数:void DS18B20_WriteByte()&&&& */ /*&&&&&&&& 功能:向DQ18B20写一个字节数据函数&&&&&&&& */ /***************************************************/ void DS18B20_WriteByte(uchar dat)&&&& //向DQ18B20写一个字节数据函数 &&&&&&& for( j=1; j&=8; j++) &&&&&&&&&&&&&&& testb = dat&0x01; &&&&&&&&&&&&&&& dat= dat&&1; &&&&&&&&&&&&&&& if(testb)&&&&&&& //写1 &&&&&&&&&&&&&&& { &&&&&&&&&&&&&&&&&&&&&&& DQ = 0; &&&&&&&&&&&&&&&&&&&&&&& i++;i++; &&&&&&&&&&&&&&&&&&&&&&& DQ = 1; &&&&&&&&&&&&&&&&&&&&&&& i = 8;while(i&0)i--; &&&&&&&&&&&&&&& } &&&&&&&&&&&&&&& else &&&&&&&&&&&&&&& { &&&&&&&&&&&&&&&&&&&&&&& DQ = 0;&&&&&&& //写0 &&&&&&&&&&&&&&&&&&&&&&& i = 8;while(i&0)i--; &&&&&&&&&&&&&&&&&&&&&&& DQ = 1; &&&&&&&&&&&&&&&&&&&&&&& i++;i++; &&&&&&&&&&&&&&& } /***********************************************/ /*& LCD函数:void LCD_WriteCom()&&&&&&&&&& */ /*& 功能:向LCD写入命令&&&&&&&&&&&&&&&&&&& */ /***********************************************/ void LCD_WriteCom(uchar com) &&&&&&& rs = 0; &&&&&&& P0 = &&&&&&& delay(5); &&&&&&& lcden = 0; &&&&&&& delay(5); &&&&&&& lcden = 1; &&&&&&& delay(5); &&&&&&& lcden = 0; /***********************************************/ /*& LCD函数:void LCD_WriteData(uchar dat)&&&&&&&&&&& */ /*& 功能:向LCD写入数据&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */ /***********************************************/ void LCD_WriteData(uchar dat) &&&&&&& rs = 1;&&&&&&&&&&&&&&&&&& //选择LCD为写入数据状态 &&&&&&& lcden = 0; &&&&&&& P0 =&&&&&&&&&&&&&&& //将待写入数据放到总线上 &&&&&&& delay(5);&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&& lcden = 1;&&&&&&&&&&&&&& //给LCD使能端一个脉冲&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&& delay(5);&&&&&&&&&&&&&&&& //信号将之前放到总线上 &&&&&&& lcden = 0;&&&&&&&&&&&&&&& //的数据写入LCD &&&&&&& delay(5); /***********************************************/ /*& LCD函数:void LCD_Init()&&&&&&&&&&&&&&&&&&& */ /*& 功能:初始化LCD,设定LCD的初始状态&&&&&&&&& */ /***********************************************/ void LCD_Init() &&&&&&& LCD_WriteCom(0x38);&&&&&&&&&&&&&&& //LCD显示模式设定 &&&&&&& delay(15); &&&&&&& LCD_WriteCom(0x08);&&&&&&&&&&&&&&& //关闭LCD显示 &&&&&&& delay(3); &&&&&&& LCD_WriteCom(0x01);&&&&&&&&&&&&&&& //LCD显示清屏 &&&&&&& delay(3); &&&&&&& LCD_WriteCom(0x06);&&&&&&&&&&&&&&& //设定光标地址指针为自动加1 &&&&&&& delay(3); &&&&&&& LCD_WriteCom(0x0c);&&&&&&&&&&&&&&& //打开LCD显示,但不显示光标 /**********************************************/ /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */ /*&&&&&&& 显示18B20序列号&&&&&&&&&& */ /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */ /**********************************************/ void Display18B20Rom(char Rom) &&&&&&&& uchar h,l; &&&&&&&& l = Rom & 0x0f;&&&&&&&&&&& //取低4位 &&&&&&&& h = Rom & 0xf0;&&&&&&&&&&&& //取高4位& &&&&&&&& h &&= 4; &&&&&&&& if( ( h &= 0x00 )&&( h &= 0x09 ) ) &&&&&&&&&&&&&&&&& LCD_WriteData(h+0x30);&&&&& //取ASCII码 &&&&&&&& else& &&&&&&&&&&&&&&&&& LCD_WriteData(h+0x37);&&&&& //取ASCII码 &&&&&&&& if( ( l &= 0x00 )&&( l &= 0x09 ) ) &&&&&&&&&&&&&&&&& LCD_WriteData(l+0x30);&&&&& //取ASCII码 &&&&&&&& else& &&&&&&&&&&&&&&&&& LCD_WriteData(l+0x37);&&&&& //取ASCII码&&&&&&&&& &&相关文章推荐 * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场 访问:440867次 积分:4812 积分:4812 排名:第5608名 原创:76篇 转载:110篇 译文:18篇 评论:151条 (5)(1)(3)(1)(3)(2)(3)(1)(2)(4)(6)(12)(9)(8)(6)(1)(5)(1)(3)(2)(4)(10)(1)(5)(2)(6)(4)(1)(2)(6)(1)(3)(4)(2)(2)(1)(4)(3)(5)(2)(15)(4)(6)(9)(3)(2)(1)(18)(1)

我要回帖

更多关于 tf卡序列号读取 的文章

 

随机推荐