- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计数字电压表 软件部分
目 录
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 )的资源、性能,加深对单片机课程的全面认识和掌握,对单片机的应用进一步的了解Single Chip Microsoftcomputer)。从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
单片机的存储器ROM和RAM时严格区分的。ROM称为程序存储器,只存放程序,固定常数,及数据表格。RAM则为数据存储器,用作工作区及存放用户数据。
采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。3 .单片机的I/O口通常时多功能的。由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。4 .单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。
二、主要内容和要求
课程设计题目:数字电压表设计
课程设计任务:以单片机为核心,设计一个数字电压表。完成原理图设计,软件编制及设计报告。具体要求如下:
对2路模拟信号连续采集16次,取平均值。
分别设定每一路的上限值,如采集的平均值超过上限值,则对应通道的指示灯闪烁10次后一直亮,并发出声音以示警告
设计思路及任务分配
一、设计思路:
由于本设计要求为一个2路的可循环采集并设置数值上限且能在LED显示屏和指示闪烁灯上分别显示信息的多功能数字电压表。特将设计任务细化,如下所示:
1、以单片机为控制器,,将这些外设构成一个简单的单片机应用系统,画出接口的连接采用中断方式,对2路0-5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存。
编写控制程序
对2路模拟信号输入实行循行采集,每路连续采集16次,取平均值。
分别设定每一路的上限值,若采集的平均值超过该界限值,则对应通道的指示灯闪烁10次后一直亮,指示灯闪烁时喇叭发声,以示警告。 Proteus7.8画出仿真电路图;
2、由王鹏负责基本电压表和LED显示、指示闪烁灯的代码编写部分;
3.由吴勃庆负责对2路模拟信号输入实行循行采集Proteus7.8画出仿真电路图;
4、由王强国负责对2路模拟信号输入实行循行采集{
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分别送入八个数码管的数据。
2ad转换模块:
void got_ad_data() //启动和获取ad转换结果
{
if(EOC==1)
{
OE=1; //允许输出
getdata=P0;
OE=0;
ST=1; //读取数据后送一个高脉冲重新开始转换
ST=0;
}
}
这个模块启动ad转换,并查询转换是否完成,完成后取出转换结构,然后重新开始转换。
3求平均值并保存模块:
voi
文档评论(0)