12864显示温度曲线

12864显示温度曲线
12864显示温度曲线

//12864并行连接,PSB接地正极

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit rs=P2^0; /*数据\指令选择*/

sbit rw=P2^1; /*读\写选择*/

sbit e=P2^2; /*读\写使能*/

sbit ds=P3^2; //18B20信号脚

uint temp;

float ftemp;

uchar code table[]="0123456789.d";

void writecom(uchar com);

void writedat(uchar dat);

void initinal(void);

//12MHZ晶振延时50微秒

void delay50us(uint t)

{

uchar j;

for(;t>0;t--)

for(j=19;j>0;j--);

}

void dsreset() // ds18b20初始化函数

{

uint i;

ds=0; //拉低总线开始复位

i=103;

while(i>0)i--;

ds=1;//释放总线

i=4;

while(i>0)i--;

// 省去了等待芯片返回应答的过程。。。。。。

}

bit readbit(void) //ds18b20读取一个二进制位,参照时序图{

uint i;

bit dat;

ds=0;i++;

ds=1;i++,i++;

dat=ds;

i=8;while(i>0)i--;

return(dat);

}

uchar tempread(void) //ds18b20读取一个字节的数据{

uchar i,j,dat;

dat=0;

for(i=0;i<8;i++)

{

j=readbit();

dat=(j<<7)|(dat>>1); //

}

return(dat);

}

void tempwrite(uchar dat) //ds18b20写入字节数据

{

uint i;uchar j;

bit testb;

for(j=1;j<=8;j++)

{

testb=dat&0x01;

dat=dat>>1;

if(testb==1) // 写1

{

ds=0; // 拉低总线以开始一个写时序

i++;i++;

ds=1; // 释放总线

i=8;while(i>0)i--;

}

else // 写0

{

ds=0;

i=8;while(i>0)i--;

ds=1;

i++;i++;

}

}

}

void tempchang(void) //温度转换

{

dsreset();

delay50us(20);

tempwrite(0xcc); //

tempwrite(0x44); //

}

uint gettemp() // 获取温度

{

uchar a,b;

dsreset();

delay50us(2000); //延时100毫秒消除恐怖85度tempwrite(0xcc); //

tempwrite(0xbe); //

a=tempread(); //

b=tempread(); //

temp=b;

temp<<=8; //////

temp=temp|a;

ftemp=temp*0.0625; //

temp=ftemp*10+0.5; //

ftemp=ftemp+0.05; //

return temp; //

}

/*------------------检查忙位-----------------------------*/

void chkbusy()

{

rs=0;

rw=1;

e=1;

P0=0xff ;

while((P0&0x80)==0x80);

e=0;

}

/*************读数据************/

uchar read()

{

uchar shuju;

chkbusy();

P0=0xff;

rs=1;

rw=1;

e=0;

delay50us(1);

e=1;

shuju=P0;

// delay(5);

e=0;

return(shuju);

}

//增加画点子程序

void DrawPoint(uchar X,uchar Y,uchar Color)

{

uchar Row,Tier,Tier_bit ;

uchar ReadOldH,ReadOldL ;

writecom(0x34);

writecom(0x36);

Tier=X>>4 ;

Tier_bit=X&0x0f ;

if(Y<32)

{

Row=Y ;

}

else

{

Row=Y-32 ;

Tier+=8 ;

}

writecom(Row+0x80);

writecom(Tier+0x80);

read();

ReadOldH=read();

ReadOldL=read();

writecom(Row+0x80);

writecom(Tier+0x80);

if(Tier_bit<8)

{

switch(Color)

{

case 0 :

ReadOldH&=(~(0x01<<(7-Tier_bit)));

break ;

case 1 :

ReadOldH|=(0x01<<(7-Tier_bit));

break ;

case 2 :

ReadOldH^=(0x01<<(7-Tier_bit));

break ;

default :

break ;

}

writedat(ReadOldH);

writedat(ReadOldL);

}

else

{

switch(Color)

{

case 0 :

ReadOldL&=(~(0x01<<(15-Tier_bit)));

break ;

case 1 :

ReadOldL|=(0x01<<(15-Tier_bit));

break ;

case 2 :

ReadOldL^=(0x01<<(15-Tier_bit));

break ;

default :

break ;

}

writedat(ReadOldH);

writedat(ReadOldL);

}

writecom(0x30);

}

//写命令

void writecom(uchar com)

{

chkbusy();

rw=0;

rs=0;

delay50us(1);

P0=com;

e=1;

delay50us(10);

e=0;

delay50us(10);

}

//写数据

void writedat(uchar dat)

{

chkbusy();

rw=0;

rs=1;

delay50us(1);

P0=dat;

e=1;

delay50us(10);

e=0;

delay50us(10);

}

//初始化

void initinal(void)

{

delay50us(2);

writecom(0x30);

delay50us(4);

writecom(0x30);

delay50us(4);

writecom(0x0e);

delay50us(4);

writecom(0x01);

delay50us(240);

writecom(0x06);

delay50us(10);

}

void clrscreen()

{

writecom(0x01);

delay50us(10);

}

//------------------清整个GDRAM空间---------------------------- void clrgdram()

{

unsigned char x,y ;

for(y=0;y<64;y++)

for(x=0;x<16;x++)

{

writecom(0x34);

writecom(y+0x80);

//行地址

writecom(x+0x80);

//列地址

writecom(0x30);

writedat(0x00);

writedat(0x00);

}

}

//------------------------------------------------------------ //主函数

void main()

{

uchar i,j,e,colour=1;

uint a ;

rw=0;

initinal();

clrgdram();

delay50us(2);

// clrscreen();

writecom(0x34);

while(1)

{

uint a,b,c,d;

DrawPoint(17,6,colour);

DrawPoint(17,22,colour);

DrawPoint(17,38,colour);

DrawPoint(17,54,colour);

for(j=16;j<124;j++)

{

DrawPoint(16,j-16,colour);

DrawPoint(j,63,colour);

DrawPoint(i,e,colour);

writecom(0x80);

writedat(table[6]);

writedat(table[7]);

writecom(0x90);

writedat(table[5]);

writedat(table[1]);

writecom(0x88);

writedat(table[3]);

writedat(table[5]);

writecom(0x98);

writedat(table[1]);

writedat(table[9]);

}

for(i=16;i<124;i++)

{

tempchang();

a=gettemp();

e=73-a/10;

DrawPoint(i,e,colour);

delay50us(10000);

b=a/100;

c=a%100/10;

d=a%100%10;

writecom(0x83);

writedat(table[b]);

delay50us(1);

writedat(table[c]);

delay50us(1);

writedat(table[10]);

delay50us(1);

writedat(table[d]);

delay50us(1);

writedat(table[11]);

delay50us(4);

writecom(0x83);

}

clrgdram();

// writecom(0x36);

// delay50us(5);

// clrgdram();

// clrscreen();

// tempchang();

// a=gettemp();

}

}

LCD12864显示程序

;实验目的:熟悉12864LCD的使用 ;12864LCD带中文字库 ;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“0975”,公司传真“6”;硬件设置: ;关断所有拨码开关。 #include<> ;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_H S_OSC ;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define RS PORTA,5 ;命令/数据选择 #DEFINE RW PORTA,4 ;读/写选择 #DEFINE E PORTA,3 ;使能信号 #DEFINE PSB PORTA,2 ;并口/串口选择(H/L) #DEFINE RST PORTA,0 ;复位信号 ;----------------------------------------------- LCD_X EQU 30H ;页地址 LCD_Y EQU 31H ;Y地址 COUNT EQU 32H ;循环计数用 COUNT1 EQU 33H ;循环计数用 COUNT2 EQU 34H ;循环计数用 POINT EQU 35H ;查表偏移地址 POINT1 EQU 36H ;查表偏移地址 POINT2 EQU 37H ;查表偏移地址 TEMP EQU 38H ;临时寄存器 TEMP1 EQU 39H ;临时寄存器 ;----------------------------------------------- ORG 0000H ;复位地址 NOP ;ICD需要的空指令 GOTO MAIN ;跳转到主程序 ;**********************主程序************************ MAIN BANKSEL TRISA CLRF TRISA ;A口输出 CLRF TRISD ;D口输出 BANKSEL ADCON1 MOVLW 06H MOVWF ADCON1 ;A口全为数字口 CLRF STATUS

51定时器和lcd12864做的实时时钟显示(附图)

#include #include"intrins.h" #define uchar unsigned char #define uint unsigned int sbit rs=P1^0; sbit rw=P1^1; sbit e=P2^5; sbit psb=P1^2; sbit rst=P1^4; uchar hour,fen,miao,num; uchar code table[]="时间:"; uchar sbuf[]={0,0,0,0,0,0}; void delay(uint x) { uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void Timer0Init(void) //50??@11.0592MHz { TMOD |= 0x01; //??????? TL0 = 0x00; //??????

TH0 = 0x4C; //?????? EA=1; ET0=1; TR0=1; //???0???? } void Delay2ms() //@11.0592MHz { unsigned char i, j; _nop_(); i = 4; j = 146; do { while (--j); } while (--i); } void Delay100us() //@11.0592MHz { unsigned char i, j; i = 2; j = 109; do { while (--j); } while (--i);

void Delay50ms() //@11.0592MHz { unsigned char i, j, k; i = 3; j = 207; k = 28; do { do { while (--k); } while (--j); } while (--i); } void write_12864com(uchar com) { rs=0; rw=0; Delay100us(); P0=com; e=1; Delay100us(); e=0; Delay100us(); }

12864液晶显示图片原理(完整版)

51单片机综合学习 12864液晶原理分析1 辛勤学习了好几天,终于对12864液晶有了些初步了解~没有视频教程学起来真有些累,基本上内部程序写入顺序都是根据程序自我变动,然后逆向反推出原理…… 芯片:YM12864R P-1 控制芯片:ST7920A带中文字库 初步小结: 1、控制芯片不同,寄存器定义会不同 2、显示方式有并行和串行,程序不同 3、含字库芯片显示字符时不必对字符取模了 4、对芯片的结构地址一定要理解清楚

5、显示汉字时液晶芯片写入数据的顺序(即显示的顺序)要清楚 6、显示图片时液晶芯片写入数据的顺序(即显示的顺序)要清楚 7、显示汉字时的二级单元(一级为八位数据写入单元)要清楚 8、显示图片时的二级单元(一级为八位数据写入单元)要清楚 12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列*64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入

到相应的存储单元中。图形或汉字的点阵信息由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。显示点在64*64液晶屏上的位置由行号(line,0~63)与列号(column,0~63)确定。512*8 bits RAM中某个存储单元的地址由页地址(Xpage,0~7)和列地址(Yaddress,0~63)确定。每个存储单元存储8个液晶点的显示信息。

LCD12864显示程序

本例程为通过用A T89C52芯片操作LCD12864显示的程序,使用的晶振为12M。 /********************************************************** 程序说明:LCD12864显示主程序 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ #include #include"12864.c" void main() { Ini_Lcd(); //液晶初始化子程序 Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序 while(1); } 这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。 /********************************************************** 程序说明:LCD12864显示头文件 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ //#include #define uchar unsigned char #define uint unsigned int #define DATA P2 //数据输出端0~7 sbit RS=P0^0; //LCD12864 RS端 sbit RW=P0^1; //LCD12864 RW端 sbit E =P0^2; //LCD12864 E 端 sbit PSB =P0^3; /********************************************* 延时子程序 *********************************************/ void Delay_1ms(uint x) { uint j,i; for(j=0;j

单片机 12864 LCD显示--按键电子时钟程序

单片机 12864 LCD显示--按键电子时钟程序 //液晶屏为JM12864或FYD12864(带字库),我用这两种型号的屏没问题, 4行*8列汉字=32 串行通信接/口P1.5--P1.7,可根据你的电路修改相应的接口。 #include reg52.h #include intrins.h #define uchar unsigned char 单片机 12864 LCD显示--按键电子时钟程序 //液晶屏为JM12864或FYD12864(带字库),我用这两种型号的屏没问题, 4行*8列汉字=32 串行通信接/口P1.5--P1.7,可根据你的电路修改相应的接口。 #include #include #define uchar unsigned char void lcd_ini(); void ascii_change(void); void delay(); void wri_add(uchar com); void wri_dat(uchar com1); void shan(void); void disp(); void tkey(void); sbit cs=P1^7; sbit sid=P1^6; sbit sclk=P1^5; bit flag=1; uchar dat,count,f=1;//f测试哪个单元为当前闪烁状态 uchar data clock[3]={23,45,12}; uchar code clockname[10]={"北京时间:"}; uchar data num[6]; /*******主程序*************/ void main() { lcd_ini(); count=10;//机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒 TMOD=0x01; TL0=0XB0; TH0=0X3C; EA=1; ET0=1; IT0=1; EX0=1; TR0=1; while(1)

玩转12864液晶(1)--显示字符

在我们常用的人机交互显示界面中,除了数码管,LED,以及我们之前已经提到的LCD1602之外,还有一种液晶屏用的比较多。相信接触过单片机的朋友都知道了,那就是12864液晶。顾名思义,12864表示其横向可以显示128个点,纵向可以显示64个点。我们常用的12864液晶模块中有带字库的,也有不带字库的,其控制芯片也有很多种,如KS0108 T6963,ST7920等等。在这里我们以ST7920为主控芯片的12864液晶屏来学习如何去驱动它。(液晶屏采用金鹏的OCMJ4X8C) 关于这个液晶屏的更多信息,请参考它的DATASHEET,附件中有下载。 我们先来了解一下它的并行连接情况。 下面是电路连接图

从上面的图可以看出,液晶模块和单片机的连接除了P0口的8位并行数据线之外,还有RS,RW,E等几根线。其中R/S是指令和数据寄存器的选择控制线(串行模式下为片选),R/W 是读写控制线(串行模式下是数据线),E是使能线(串行模式下为时钟线)。 通过这几根控制线和数据线,再结合它的时序图,我们就可以编写出相应的驱动程序啦。 看看并行模式下的写时序图:

根据这个时序图,我们就可以写出写数据或者写命令到LCD12864液晶的子程序。 读时序图如下: 根据这个时序图我们就可以从LCD12864液晶模块内部RAM中读出相应的数据,我们的忙检测函数就是根据这个时序图写出来的。以及后面章节中讲的画点函数等都要用到读时序。有了这两个时序图,然后我们再看看OCMJ4X8C的相关指令集,就可以编写出驱动程序了。这里要注意的是指令集分为基本指令集和扩充指令集,其中扩充指令集主要是与绘图相关,在此后的章节中会有相应的介绍。 下面让我们根据这些编写出它的驱动程序吧。 我的硬件测试条件为:STC89C516(11.0592MHz) + OCMJ4X8C 实际显示效果图片如下: 程序部分如下,请结合液晶模块的DATASHEET看程序,这样能够更加快速的弄懂程序的流程。大致有如下几个函数:写数据,写指令,忙检测,初始化,指定地址显示字符串等等。[p][/p] #include "reg52.h" #include "intrins.h" sbit io_LCD12864_RS = P1^0 ;

LCD显示程序

本例程为通过用AT89C52芯片操作LCD12864显示的程序,使用的晶振为12M。 /********************************************************** 程序说明:LCD12864显示主程序 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ #include #include"12864.c" void main() { Ini_Lcd(); //液晶初始化子程序 Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序 while(1); } 这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。 /********************************************************** 程序说明:LCD12864显示头文件 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ //#include #define uchar unsigned char #define uint unsigned int #define DATA P2 //数据输出端0~7 sbit RS=P0^0; //LCD12864 RS端 sbit RW=P0^1; //LCD12864 RW端 sbit E =P0^2; //LCD12864 E 端 sbit PSB =P0^3; /********************************************* 延时子程序 *********************************************/ void Delay_1ms(uint x) { uint j,i; for(j=0;j

物理化学实验思考题解答

实验一 燃烧热的测定 1. 在本实验中,哪些是系统?哪些是环境?系统和环境间有无热交换?这些热交换对实验结果有何影响?如何校正?提示:(氧弹中的样品、燃烧丝、棉线和蒸馏水为体系,其它为环境。)盛水桶内部物质及空间为系统,除盛水桶内部物质及空间的热量计其余部分为环境,(实验过程中有热损耗:内桶水温与环境温差过大,内桶盖有缝隙会散热,搅拌时搅拌器摩擦内筒内壁使热容易向外辐射。)系统和环境之间有热交换,热交换的存在会影响燃烧热测定的准确值,可通过雷诺校正曲线校正来减小其影响或(降低热损耗的方法:调节内筒水温比外筒水温低0.5-1℃,内桶盖盖严,避免搅拌器摩擦内筒内壁,实验完毕,将内筒洗净擦干,这样保证内筒表面光亮,从而降低热损耗。)。 2. 固体样品为什么要压成片状?萘和苯甲酸的用量是如何确定的?提示:压成片状有利于样品充分燃烧;萘和苯甲酸的用量太少测定误差较大,量太多不能充分燃烧,可根据氧弹的体积和内部氧的压力确定来样品的最大用量。 3. 试分析样品燃不着、燃不尽的原因有哪些? 提示:压片太紧、燃烧丝陷入药片内会造成燃不着;压片太松、氧气不足会造成燃不尽。 4. 试分析测量中影响实验结果的主要因素有哪些? 本实验成功的关键因素是什么? 提示:能否保证样品充分燃烧、系统和环境间的热交换是影响本实验结果的主要因素。本实验成功的关键:药品的量合适,压片松紧合适,雷诺温度校正。 5. 使用氧气钢瓶和氧气减压器时要注意哪些事项?1. 在氧弹里加10mL 蒸馏水起什么作用? 答:在燃烧过程中,当氧弹内存在微量空气时,N 2的氧化会产生热效应。在一般的实验中,可以忽略不计;在精确的实验中,这部分热效应应予校正,方法如下:用0.1mol ·dm -3 NaOH 溶液滴定洗涤氧弹内壁的蒸馏水,每毫升0.1 mol ·dm -3 NaOH 溶液相当于5.983 J(放热)。2. 在环境恒温式量热计中,为什么内筒水温要比外筒的低?低多少合适?在环境恒温式量热计中,点火后,系统燃烧放热,内筒水温度升高 1.5-2℃,如果点火前内筒水温比外筒水温低1℃,样品燃烧放热最终内筒水温比外筒水温高1℃,整个燃烧过程的平均温度和外筒温度基本相同,所以内筒水温要比外筒水温低0.5-1℃较合适。 实验二 凝固点降低法测定相对分子质量 1. 什么原因可能造成过冷太甚?若过冷太甚,所测溶液凝固点偏低还是偏高?由此所得萘的相对分子质量偏低还是偏高?说明原因。答:寒剂温度过低会造成过冷太甚。若过冷太甚,则所测溶液凝固点偏低。根据公式*f f f f B T T T K m ?=-=和310B B f f A W M K T W -=??可知由于溶液凝固点偏低, ?T f 偏大,由此所得萘的相对分子质量偏低。 2. 寒剂温度过高或过低有什么不好?答:寒剂温度过高一方面不会出现过冷现象,也就不能产生大量细小晶体析出的这个实验现象,会导致实验失败,另一方面会使实验的整个时间延长,不利于实验的顺利完成;而寒剂温度过低则会造成过冷太甚,影响萘的相对分子质量的测定,具体见思考题1答案。 3. 加入溶剂中的溶质量应如何确定?加入量过多或过少将会有何影响?答:溶质的加入量应该根据它在溶剂中的溶解度来确定,因为凝固点降低是稀溶液的依数性,所以应当保证溶质的量既能使溶液的凝固点降低值不是太小,容易测定,又要保证是稀溶液这个前提。如果加入量过多,一方面会导致凝固点下降过多,不利于溶液凝固点的测定,另一方面有可能超出了稀溶液的范围而不具有依数性。过少则会使凝固点下降不明显,也不易测定并且实验误差增大。 4. 估算实验测定结果的误差,说明影响测定结果的主要因素?答:影响测定结果的主要因素有控制过冷的程度

12864液晶电子时钟+温度显示

12864液晶电子时钟+温度显示 上午花了一上午时间,用12864 液晶写了一个电子时钟加温度传感器程序, 先说一下程序的功能,可以实现显示年月日时间和温度, 年月日和时间是可通过按键调节的,调节相应的选项时,该选项会闪烁,并 停止走时,当调节完毕后时钟恢复走时。现在将程序和思路写下来,以便日后 查看和与大家探讨改进,欢迎高手提出宝贵意见。 我使用的是HJ12864M-1 带字库液晶,所以在显示上稍微方便一点。下面先 来说一下我的编程思路。时间更新用的是单片机自带的定时器,液晶要显示数 字必需将它转换成ASCii 码的形式,数字0-9 的ASCii 码与数字之间有一个定 量的关系,当数字加上0x30 之后便得到该数字的ASCii 码,这样以来液晶更 新数据就变得简单了。调节时间时对应选项闪烁,是通过不断的交替写入数据 和空格实现的。温度显示用的是DS18B20,,将测得的当前温度不断更新显示在 液晶上。调节时间用的是三个独立按键。由于这个程序我使用模块化来写的, 就只能将每个模块分别给出来,大家只要组装一下便可以使用。如果需要完整 程序的可以给我留言我发给你们。 下面是12864 液晶的初始化,读写命令,及读忙操作 #include “lcd12864.h”#include reg52.hsbit RS=P2 ; //控制端口位定义sbit RW=P2;sb it EN=P2;vo id init_12864(){delay(40);write_com(0x30);//8 位数据格式,基本指令显示delay(10); //延时时间write_com(0x30);//8 位数据格式,基本 指令显示delay(37);write_com(0x0C);//开显示、关闭光标delay(10); write_com(0x01);//清屏指令delay(10); //延时write_com(0x06);//设置显示点:指针自加1}tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

物化实验思考题答案

实验一燃烧热的测定 1.在本实验中,哪些是系统?哪些是环境?系统和环境间有无热交换?这些热交换对实验结果有何影响?如何校正? 提示:盛水桶内部物质及空间为系统,除盛水桶内部物质及空间的热量计其余部分为环境,系统和环境之间有热交换,热交换的存在会影响燃烧热测定的准确值,可通过雷诺校正曲线校正来减小其影响。 2.固体样品为什么要压成片状?萘和苯甲酸的用量是如何确定的? 提示:压成片状有利于样品充分燃烧;萘和苯甲酸的用量太少测定误差较大,量太多不能充分燃烧,可根据氧弹的体积和内部氧的压力确定来样品的最大用量。 3.试分析样品燃不着、燃不尽的原因有哪些? 提示:压片太紧、燃烧丝陷入药片内会造成燃不着;压片太松、氧气不足会造成燃不尽。4.试分析测量中影响实验结果的主要因素有哪些?本实验成功的关键因素是什么? 提示:能否保证样品充分燃烧、系统和环境间的热交换是影响本实验结果的主要因素。本实验成功的关键:药品的量合适,压片松紧合适,雷诺温度校正。 5.使用氧气钢瓶和氧气减压器时要注意哪些事项? 提示:阅读《物理化学实验》教材P217-220 实验三纯液体饱和蒸气压的测定 1.在停止抽气时,若先拔掉电源插头会有什么情况出现? 答:会出现真空泵油倒灌。 2.能否在加热情况下检查装置是否漏气?漏气对结果有何影响? 答:不能。加热过程中温度不能恒定,气-液两相不能达到平衡,压力也不恒定。 漏气会导致在整个实验过程中体系内部压力的不稳定,气-液两相无法达到平衡,从而造成所测结果不准确。 3.压力计读数为何在不漏气时也会时常跳动? 答:因为体系未达到气-液平衡。 4.克-克方程在什么条件下才适用? 答:克-克方程的适用条件:一是液体的摩尔体积V与气体的摩尔体积Vg相比可略而不计;二是忽略温度对摩尔蒸发热△vap H m的影响,在实验温度范围内可视其为常数。三是气体视为理想气体。 6.本实验主要误差来源是什么?

12864显示图形

看到工具箱旁边那个LCD12864很久没用了(当初买回来用的时候只是简单地测试了一下),于是萌生了重新写一次接口程序的想法(而且这次要给它加个图片显示的功能),好,说做就做,就用Atmega16和ICCAVR来做吧,最近这MCU和平台用得比较熟练。 马上从书堆里把当初打印出来的中文datasheet给翻了出来,依葫芦画瓢地写了个初始化程序。好,OK。编译通过。于是又写了一个可以自定义从XY坐标值开始输出显示的函数,再次编译,也通过,OK。于是呼马上写了四行简单的字符烧到单片机上试了一下,嘿嘿,一次通过。如下图: 后来在进一步测试的时候也出了点小问题。就是我是使用USBISP烧写器把程序烧写进AVR的(此时实验板由USBISP烧写器供电),想要实现从第一行的第一个字符开始连续显示"0123456789"。刚烧写完程序后能看到LCD12864上正常显示"0123456789",但是把烧写器从实验板上断开连接,单独用USB给实验板供电的时候,LCD的第一行只是显示"123456789",第一个字符消失了……,左思右想地弄了一个多小时后,终于把问题给解决了,就是把初始化程序的延时适当增加了些,真是奇怪。刚开始一直想不通为什么在烧写器供电的情况下就正常显示,而换到USB供电后就出了问题。后来再想想,估计是跟供电有关。在使用USBISP烧写器供电的时候,LCD的背光灯明显比用USB供电的时候来得亮,而且对比度也高很多,看来是因为换到USB供电后,供电不怎么充足,以至于LCD在上电初始化的时候花上了更多的时间去初始化(因为供电低了,功率小了,跑起来有点力不从心,用的时间就久了嘛……我是觉得可以这样去理解的 接下来呢,就到了有点难度的画图了。当初刚买到12864的时候只是简单测试了字符显示功能,除了因为画图还不需要用到,另外一个原因就是那datasheet上关于画图那部分的内容不怎么看得懂…。现在重新拿起来看,依然一头雾水……。马上上网百度了一下“12864 7920 显示图片”,看到了不少的例子程序,可是……就是没看到有关于这部分功能实现的详细思路和讲解……下载下来的那些程序,基本上没注释,不是说晦涩难懂,但是至少看起来一团糟,让人家不想继续看下去……于是还是硬着头皮去啃那datasheet。上面对于画图这部分的内容是这样讲解的:

温度曲线设定

如何正确设定回流炉温度曲线 正确设定回流炉温度曲线是获得优良焊接质关键 前言 红外回流焊是SMT大生产中重要的工艺环节,它是一种自动群焊过程,成千上万个焊点在短短几分钟内一次完成,其焊接质量的优劣直接影响到产品的质量和可靠性,对于数字化的电子产品,产品的质量几乎就是焊接的质量。做好回流焊,人们都知道关键是设定回流炉的炉温曲线,有关回流炉的炉温曲线,许多专业文章中均有报导,但面对一台新的红外回流炉,如何尽快设定回流炉温度曲线呢?这就需要我们首先对所使用的锡膏中金属成分与熔点、活性温度等特性有一个全面了解,对回流炉的结构,包括加热温区的数量、热风系统、加热器的尺寸及其控温精度、加热区的有效长度、冷却区特点、传送系统等应有一个全面认识,以及对焊接对象--表面贴装组件(SMA)尺寸、组件大小及其分布做到心中有数,不难看出,回流焊是SMT工艺中复杂而又关键的一环,它涉及到材料、设备、热传导、焊接等方面的知识。 本文将从分析典型的焊接温度曲线入手,较为详细地介绍如何正确设定回流炉温度曲线,并实际介绍BGA以及双面回流焊的温度曲线的设定。 理想的温度曲线 图1是中温锡膏(Sn63/Sn62)理想的红外回流温度曲线,它反映了SMA通过回流炉时,PCB上某一点的温度随时间变化的曲线,它能直观反映出该点在整个焊接过程中的温度变化,为获得最佳焊接效果提供了科学的依据,从事SMT焊接的工程技术人员,应对理想的温度曲线有一个基本的认识,该曲线由四个区间组成,即预热区、保温区/活性区、回流区、冷却区,前三个阶段为加热区,最后一阶段为冷却区,大部分焊锡膏都能用这四个温区成功实现回流焊。故红外回流炉均设有4-5个温度,以适应焊接的需要。 图1 理想的温度曲线

LCD12864液晶显示电子钟设计

《单片机原理及应用》 课程设计说明书 题目LCD12864 液晶显示电子钟设 计 系(部) 专业(班级) 姓名 学号 指导教师 起止日期

课程设计任务书系(部):专业:

目录 一、12864液晶的工作原理 (4) 二、方案设计 (4) 2.1 实物硬件设计 (4) 2.2 系统硬件设计 (5) 2.2.1 主芯片模块 (5) 2.2.2 晶振和复位模块 (5) 2.2.3 按钮模块 (6) 2.3 系统软件设计 (6) 2.3.1 主程序设计 (6) 三、仿真和分析 (7) 四、总结体会 (7) 参考文献 (32)

一、12864液晶的工作原理 液晶显示屏中的业态光电显示材料,利用液晶的电光效应把电信号转换成数字符、图像等可见信号。如图1-1,液晶正常情况下,其分子排列很有秩序,显得清澈透明,一旦加上直流电场后,分子的排列被打乱,一部分液晶变的不透明,颜色加深因而能显示数字和图像。管脚一共1个CS1左半屏片选端,CS2右半屏片选端;V0液晶显示驱动电压,通过一个电位器接到VCC;RS数据指令选择信号,H为数据,L为指令,也叫D/I;R/W读写选择信号,H为读,L为写,。E为LCD使能端,R/W为L时,E信号下降沿锁存DB7-DB0;R/W为H时,E为H,DDRAM数据读到DB7-DB0。DB0-DB7数据传输端口。RST复位信号。-VOUT 和V0为液晶显示驱动电压。 12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64 全点阵液晶显示器组成。可完成图形显示,也可以显示8×4个(16×16点阵)汉字。 图1-1 12864LCD液晶显示屏 二、方案设计 2.1 实物硬件设计 单片机控制液晶显示屏系统总共可分为六个环节,分别是单片机控制系统、12864字符显示模块、控制开关模块、晶振控制模块、复位电路模块和DS1302时钟控制模块。通过这六个模块的协调工作就可以完成相应的液晶屏控制和显示功能。这六个模块的相互连接如图2-1: 图2-1 硬件组成框图

在12864显示任意图片及参考程序

用12864显示单色图片 首先介绍本12864液晶显示器: 型号:QC12864B 因为单片机读取的是数据,而不是直接的图片。得将图片进行取模,图片应该是单色图片,像素128*64。 下面我为大家介绍个实例。 ①、在电脑附件画图,首先设置属性

开始画图 保存文件,注意格式: ②、然后进行取模。

③、编程: #include #define uchar unsigned char #define uint unsigned int //宏定义 #define lcd P2 //数据端口 sbit rs=P1^2; //指令/数据选择信号 sbit rw=P1^1; //读写选择信号 sbit e=P1^0; //使能端 sbit psb=P1^3; //串并选择端,高电平为并行,低电平为串行 uchar code ai[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xCE,0x00,0x00,0x00,0x00,0x00,0x01,0xC1,0xE0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xC7,0x00,0x00,0x00,0x00,0x00,0x03,0x31,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x0E,0xC0,0x00,0x00,0x00,0x00,0x00,0x03,0x9B,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0x82,0x08,0x00,0x00,0x00, 0x00,0x00,0x00,0x78,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x00, 0x00,0x00,0x00,0xF8,0xEF,0x00,0x00,0x00,0x00,0x00,0x1B,0xFC,0x1E,0x00,0x00,0x00, 0x00,0x00,0x00,0x18,0xFE,0x00,0x00,0x00,0x00,0x00,0x1E,0x60,0x38,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x38,0x70,0x20,0x00,0x00,0x00,

API 934 加氢反应器制造和材料要求

高温高压临氢2-1/4Cr和3Cr钢制厚壁压力容器材料和制造要求 API推荐规程934 第一版2000年12月 美国石油协会

目录 1 引言 1.1 适用范围 2 应用文件 3 名词定义 3.1 名词定义 3.2 缩写 4 设计 5 母材要求 5.1 材料规范 5.2 炼钢 5.3 化学成分 5.4 热处理 5.5 机械性能 6 焊接材料 6.1 材料要求 6.2 机械性能 7 焊接、热处理和产品试验7.1 一般焊接要求7.2 母材焊接 7.3 堆焊层 7.4 最终焊后热处理 8 无损检验(NDE) 8.2 制造前NDE 8.3 制造中NDE 8.4 制造完成后最终PWHT前NDE 8.5 最终PWHT后NDE 9 水压试验 10 装运准备 11 文件 图 7-1——维氏硬度测量部位 表 4-1——母材规范 5-1——试样热处理

高温高压临氢21/4Cr和3Cr钢制厚壁 压力容器材料和制造要求 1引言 本推荐规程适用于炼油、石油化工行业中新建的在高温和高压,氢和含氢流体介质条件下运行的厚壁压力容器。它是根据这些行业几十年来对这些设备的操作经验和制造厂商和用户的试验结果制订的。具有这些厚壁压力容器过程装置的业主和认可证颁发者可以修改或补充这个推荐规程,提出附加要求。 1.1 适用范围 本推荐规程提出了用于高温高压临氢的新的2 1/4Cr和3Cr钢制压力容器的材料和制造要求,适用于按照ASME规范第Ⅷ卷第2分卷,包括附录26 Cr-Mo钢焊接和热处理的附加要求的强制规则以及ASME 规范案例2151设计、制造、认证和颁发执照的压力容器。 本推荐规程涉及的材料有普通钢材包括标准的2-1/4Cr-1Mo钢, 标准的3Cr-1Mo钢和改进型钢包括增强的2-1/4Cr-1Mo钢、2-1/4C-1rMo-1/4V钢、3Cr-1Mo-1/4V-Ti-B钢和3Cr-1Mo-1/4V-Cb-Ca钢。这些厚壁压力容器的内表面可能有奥氏体不锈钢堆焊层以提供附加的耐腐蚀性能。

推荐-学习笔记fpga设计电子时钟12864显示 精品

fpga设计电子时钟(12864显示) 设计心得: 1,进行分块设计,类似调用函数,脉冲使能 2,充分了解fpga的并行特性(c程序的串行特性,不能并行处理,线性:只有完成了当前任务,才能进行下一个任务) 设计问题: 1,似乎读有问题,在char_LR=1时,写的数据为汉字 (程序中时间没有更改,主要为了调试看波形) 实际板子验证时,将LCD_clk模块中的分频调为50到100kHz左右 整体架构 液晶初始化时序

parameter Idle =8'b0000_0001, Basic_ =8'b0000_0010, //basic instruction:0x30 Disp_set =8'b0000_0100, //set show curse bling DDRAM_clear =8'b0000_1000, //colunm address X Wait_clear =8'b0001_0000, Point_set =8'b0010_0000, Show_on =8'b0100_0000, Stop =8'b1000_0000; 写字符的时序 由于字符属于半宽字形,且DDRAM形式下,每行只有8个地址,而字符可以写16个,因此用下面三个来表示写的地址: i nput [1:0] Y, //row 0-3 i nput [2:0] X, //clunm 0-7 i nput LR, //0/1 因此当LR=0时,直接写地址,然后写一个字符编码即可 LR=1时,先写地址,读出高位数据,然后写入两个字节(读出的数据,要写的数据)

parameter Idle =8'b0000_0001, DDRAM =8'b0000_0010, //drawing mode W_addr =8'b0000_0100, //row address Y Dummy =8'b0000_1000, // not really reading R_data =8'b0001_0000, //reading high byte data W0_data =8'b0010_0000, W1_data =8'b0100_0000, Stop =8'b1000_0000; # t1: 0 t2: 2305, T: 10,n_init: 38 # t1: 2305 t2: 2665, T: 10,n_char: 6 # t1: 2665 t2: 3265, T: 10,n_char: 10 完成了上述工作,就可以设计一个简单的电子时钟,其要求如下: 在屏幕上显示时间00:00:00 要动态走 (主要就是控制脉冲信号的产生) 设计思路: 1,按下复位键,系统复位,时间变为00:00:00 2,每一秒中时分秒数据更改 3,一秒钟时间到,产生8个字符写的脉冲,LCD更新数据显示

LCD12864图形液晶并口显示

LCD12864图形液晶并口显示 【教学引入】 液晶屏,在生活中很常见,我们常见的液晶显示器,如电脑的显示器,电视机,手机等等。 液晶屏在生活中已得到了普遍应用,它显示个各种各样的画面。 【教学目标】 1、掌握LCD12864液晶屏的用法; 2、编写LCD12864液晶屏的指令代码; 【知识目标】 1、掌握LCD12864液晶屏的用法; 2、掌握LCD12864液晶屏指令代码; 【教学准备】 电脑、Proteus、Keil 【教学方法】 教法:讲授法、讨论法 学法:练习法、探究法 【教学课时】 四课时 【教学过程】 一、12864液晶介绍 (1)12864是128*64点阵液晶模块的点阵数简称,业界约定俗成的简称。12864点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。12864M汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

12864引脚说明 查阅“12864M.PDF”12864M液晶显示模块技术手册——四、用户指令集 1、指令表1:(RE=0:基本指令表),如下图,讲解了12864的基本指令集和扩充指令集。

当模块在接受指令前,微处理器必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0。“RE”为基本指令集与扩充指令集的选择控制位元,往后的指令集将维持在最后的状态。 当选择G=0 :绘图显示OFF,汉字显示的时,12864屏只能显示8X4=32个汉字,下面是汉字显示的坐标

二、12864液晶屏驱动电路 原件名称所属类(Category) 所属子类(Sub-category) AT89C52 Microprocessor ICs 8051 Family POT-HG Resistors Variable RESPACK-8 Resistors Resistor Packs LCD12864A 自制- AT89C52的P0口连接12864的并行数据口,RP1为P0口的上拉排阻。 三、52代码编写 (1)打开keil uVision4,建立一个新的工程,工程名为"12864 graphic LCD parallel display",保存类型*.uvproj,单片机型号AT89C52。在工程中添加12864 graphic LCD parallel display.c文件,如下图

换热器性能试验大纲

换热能力验证 1、试验目的 验证换热器的换热性能流体阻力特性。 2、实验依据 JB/T 10379-2002 换热器热工性能和流体阻力特性通用测定方法。 3、试验单位资质 ISO17025 4、实验条件 4.1试验地点 4.2 试验对象 4.3 实验设备 序号名称数 量型号测试厂家鉴定单位合格证 到期日期 1 涡轮流量传 感器 1 LWGY-40 2 压力传感器 1 DW115DP0-500Kpa 3 水银温度计 2 50-100 4 温度传感器 6 PT100 5 风速仪 1 VT100 6 压力传感器 1 475-0 MARK III 4.4状态要求 乙二醇溶液额定流量15 l/min 冷风额定流量0,475 m3/s 乙二醇溶液配比48/52%(体积比)

4.5环境要求 测试环境温度为20 .....+45 ℃左右 5、试验步骤 5.1 换热量测试—变冷介质流量(在100%通风面积和90%通风面积两种条件下分别测试) 5.1.1 将换热器按照JB/T 10379-2002 图2安装到测试台上。 5.1.2 冷介质进口温度为环境温度a℃ 5.1.3 热介质进口温度为a+20℃。 5.1.4 调节热介质在15 l/min 5.1.5 将冷却介质(冷却风)分别调节到0.5m3/s,0.9m3/s,1.3m3/s,1.76m3/s,2.2m3/s, 2.64m3/s, 5.1.6 按照JB/T10379-2002 记录各项测试参数值。 5.1.7 计算换热量 冷介质热流量 热介质热流量 平均换热量 热平衡误差 5.2 换热量测试-变热介质流量

5.2.1 将换热器按照JB/T10379-2002 要求安装到测试台上。 5.2.2 冷介质进口温度为环境温度a ℃ 5.2.3 热介质进口温度为a+20℃ 5.2.4 按照下表调节冷热测流量 5.2.5 按照JB/T10379-2002 记录各项测试参数值 5.2.6 计算换热量 冷介质热流量 热介质热流量 平均换热量 热平衡相对误差 5.3 风侧阻力曲线 5.3.1 换热面积100% 5.3.1.1 将换热器按照JB/T10379-2002 图2要求安装到测试台上 5.3.1.2 冷风测试温度:环境温度20-45℃ 5.3.1.3 控制热介质(乙二醇溶液)在15 l/min 5.3.1.4 控制热介质(乙二醇溶液进口温度为75℃,进出口平均温度72℃。 5.3.1.5 冷风变化范围0.15m3/s-0.6 m3/s(0.15,0.25,35,0.475,0.6) 5.3.1.6 记录不同介质流量下对应的压降 5.3.2 换热面积90% 5.3.2.1 将换热器按照JB/T10379-2002 图2要求安装到测试台上 5.3.2.2 冷风测试温度:环境温度20-45℃ 5.3.2.3 控制热介质(乙二醇溶液)在15 l/min 5.3.2.4 控制热介质(乙二醇溶液进口温度为75℃,进出口平均温度72℃。 5.3.2.5 冷风变化范围0.5m3/s-2.64 m3/s(0.5,0.9,01.3,1.76,2.2,2.64) 5.3.2.6 记录不同介质流量下对应的压降 5.4 热侧(乙二醇溶液)阻力曲线 5.4.1将换热器按照JB/T10379-2002 图2要求安装到测试台上

相关文档
最新文档