单片机原理及应用实习报告.docx
- 文档编号:12827380
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:21
- 大小:450.35KB
单片机原理及应用实习报告.docx
《单片机原理及应用实习报告.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实习报告.docx(21页珍藏版)》请在冰点文库上搜索。
单片机原理及应用实习报告
实习报告
物理与电子科学学院电子信息科学与技术专业12-01班
学生姓名:
田伟正
学 号:
201256110131
实习名称:
单片机原理及应用实习
课题名称:
数字电压表设计
起止时间:
2015.01.05-2015.01.17
指导教师:
文勇军贺慧勇唐立军谢海情
小组成员:
贺志勇糟怀明梁芝
赵亚杰田伟正洪敏杰
实习成绩评定表
学生姓名:
田伟正学号:
201256110131专业班级:
电信1201
课题名称:
数字电压表设计
评分项目
要求
分值
得分
学习态度
学习态度认真,遵守纪律。
10
方案
调研充分,方案设计合理。
20
工作量
完成了规定的工作量。
实际设计、调试效果好。
40
实习报告
完全符合撰写规范要求,结构严谨,逻辑性强,层次清晰,表述准确,文字流畅。
20
答辩
准备充分,概念清楚,能准确流利地回答各种问题。
10
总分
备注:
成绩:
指导教师:
2015年01月17日
目 录
1 引言 1
2 整体模块分析 2
2.1题目要求 2
2.2整体硬件结构 2
2.3整体软件设计 6
3 个人模块硬件设计 6
3.112864 6
3.212864电路图 6
3.312864介绍 7
4 个人模块软件设计 8
4.1软件设计思路 8
4.2软件子程序 8
5 调试过程及问题分析 12
5.1测试画点子程序 12
5.2编写函数测试函数曲线 12
6 结论与实习心得 13
7 参考文献 14
一·引言
数字电压表是当前电子、电工、仪器、仪表和测量领域大量使用的一种测量工具。
不仅测量的读数直观,准确度高,并且也使操作简单化。
完成了自动化仪表从模拟技术向数字技术的转变。
数字电压表及高档智能仪器的大量问世,标志着电子仪器领域的一场革命,也开创了现代电子测量技术的先河,它广泛采用了新技术,例如芯片的集成化,不断开发新的产品。
新一代数字仪表正朝着标准模块化的发展方向,预计在不久的将来,数字仪表将朝着标准化,通用化,系列化的模块所构成,给电路设计和安装调试,维修带来极大方便。
解决了数字仪表不便于观察连续变化量的技术难题。
数字电压表(DigitalVoltmeter)简称DMV,它采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
采用单片机的数字电压表,精度高、抗干扰能力强,可扩展性强,集成方便能够满足数字化时代的要求。
我们做的是用51单片机做一个能用来测外部电压源的数字电压表,电压表的量程为0~5V,分辨力为20mV,能够每秒钟自动连续测量两次电压,并且用LCD1602液晶显示当前电压,可以通过按键来调节电压越限报警的上下限。
电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。
数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。
一般说来,A/D转换的方式可分为两类:
积分式和逐次逼近式。
积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。
根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。
逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。
斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。
在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。
我们设计的数字电压表是基于STC89C52单片机的硬件设计及软件设计方法。
在设计中,充分利用了STC89C52单片机内部的高速计数器和以MAX197组成的A/D转换器的优良特性,使整个设计达到了比较满意的效果。
二·整体模块介绍
2.1题目要求:
1、基本要求
测量一个外部电压源的电压。
A.测量量程:
0~5V;
B.分辨力:
20mV;
C.测量速率:
2次/秒自动连续测量;
D.结果显示方式:
用LED显示当前电压。
E.电压越限报警。
报警上限、下限通过按键设置修改。
2、扩展要求
(1)用LCD1602显示当前电压以及报警门限。
(2)用图形液晶LCD12864显示最近一分钟内的电压时间曲线。
(3)电压变化率(dV/dt)越限报警。
3、误差测试
调试无误后,可用较高精度的数字电压表与其进行比对,记录测量结果,进行误差分析。
2.2整体硬件结构
A.定时器,定时0.5s执行一次进程 (洪敏杰)
B.扫描按键,并能改变变量的值 (赵亚杰)
C.1602显示屏显示电压值 (梁芝)
D.12864显示一分钟电压曲线 (田伟正)
E.蜂鸣器 (糟怀明)
F.AD转换 (贺志勇)
硬件设计基本思路:
单片机STC90C51的最小系统作为核心处理器,数字电压表的核心测量部分为A/D转换模块,对采集得到的数字电压进行简单数据处理后,并把数字电压值显示在LCD1602上,同时扫描独立按键,判断按键的被按下情况,以此作为改变量程上下限值的信号,在所测电压超出所设定的范围时,为了达到报警的作用,选择蜂鸣器模块来实现。
1)MCS-51单片机最小系统:
MCS-51单片机最小系统是程序运行的核心部分,包括处理数据,控制芯片状态(对芯片写控制字操作),读取I/O口状态以及改变I/O口状态。
2)A/D转换模块:
A/D转换模块主要实现对外部电压源的电压进行采集并转换为数字电压,并把代表数字电压值大小的12位二进制从DOUT口输出,由单片机进行处理后输出显示。
3)独立按键:
独立按键模块主要功能是通过按键被按下这一动作改变数字电压表量程的上下限值,根据按键的电路结构,当按键被按下时,与GND接通,电平为‘0’,而不被按下时,电平为‘1’。
因此,将按键与I/O口相连,就可以通过判断I/O口的状态得到按键所处的状态,并以此来改变对应的上下限值。
4)蜂鸣器:
蜂鸣器主要是为了实现系统的越限报警功能。
图中晶体管具有这样的特性:
当基极电压大开启电压(0.6-0.7v)时,晶体管导通,有电压通过蜂鸣器,否则,不导通,无电流通过蜂鸣器。
如此导通与截止状态反复更替,蜂鸣器发出声音。
因此,只要通过I/O口控制J8的电平即可达到报警的效果。
5)LCD1602液晶显示屏:
主要功能是显示被测量的电压值、量程的上下限值以及被测电压的随时间的变化率。
2.3整体软件设计
整体软件设计思路:
首先为满足每秒测量量程的要求,用定时器定时0.5S执行一次测量任务。
通过A/D转换模块采集模拟电压,转换为数字电压,进行简单数据处理得到分辨力为20mV的数字电压值,设定量程上下限两个变量,并可以通过扫描独立按键来改变这两个变量值。
记录前后两次所得到的数字电压值,作差后再除以时间0.5S就得到电压随时间的变化率。
最后,将数字电压值、量程上下限值和电压变化率显示在LCD1602上。
三·个人模块硬件设计
3.112864截图
3.212864电路图
3.312864介绍
12864液晶指是128*64点阵液晶模块的点阵数简称,在使用其绘图功能时,先要打开扩充指令集,然后再打开绘图功能,最后是数据显示ST7920的显示坐标关系。
其显示坐标如下。
从图中可以看出,X方向共有8个字(16个字节)Y方向共有0~31行分为上下两个屏。
而对12864的所有操作概括起来有四种:
1)读忙状态(同时独出指针地址内容),初始化之后每次对12864的读写均要进行检测。
2)写命令:
所有的命令可以查看指令表,后续讲解指令的详细用法。
写地址也是写命令。
3)写数据:
操作对象有DDRAM、CGRAM、GDRAM。
4)读数据:
操作对象也是DDRAM、CGRAM、GDRAM。
四·个人模块软件设计
4.1软件设计思路
12864显示输出波形是我们组数字电压表的拓展模块,在于将输出的电压曲线显示在12864液晶屏上,显示思路为首先了解12864点阵分布结构和如何调用内部任意位置并写入数据,由此便可以在任意位置画点,我们就可以得到坐标轴,在得到坐标轴以后问题就容易多了,因为横坐标128位我们用来当做时间轴,来显示一分钟数据,取120位,每一位表示0.5秒,过一分钟刷一次,纵坐标64位表示电压轴,因为输出电压的范围为0~5000mv,所以我们所做的处理为取50位y= v(实际电压)/100,每一位表示100mv。
这样只要输入每一秒的电压值就可以依次画出波形。
4.2软件子程序:
/*******************************************************************************函数名 :
LCD12864_WriteCmd
*函数功能 :
写入一个命令到12864
*输 入 :
cmd
*输 出 :
无
*******************************************************************************/
voidLcdSt7565_WriteCmd(cmd)
{
LCD12864_CS=0; //chipselect,打开片选
LCD12864_RD=1; //disableread,读失能
LCD12864_RS=0; //selectcommand,选择命令
LCD12864_RW=0; //selectwrite,选择写模式
_nop_();
_nop_();
DATA_PORT=cmd;//putcommand,放置命令
_nop_();
_nop_();
LCD12864_RW=1; //commandwriting,写入命令
}
/*******************************************************************************函数名 :
LcdSt7565_WriteData
*函数功能 :
写入一个数据到12864
*输 入 :
dat
*输 出 :
无
*******************************************************************************/
voidLcdSt7565_WriteData(dat)
{
LCD12864_CS=0; //chipselect,打开片选
LCD12864_RD=1; //disableread,读失能
LCD12864_RS=1; //selectdata,选择数据
LCD12864_RW=0; //selectwrite,选择写模式
_nop_();
_nop_();
DATA_PORT=dat; //putdata,放置数据
_nop_();
_nop_();
LCD12864_RW=1; //datawriting,写数据
}
/******************************************************************************
*函数名 :
LCD12864_Init
*函数功能 :
初始化12864
*输 入 :
无
*输 出 :
无
*******************************************************************************voidLcd12864_Init()
{
uchari;
LCD12864_RSET=0;
for(i=0;i<100;i++);
LCD12864_CS=0;
LCD12864_RSET=1;
//----------------StarInitialSequence-------//
//------程序初始化设置,具体命令可以看文件夹下---//
//--软件初始化--//
LcdSt7565_WriteCmd(0xE2); //reset
for(i=0;i<100;i++); //延时一下
//--表格第8个命令,0xA0段(左右)方向选择正常方向(0xA1为反方向)--//
LcdSt7565_WriteCmd(0xA1); //ADCselectsegmentdirection
//--表格第15个命令,0xC8普通(上下)方向选择选择反向,0xC0为正常方向--//
LcdSt7565_WriteCmd(0xC8); //Commondirection
//--表格第9个命令,0xA6为设置字体为黑色,背景为白色---//
//--0xA7为设置字体为白色,背景为黑色---//
LcdSt7565_WriteCmd(0xA6); //reversedisplay
//--表格第10个命令,0xA4像素正常显示,0xA5像素全开--//
LcdSt7565_WriteCmd(0xA4); //normaldisplay
//--表格第11个命令,0xA3偏压为1/7,0xA2偏压为1/9--//
LcdSt7565_WriteCmd(0xA2); //biasset1/9
//--表格第19个命令,这个是个双字节的命令,0xF800选择增压为4X;--//
//--0xF801,选择增压为5X,其实效果差不多--//
LcdSt7565_WriteCmd(0xF8); //Boostratioset
LcdSt7565_WriteCmd(0x01); //x4
//--表格第18个命令,这个是个双字节命令,高字节为0X81,低字节可以--//
//--选择从0x00到0X3F。
用来设置背景光对比度。
---/
LcdSt7565_WriteCmd(0x81); //V0aset
LcdSt7565_WriteCmd(0x23);
//--表格第17个命令,选择调节电阻率--//
LcdSt7565_WriteCmd(0x25); //Ra/Rbset
//--表格第16个命令,电源设置。
--//
LcdSt7565_WriteCmd(0x2F);
for(i=0;i<100;i++);
//--表格第2个命令,设置显示开始位置--//
LcdSt7565_WriteCmd(0x40); //startline
//--表格第1个命令,开启显示--//
LcdSt7565_WriteCmd(0xAF); //displayon
for(i=0;i<100;i++);
/******************************************************************************
*函数名 :
Lcd12864_Draw_point
*函数功能 :
在液晶屏上画点
*输 入 :
x,y
*输 出 :
无
*******************************************************************************
ucharLcd12864_Draw_point(ucharx,uchary)
{
ucharx1,x2,row,dat=0x01;
row=y%8;
y=y/8;
dat=dat< //--Y的坐标只能从0到7,大于则直接返回--// if(y>7) { return0; } //--X的坐标只能从0到128,大于则直接返回--// if(x>128) { return0; } y+=0xB0; //求取Y坐标的值 //--设置Y坐标--// LcdSt7565_WriteCmd(y); x1=(x>>4)&0x0F; //由于X坐标要两句命令,分高低4位,所以这里先取出高4位 x2=x&0x0F; //去低四位 //--设置X坐标--// LcdSt7565_WriteCmd(0x10+x1); //高4位 LcdSt7565_WriteCmd(0x04+x2); //低4位 LcdSt7565_WriteData(dat); return1; } /****************************************************************************** *函数名 : v_Lcd12864DrawLineV_f *函数功能 : 根据输入电压在相应的位置画点 *输 入 : x,y *输 出 : 无 ******************************************************************************* voidv_Lcd12864DrawLineV_f(ucharx,uintv) { uchary; y=64-(v/100);// 曲线y坐标 Lcd12864_Draw_point(x,y); } 五·调试过程及问题分析 5.1测试画点子程序: 1)任意点: Lcd12864_Draw_point(0,0); Lcd12864_Draw_point(1,1); Lcd12864_Draw_point(2,2); Lcd12864_Draw_point(3,3); Lcd12864_Draw_point(4,4); Lcd12864_Draw_point(5,5); Lcd12864_Draw_point(6,6); Lcd12864_Draw_point(7,7); Lcd12864_Draw_point(8,8); Lcd12864_Draw_point(9,9); Lcd12864_Draw_point(10,10); 2)横坐标轴: v_Lcd12864DrawLineX_f(0,127,63); 5.2编写函数测试函数曲线: 1)sin函数波形测试 while (1) { int m; chary; for(m=0;m<128;m++) { y=10*sin(25*m)+30 ; Lcd12864_Draw_point(m,y); } } 六·结论与心得 通过这次实习,我学习到了很多,不仅仅是在于我所做模块知识的增长,而且学到了很多在做这种科研实验时所应有的态度与思维方式,这个我觉得是最为重要的,在实习开始时,觉得很激动,很好玩,但是事实远比感觉来的更为残酷,在小组分完模块之后第二天我就出现了问题,因为对硬件12864完全不了解,又没有深入的去查资料,导致一直出现错误,而又不知道如何处理,浪费了很多时间,拖延了队伍的整体测试时间,感觉很愧疚,以后一定要注意。 七·参考文献 [1]李伟.一种高精度低成本A/D转换器的原理和实现[J].自动化仪表,2007(10): 61-62. [4]何立民.单片机应用系统设计[M].北京: 北京航空航天大学出版社,1990. [2]贾培军,董军堂,高延华.一种量程自动切换数字电压表的设计[J].山西电子技术,2007(6): 10-12. [8]古天祥,王厚军.电子测量原理[M].北京: 机械工业出版社,2004. [3]MAKai,SUHong-qi.S/NRatioof4-ChannelA/DGeologicalRadarNon-uniformSamplingSignals[A].JournalofChinaUniversityofMining&Technology[C].Beijing: ChinaAcademicJournalElectronicPublishingHouse,2007,0534–0536. [5]蔡荣芳,王谷音,林瑞光,等.微型计算机原理及应用[M].杭州: 浙江大学出版社,1992. [9]胡翔.电路分析[M].北京: 高等教育出版社,2001. [6]阎石.数字电子技术基础[M].北京: 高等教育出版社,1998. [7]康华光.电子技术基础[M].北京: 高等教育出版社,1998.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 实习 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)