实验课程:智能仪器原理与设计
实验项目:基于MCS-51单片机的直流电压测量显示仪设计
专业班级:
学 号:
学号姓名:
指导教师:
实验日期:20##年05月24日
一、设计题目
基于MCS-51单片机的直流电压测量、显示仪设计。
二、硬件电路设计
1602LCD主要技术参数:
显示容量:16×2个字符,芯片工作电压:4.5—5.5V,工作电流:2.0mA(5.0V),模块最佳工作电压:5.0V,字符尺寸:2.95×4.35(W×H)mm。
5.1引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如图7
图7
引脚接口说明表
第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。
5.2 1602LCD的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令,如图8
图8
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。
读操作时序
1602LCD的一般初始化(复位)过程
延时15mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
以后每次写指令、读/写数据操作均需要检测忙信号
写指令38H:显示模式设置
写指令08H:显示关闭
写指令01H:显示清屏
写指令06H:显示光标移动设置
写指令0CH:显示开及光标设置
三、软件程程设计
源代码:
#include<reg52.h>
#include <intrins.h>
#include <I2C.H>
#include <stdio.H>
#define PCF8591 0x90 //PCF8591 地址
//else IO
sbit LS138A=P2^2;
sbit LS138B=P2^3;
sbit LS138C=P2^4;
unsigned char AD_CHANNEL;
unsigned long xdata LedOut[8];
unsigned int D;
unsigned char StringBuf[10]={0};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef unsigned char BYTE; //用BYTE代替unsigned char
typedef unsigned int WORD;//WORD代替unsigned int
typedef bit BOOL ;//用BOOL代替bit
sbit rs = P2^6; //复位端
sbit rw = P2^5; //写数据端
sbit ep = P2^7; //使能端
BYTE code dis1[] = {"= =...zhudc & huzh"};
BYTE code dis2[] = {"WENHUA College"};
/*******************延时函数********************/
void delay(BYTE ms)
{
BYTE i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_(); //空执行消耗CPU时间达到等待的效果
_nop_();
_nop_();
}
}
}
/*******************LCD侧忙函数********************/
BOOL lcd_bz()
{
BOOL result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P0 & 0x80); //检测P0最高位是否为1
ep = 0;
return result;//返回侧忙结果
}
void lcd_wcmd(BYTE cmd)
{ // 写入指令数据到LCD
while(lcd_bz());
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd; //将8位指令通过P0口传给1602
_nop_();
_nop_();//用于产生一个脉冲宽度
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
void lcd_pos(BYTE pos)
{ //设定显示位置
lcd_wcmd(pos | 0x80);
}
void lcd_wdat(BYTE dat)
{ //写入字符显示数据到LCD
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;//将8位数据通过P0口传给1602
_nop_();
_nop_();
_nop_(); //用于产生一个脉冲宽度
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
void lcd_init()
{ //LCD初始化设定
lcd_wcmd(0x38); ////16*2显示,5*7点阵,8位数据
delay(1);
lcd_wcmd(0x0c); //显示开,关光标
delay(1);
lcd_wcmd(0x06); //移动光标
delay(1);
lcd_wcmd(0x01); //清除LCD的显示内容
delay(1);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*******************************************************************
ADC发送字节[命令]数据函数
*******************************************************************/
bit ISendByte(unsigned char sla,unsigned char c)
{
Start_I2c(); //启动总线
SendByte(sla); //发送器件地址
if(ack==0)return(0);
SendByte(c); //发送数据
if(ack==0)return(0);
Stop_I2c(); //结束总线
return(1);
}
/*******************************************************************
ADC读字节数据函数
*******************************************************************/
unsigned char IRcvByte(unsigned char sla)
{ unsigned char c;
Start_I2c(); //启动总线
SendByte(sla+1); //发送器件地址
if(ack==0)return(0);
c=RcvByte(); //读取数据0
Ack_I2c(1); //发送非就答位
Stop_I2c(); //结束总线
return(c);
}
float Division(float divisor,float dividend) //除法,保留后5位小数
{
float div;
div=(divisor*100000/dividend)*0.00001;
return div;
}
unsigned int Voltage=0;
//******************************************************************/
main()
{
BYTE i;
lcd_init(); //初始化LCD
delay(10);
lcd_pos(3); // 置显示位置为第一行的第5个字符
while(dis1[i] != '\0')
{ //显示字符"Voltage Display"
lcd_wdat(dis1[i]);
i++;
}
i = 0;
while(1)
{
ISendByte(PCF8591,0x40); //对0通道进行AD转换
D=IRcvByte(PCF8591); //ADC0 模数转换
Voltage=Division(D,256)*5 *100; //将数据转换为电压,保留2位小数
StringBuf[0]=Voltage%1000/100 + 0x30; //将电压值的各位转换为ASCII码,以便在LCD上显示
StringBuf[1]='.';
StringBuf[2]=Voltage%100/10 + 0x30;
StringBuf[3]=Voltage%10 + 0x30;
StringBuf[4]='V';
lcd_pos(0x44); //设置显示位置为第二行第一个字符
for(i=0;i<5;i++)
{
lcd_wdat(StringBuf[i]); //显示电压值
}
}
}
四、实验结果
五、实验结果分析(实验过程中出现问题、原因及解决方案)
这次试验中 开始什么都不懂 经过其他同学的帮助 慢慢摸索出程序 然后一步步的解决问题 开始名字什么都不显示 然后知道在BYTE code dis1[]里添加注释 最后才成功做成
第二篇:EDX720仪器实验报告
实验报告
EDX全称Energy Dispersive X-Ray Spectrometer,属于X射线荧光分析仪(XRF)的一种。此仪器配置新型滤光片,Pb、Cd等的灵敏度比以往机型提高2倍,无需前处理,非破坏性,快速分析(1~5分钟);可准确的定性分析,元素测定范围宽:11Na~92U;精确的定量分析,根据不同元素,可精确到:1.9PPM~3.7PPM;配备全自动开关的大样品室,适应固体、液体、粉体、光盘、薄膜等各种类型样品的检测。
实验名称EDX720仪器测样品
实验样品 内存卡芯片
仪器介绍 能量色散x荧光光谱仪EDX720以独特的产品配置、功能齐全的测试软件、友好的操作界面来满足RoHS的成分检测的需要,人性化的设计,使测试工作更加轻松完成 性能特点 可自动切换准直器和滤光片 专业RoHS检测 内置信噪比增强器,可有效提高仪器信号处理能力25倍以上 智能RoHS软件,专业开发,与仪器相得益彰 任意多个可选择的分析和识别模型 多变量非线性回收程序 技术指标 测量元素:从硫到铀等 75 种元素 元素含量分析范围:1ppm-99.99% RoHS指令规定的有害元素(限 Cd/Pb/Cr/Hg/Br)检测限最高达 1ppm 测量时间:60-300s 能量分辨率:150±5eV 管压:5-50 kV 管流:50-1000μA 温度范围:15-30℃ 电源:交流 220V±5V(建议配置交流净化稳压电源) 重量:60kg 自动选择滤光片 多种准直器自动自由切换 电制冷硅针半导体检测器 加强金属元素感度分析器 三重安全保护模式 相互独立的基体效应校正模型 多变量非线性回归程序 任意多个可选择的分析和识别模型 一次可同时分析 24 个元素 标准配置 信噪比增强器 自动切换准直器和滤光片,分别针对不同样品 独特的光路增强系统,方便用户更好地观察样品 测量 RoHS,电镀镀层,全元素分析,一机多用 电制冷硅针半导体检测器,摒弃液氮制冷 特别开发测量软件,操作界面十分友好 内置高清晰摄像头,方便用户随时检测样品 精准的移动平台,更精确方便地调节样品位置 高贵时尚的外型,带给您全新的视觉冲击 样品腔尺寸:605mm×395mm×100mm 应用领域 电子电器行业,电镀行业、各种材质,塑胶,木头,玻璃等等物质中的有害元素检测 电镀行业检测。
仪器工作原理X射线管发射一次射线到被测样品上,激励被测样品,样品中的每一种元素会放射出二次X射线,探测系统测量这些放射出来的二次X射线的能量及数量,仪器软件将探测系统所收集到的信息转换成样品中各种元素的种类及数量。从物理化学的角度阐述其检测原理:X射线是电磁波谱中的某特定波长范围内的电磁波,其特性通常用能量描述,X射线荧光实际上就是原子内产生变化所致的现象。一个稳定的原子结构由原子核及核外电子组成。这些核外电子围绕着原子核按不同轨道运转,它们按不同的能量分布在不同的电子壳层,分布在同一壳层的电子具有相同的能量,当具有高能量的入射(一次)X射线与原子发生碰撞时,会打破原子结构的稳定性,处于低能量电子壳层(如:K层)的电子更容易被激发而从原子中释放出来,电子的逐放会导致该电子壳层出现相应的电子空位。这是处于高能量的电子(如:L层)会跃迁到该低能量电子壳层来补充相应的电子空位。由于不同电子壳层之间存在着能量差距,这些能量上的差以二次X射线的形式释放出来,不同的元素所释放出来的二次X射线具有特定的能量特性。这一过程就是我们所说的X射线荧光(XRF)。工作原理图示如下:
EDX怎样检测出各元素及其含量呢?
说明:
A)横坐标表示能量差,纵坐标表示元素的浓度
B)浓度越大,峰值越高
C)一般情况下,只用α或β值既能判断出是哪个元素,然后通过峰值高度计算其含量。
D)一般情况下,Cs以前的元素要用:与K层的能量差值来判断,如:Ka、Kb值;Ba以后的元素则用:与L层的能量差值来判断,如:La、Lb值;
E)但是,Pb需要用La、Lb两个值来判断,因为Pb较容易受其它元素值得干扰。
样品的基本要求面积:金属直径3MM以上 非金属直径10MM以上
厚度:金属一次成型1MM以上 非金属一次成型3MM以上
平整度:样品一次成型高度3MM以上 非一次成型高度5MM以上
仪器操作过程
1、打开仪器的总电源,打开仪器的变压、稳压电源开关,打开分析仪主机的电源开关。打开打印机电源。打开显示器电源,打开电脑主机电源。
2、双击屏幕上的“EDX Software”图标,启动测试软件。屏幕上显示出“EDX-主程序窗口,点击“维护”选项,在维护窗口中点击“仪器初始化”,仪器会自动进行调整,完成仪器的初始化。
3、点击“仪器设置”出现“Instrument Setup”窗口,注意“HT检测器状态”为NO,X射线的电压为50Kv,点击“执行设置”启动X光管。需要30~60分钟的预热时间。
4、打开样品盖,把样品平放在测试孔上,预热后点击“开始”进行校正大约需要10分钟。
5、回到“EDX-主程序”窗口,把需要测试的样品摆放在测试孔上,双击桌面上的“EyeXRF2K”图标,打开测试观察软件。观察样品的对位情况。
6、点击“Save As...”为图片命名,点击确认。
7、点击“开始”按钮进行测试。测试完毕后,自动显示出测试结果。
操作注意事项
一、安装环境:1)温度:10~30℃(温度变化应控制在2℃每小时)
2) 湿度:40~70%
3)由于仪器使用到氮气(液态时为-196℃,起冷却作 用),因此安装仪器的房间必须要通风良好;
4)安装仪器的地方要远离妨碍仪器安全的因素。特别 是仪器安放在有电磁干扰的地方,仪器的分析精度会下降。
二、安装使用遵循的原则:
1)在仪器操作时温度变化应很小
2)仪器不应受到空调器的直接吹拂
3)仪器不应受到阳光直射
三、使用时重点注意: 1)使用前,应首先检查EDX内的液氮容量,(装满为三升,平时应经常检查,及时补充,第一次加液氮或是液氮耗尽后补加,均需要等待30分钟,又以便机器充分冷却。)
2)液氮-196度,加入液氮时要小心轻拿轻放,以防止液氮飞溅到皮肤上而被冻伤。添加液氮时必须配戴好手套,切记裸手操作。
3)仪器启动三十分钟以后,才可以进行正常操作。
4)注意EDX的电源必须为100V,其它相关设备为220V。
4)仪器使用完后,依次关闭计算机、显示器、打印机,十分钟后才可以关闭EDX电源。
样品数据 附在试验报告最后
数据分析 数据报告共分三部分
第一部分:相关信息
第二部分:测量条件(Measurement Condition)
第三部分:定量分析结果(Quantitative Result)
实验结论 通过EDX仪器对此样品的分析,可以清晰的看出内存卡芯片的主要组成成分有Cu、Ba、Sr、Ca、Cr、Mo,其中占最多的是Cu。这和我们想象中的差距很大,并且通过此实验,了解并学会了使用EDX仪器,使用此仪器,在今后需要材料的具体组成成分时,就会轻而易举,既省时间又省力气。