来源:蜘蛛抓取(WebSpider)
时间:2015-04-13 08:39
标签:
tf卡序列号读取
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)