单片机课程设计数字电压表 软件部分.docx
- 文档编号:17716148
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:17
- 大小:80.90KB
单片机课程设计数字电压表 软件部分.docx
《单片机课程设计数字电压表 软件部分.docx》由会员分享,可在线阅读,更多相关《单片机课程设计数字电压表 软件部分.docx(17页珍藏版)》请在冰点文库上搜索。
单片机课程设计数字电压表软件部分
1.单片机简介及课程设计目的………………………………………………1
2.课程设计题目及要求…………………………………………………………2
3.课程设计报告内容……………………………………………………………3
3.1课程设计相关元器件及设备…………………………………..3
3.2元器件的分析………………………………………………………3
3.3原理图的设计与分析……………………………………………5
3.4程序设计流程及说明…………………………………………8
3.5课程设计仿真结果图示……………………………………………12
4.总结…………………………………………………………………14
参考文献………………………………………………………15
一、单片机简介及课程设计目的
1、课程设计目的
熟悉典型单片机(MCS-51,AT89S51,PIC,Motorola,AVR)的资源、性能,加深对单片机课程的全面认识和掌握,对单片机及其接口的应用作进一步的了解,掌握基于单片机的系统设计的一般流程、方法和技巧,为学生解决工程实际问题打下坚实的基础。
同时课程设计也是让我们熟练掌握了课本上的一些理论知识,是一个学习新知识、巩固加深所学课本理论知识的过程,它培养了我们综合运用知识的能力,独立思考和解决问题的能力,加深了我们对单片机原理与应用课程的理解。
2、单片机简介
单片机全称为单片机微型计算机(SingleChipMicrosoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(MicrocontrollerUnit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
单片机的存储器ROM和RAM时严格区分的。
ROM称为程序存储器,只存放程序,固定常数,及数据表格。
RAM则为数据存储器,用作工作区及存放用户数据。
采用面向控制的指令系统。
为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。
3.单片机的I/O口通常时多功能的。
由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。
4.单片机的外部扩展能力很强。
在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。
二、主要内容和要求
课程设计题目:
数字电压表设计
课程设计任务:
以单片机为核心,设计一个数字电压表。
完成原理图设计,软件编制及设计报告。
具体要求如下:
1)对2路模拟信号连续采集16次,取平均值。
2)分别设定每一路的上限值,如采集的平均值超过上限值,则对应通道的指示灯闪烁10次后一直亮,并发出声音以示警告
设计思路及任务分配
一、设计思路:
由于本设计要求为一个2路的可循环采集并设置数值上限且能在LED显示屏和指示闪烁灯上分别显示信息的多功能数字电压表。
特将设计任务细化,如下所示:
1、以单片机为控制器,设计接口电路,将这些外设构成一个简单的单片机应用系统,画出接口的连接电路图,采用中断方式,对2路0-5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存。
2、编写控制程序
(1)对2路模拟信号输入实行循行采集,每路连续采集16次,取平均值。
(2)分别设定每一路的上限值,若采集的平均值超过该界限值,则对应通道的指示灯闪烁10次后一直亮,指示灯闪烁时喇叭发声,以示警告。
2、任务分配:
1、由王瑞负责基本电压表和LED显示、指示闪烁灯的电路连接,并使用Proteus7.8画出仿真电路图;
2、由王鹏负责基本电压表和LED显示、指示闪烁灯的代码编写部分;
3.由吴勃庆负责对2路模拟信号输入实行循行采集、取平均值以及超出界限值时LED、指示闪烁灯的警报响应的电路设计并使用Proteus7.8画出仿真电路图;
4、由王强国负责对2路模拟信号输入实行循行采集、取平均值以及超出界限值时LED、指示闪烁灯的警报响应的代码编写。
最后,本组四人共同将各自所负责的分支组合,形成一套完整的集仿真电路图和程序代码于一体的数字电压表设计报告。
三、课程设计报告内容
1、课程设计相关元器件及设备
本次课程设计包括实物和仿真两种,我做的是用proteus软件进行原理图的设计和仿真。
实验器材包括:
装有proteus软件的pc机一台。
2、元器件的分析
实验中用到的仿真模型有:
AT89C51,ADC0809,数码管,led,晶振,可变电阻,
电容,按键等。
AT89C51作为控制芯片,5v的电压源接上滑动变阻器模拟外部测量电压,外部模拟电压经过adc0808模数转换后,经过处理在数码管上显示出来。
1)ADC0809简介:
本实验我们选用ADC0808作为模数转换的芯片,其为逐次逼近式AD转换式芯片,其工作时需要一个稳定的时钟输入,根据查找资料,得到ADC0808的时钟频率在10khz~1200khz,我们选择典型值640khz。
课题要求测量电压范围是0到5V,又ADC0808的要求:
Vref+<=Vcc,Vref->=GND,故我们取Vref+=+5V,Vref-=0V。
由于ADC0808有8个输入通道可供选择,我们选择IN0通道和IN1通道,使ADC0808的A、B、C选择通道,因为只有通道0和1,故将B,C接地,通过改变A的值来选择通道0和1,在当ADC0808启动时ALE引脚电平正跳变时变可以锁存A、B、C上的地址信息。
ADC0808可以将从IN0得到的模拟数据转换为相应的二进制数,由于ADC0808输出为8位的二进制数。
在AD转换完成后,ADC0809将在EOC引脚上产生一个8倍于自身时钟周期的正脉冲,以此来作为转换结束的标志。
然后当OE引脚上产生高电平时,ADC0808将允许转换完的二进制数据输出。
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0808是ADC0809的简化版本,功能基本相同。
一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。
引脚功能(外部特性)
ADC0808芯片有28条引脚,采用双列直插式封装。
各引脚功能如下:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路模拟输入中的一路。
其结构与引脚图如下所示
2)数码管简单说明:
显示部分我使用的是7SEG_MPX6-CC,6合一数码管,共阴极。
3、原理图的设计与分析
总的设计电路如下所示,电路有几个功能模块共同组成:
用proteus设计的仿真原理图
1)时钟电路
2)复位电路
3)模拟电压输入电路
4)AD转换电路
5)显示电路
6)报警提示电路
4、程序设计流程及说明
1)程序流程图如下
程序流程图
2)程序功能模块及说明
1>显示模块:
voiddisplay()//数码管显示函数
{
P1=0;
P2=0xff;
P1=dispcode[dispbuf[dispcount]];//显示数据输入
P2=dispbitcode[dispcount];//数码管选通
if(dispcount==5)
{
P1=P1|0x80;
}//显示小数点
if(dispcount==2)
{
P1=P1|0x80;
}//显示小数点
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
本程序模块中P2通过循环计数器dispcount循环选通八个数码管,P1分别送入八个数码管的数据。
2>ad转换模块:
voidgot_ad_data()//启动和获取ad转换结果
{
if(EOC==1)
{
OE=1;//允许输出
getdata=P0;
OE=0;
ST=1;//读取数据后送一个高脉冲重新开始转换
ST=0;
}
}
这个模块启动ad转换,并查询转换是否完成,完成后取出转换结构,然后重新开始转换。
3>求平均值并保存模块:
voiddata_save()
{
if(t==16)
{
i=sum/t;//采样16次,求平均值,并保存
temp=i;
t=0;
sum=0;
if(A==0)
{
dispbuf[5]=i/10000;//将通道0的数据存入5,6,7位置
i=i%10000;
dispbuf[6]=i/1000;
i=i%1000;
dispbuf[7]=i/100;
}
else
{
dispbuf[2]=i/10000;//江通道1的数据存入数组的2,3,4;
i=i%10000;
dispbuf[3]=i/1000;
i=i%1000;
dispbuf[4]=i/100;
}
A=!
A;//更换通道
}
}
程序段中A为ADC0808的通道选择的最低位,t为计数器,用于计数取样次数,sum为16次取样的和。
4>报警系统模块:
voidsounder()//报警函数
{
if(A==0)
{
if(temp>range1)
{
t2++;
if(t2/16<20)//取反20次,闪烁10次
{
if(t2%16==0)//t2为16的倍数时,led1电频取反
led1=!
led1;
else
led1=led1;
}
else
{
led1=1;
t2=500;//任意赋一个大于16*20的值,防止发生溢出;
}
ring=!
ring;
}
else
{
led1=0;
ring=0;
t2=0;//temp小于额定数值时,t2清零
}
}
if(A==1)
{
if(temp>=range2)
{
t3++;
if(t3/16<20)//取反20次,闪烁10次
{
if(t3%16==0)//
led2=!
led2;//
else
led2=led2;
}
else
{
led2=1;
t3=500;
}
ring=!
ring;
}
else
{
led2=0;
ring=0;
t3=0;//temp小于额定数值时t3清零
}
}
}
这个程序段中,我又引入了两个变量T2,和t3,用于计数led灯多少次反转,t2和t3每当定时器t1中断时加1.
5、课程设计仿真结果图示
1)通道0和通道1正常测量
2)单通道超出量程
led灯闪烁十次后常亮,蜂鸣器报警。
(通道0的上限为4.5V)
3)双通道超界(通道1的上限为4.0)
四.总结
通过这次的设计使我认识到掌握单片机方面的知识太重要了,它是我们作为在这科技飞速发展的时代里的新青年要掌握的必不可少的一项技术。
我还发现自己对于书本上的很多知识还不够熟悉,有很多我们需要掌握的知识还没掌握,我会在以后的学习生活中弥补我所缺少的知识。
本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。
大学的课堂的学习只是在给我们灌输专业知识、打好理论基础,而我们应把所学的用到我们现实的生活中去,充分运用我们的知识体现我们的价值。
我会在以后的学习、生活中不断磨练自己,使自己适应于以后的竞争,不会在激烈的竞争中掉队。
在查找资料的过程中我也学到了许多单片机技术的相关知识,不仅拓展了我的知识面,同时激起了我对单片机相关技术的兴趣。
当然不能忽略在协作过程中我和同组的同学一起设计增进了同学间的友谊。
最后,感谢宋老师对我们的细心的指导,使得我的课程设计能够顺利的完成,相信这对我以后的课程设计和毕业设计将会有很大的帮助。
参考文献
1.使用教材
[1]楼然苗,李光飞.单片机课程设计指导.北京:
北京航空航天大学.2007.
[2]何桥.单片机原理及应用.北京:
中国铁道出版社.2008.
2.教学参考资源
[1]赵小安.MCS-51单片机原理及应用.天津:
天津大学出版社.2002.
[2]张迎新.单片微型计算机原理.北京:
国防工业出版社.2002.
[3]张淑清.单片微型计算机接口技术及应用.北京:
国防工业出版社.2001.
[4]翟生辉.单片计算机原理及应用.西安:
西安交通大学出版社.2000.
[5]徐爱钧.单片机高级语言C51程序设计.北京:
电子工业出版社.2001.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 数字电压表 软件部分 单片机 课程设计 数字 电压表 软件 部分