单片机课程设计数字电压表的仿真设计文档格式.docx
- 文档编号:22027863
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:19
- 大小:508.14KB
单片机课程设计数字电压表的仿真设计文档格式.docx
《单片机课程设计数字电压表的仿真设计文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计数字电压表的仿真设计文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
课程设计时间:
2014-12-9~2014-12-20
单片机系统课程设计任务书
学生姓名
刘萌萌
专业班级
测控1201班
学号
201223030121
题目
数字电压表的仿真设计
课题性质
工程设计
课题来源
自拟
指导教师
郭广灵
主要内容
(参数)
该数字电压表是利用单片机C51与ADC0808设计一个数字电压表,将模拟信号0~5V之间的电压值转换成数字量信号,以两位数码管显示,并通过虚拟电压表观察ADC0808模拟量输入信号的电压值,LED数码管实时显示相应的数值量。
任务要求
(进度)
第1-2天:
熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:
按照确定的方案设计单元电路。
要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
第5-6天:
软件设计,编写程序。
第7-8天:
程序调试。
第9-12天:
撰写课程设计报告。
要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确。
主要参考
资料
【1】单片微型计算机原理及接口技术
审查意见
系(教研室)主任签字:
年月日
目录
一系统概述1
1.1课题设计的目的.1
1.2课程设计内容1
1.3课程设计实现的目标1
二设计方案1
2.1总体设计思路1
2.2数字电压表的PROTEUS软件仿真电路设计2
三、数字电压表的程序设计3
3.1程序流程图3
3.2程序编译设计4
四数字电压表的软件设计5
4.1数字电压表的硬件电路5
4.2C51单片机和数码管显示电路的接口设计7
4.3A/D转换电路的接口设计7
五数字电压表的系统仿真调试7
六设计心得8
参考文献9
附录110
附录211
一系统概述
1.1课题设计的目的.
1、通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过定时闹钟控制系统的设计,掌握定时/计数器、中断的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。
1.2课程设计内容
1.
由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。
因此产生CLK信号的方法就得用软件来产生了。
2.由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值 (D/256*VREF)
1.3课程设计实现的目标
利用单片机C51与ADC0808设计一个数字电压表,将模拟信号0~5V之间的电压值转换成数字量信号,以两位数码管显示,并通过虚拟电压表观察ADC0808模拟量输入信号的电压值,LED数码管实时显示相应的数值量。
二设计方案
2.1总体设计思路
按系统功能要求,决定控制系统采用AT89C51单片机,A/D转换采用ADC0808。
系统除能确保实现要求的功能以外还可以方便的进行其功能的扩展。
本文采用AT89C51作为核心元件,AT89C51是一个低功耗,高性能的CMOS8位单片机。
数字电压表电路组成框图如图2-1所示。
图2-1系统组成框图
本设计中需要用到的电路有电源电路、模/数转换电路、单片机控制电路、显示电路等。
设计中需要用到的芯片有AT89C51单片机、ADC0808、74LS74、LED数码管等。
2.2数字电压表的PROTEUS软件仿真电路设计
待测电压输入信号在ADC0808芯片承受的最大工作电压范围内,经过模/数转换电路实现A/D转换,通过单片机控制电路进行程序数据处理,然后通过七段译码/驱动显示电路实现数码管显示输入电压。
硬件电路原理图如图2-2所示。
图2-2PROTEUS软件仿真电路图
3、数字电压表的程序设计
3.1程序流程图
系统上电状态,初始化ADC0808的启动地址,数码管显示关闭,开始启动A/D转换。
等待启动结束后,将ADC0808的0号通道模拟量输入信号转换输出的数字量结果通过数码管动态显示的方式显示到三位数码管上。
根据设计要求结合硬件电路,在输入模拟信号时采用电阻分压,最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中要编写一段数据调整程序,其中还应注意硬件显示电路采用了动态扫描显示,在动态扫描显示方式中,动态扫描的频率有一定的要求,频率太低,数码管LED将会出现闪烁现象,通常数码管点亮时间间隔一般均取5ms左右为宜,这就要求在编写程序时,使其点亮并保持一定的时间。
总结以上分析,程序流程图如图3-1,图3-2所示。
图3-1主程序流程图
图3-2LED数码显示程序流程图
3.2程序编译设计
数字电压表由主程序,定时器中断子程序和显示子程序等组成。
在KEIL软件中进行程序设计,如图3-3所示
图3-3用KEIL软件编译和生成HEX文件
主程序主要包括初始化程序,A/D转换程序,数值转换程序组成。
初始化程序对显示存储区清零,同时设置定时器初值,工作方式和中断允许。
数值转换程序的功能是将A/D转换后的数字量转换成可供显示的十进制非压缩BCD码,存入30H~33H中,用KEIL软件编译程序和生成HEX文件。
四数字电压表的软件设计
4.1数字电压表的硬件电路
数字电压表的硬件电路图由单片机最小系统,ADC0808数据采集电路和四位一体的共阳极显示电路构成,如图4-1所示。
ADC0808数据采集电路的D0~D7端与P1口相连,通道选择端ADDA,ADDB,ADDC直接接地,因此该电路道固定为INO。
时钟信号CLOCK,启动信号START,转换结束信号EOC及输出允许信号OE分别接至P2.4~P2.7端。
共阳极显示电路的位选线接至P2.0~P2.3,段落接至P0口,AT89C51单片机的输出端口不足以驱动共阳极动态显示电路,可加三极管放大电路或74LS224,74LS373等集成芯片进行驱动。
图4-1数字电压表仿真图
在软件中找到所需要的元件即可制作硬件电路图,数字电压表仿真电路元件清单如表4-1所示。
表4-1数字电压表元件清单
序号
元件名称
规格
数量
1
51单片机
AT89C51
1个
2
晶振
12MHZ
3
起振电容
30PF陶瓷电容
2个
4
复位电容
10UF,16V电解电容
5
10k电阻
6
A/D转换器
ADC0808
7
电阻
220,4.7k
若干
8
可调电阻
10k
9
LED数码管
共阳极四位一体数码管
4.2C51单片机和数码管显示电路的接口设计
利用单片机C51与ADC0808设计一个数字电压表,将模拟信号0~5V之间的直流电压值转换成数字量信号0~FF,以两位数码管显示。
Proteus软件启动仿真,当前输入电压为2.5V,转换成数字值为7FH,用鼠标指针调节电位器RV1,可改变输入模/数转换器ADC0808的电压,并通过虚拟电压表观察ADC0808模拟量输入信号的电压值,LED数码管实时显示相应的数值量。
在Proteus软件中设置AT89C51单片机的晶振频率为12MHz。
本电路EA接高电平,没有扩展片外ROM。
4.3A/D转换电路的接口设计
A/D转换器采用集成电路ADC0808。
ADC0808具有8路模拟量输入信号IN0~IN7(1~5脚、26~28脚),地址线C、B、A(23~25脚)决定哪一路模拟输入信号进行A/D转换,本电路将地址线C、B、A均接地,即选择0号通道输入模拟量电压信号。
22脚ALE为地址锁存允许控制信号,当输入为高电平时,对地址信号进行锁存。
6脚START为启动控制信号,当输入为高电平时,A/D转换开始。
本电路将ALE脚与START脚接到一起,共同由单片机的P2.0脚和WR脚通过或非门控制。
7脚EOC为A/D转换结束信号,当A/D转换结束时,7脚输出一个正脉冲,此信号可作为A/D转换是否结束的检测信号或向CPU申请中断的信号,本电路通过一个非门连接到单片机的P3.2脚。
9脚OE为A/D转换数据输出允许控制信号,当OE脚为高电平时,允许读取A/D转换的数字量。
该OE脚由单片机的P2.0脚和RD脚通过或非门控制。
l0脚CLOCK为ADC0808的实时时钟输入端,利用单片机30引脚ALE的六分频晶振频率得到时钟信号。
数字量输出端8个接到单片机的P0口。
量
五数字电压表的系统仿真调试
画出硬件接线图,可省略动态扫描显示驱动电路,但必须对源程序位选线状态做适当调试。
PROTEUS仿真电路图如图5-1所示,晶振电路和复位电路可省略。
将KEIL软件编译并生成的HEX文件加载到AT89C51单片机中,运行结果如图2.2-3所示。
将“数字电压表.HEX”文件加入PROTEUS中,进行虚拟仿真,然后双击AT89C51单片机芯片,可以打开元件编辑对话框,选取目标代码文件“数字电压表.HEX”。
全速启动仿真,用鼠标单击可调电阻两端“+”“-”控制点,观察LED数码管的显示数值。
调节可调电阻的大小,数码管的显示值会随之发生变化,如图5-1a和5-1b所示。
图5-1a
图5-1b
图5-1数字电压表的仿真图
六设计心得
首先,我想说的是,在做成这个数字电压表之后,瞬间感觉真的好有成就感。
在为期两个星期的单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。
使之不断地战胜别人,超越前人。
同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
这个设计过程中,我经历了无数次失败,但我知道人就是要在失败中成长,否则怎么能成才。
就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。
于是,我坚持了下来。
当然最终,这个设计很成功,主要体现在,这一整个系统,参考多了多本资料书,程序由自己独立完成,与用汇编语言制作定时闹钟控制系统程序相比,简单易读,结构清楚,层次分明。
但我深知单片机还有更深奥的知识,我将继续学习单片机及其编程语言,尽量去学习汇编语言锻炼思维能力。
还有,我感觉我们的这个专业对社会真的是太有用了,无形之中给自己打了一针安心剂,我一定会努力学习单片机的。
参考文献
[1]张俊谟.单片机中级教程——原理与应用[M].北京:
北京航天航空大学出
版社,2006:
6—7.
[2]何立民.单片机高级教程——应用与设计[M].2版.北京:
北京航天航空
大学出版社,2007:
2.
[3]刘振忠.数字电压表发展概况和原理:
电压-频率(VF)变换式积分型数字电
压表[J].电讯工程,1998
(2):
39-42.
[4]王幸之.单片机应用系统抗干扰技术[M].北京:
北京航空航天大学出版社,2000.
[5]吴金戌,沈庆阳,郭庭吉.单片机实践与应用[M].北京:
清华大学出版社,2002.
[6]张志良,马彪.单片机原理与控制技术[M].北京:
机械工业出版社,2001.
[7]沈任元,吴勇.常用电子元器件简明手册[M].北京:
机械工业出版社,2004.
[8]沙占友.新型数字电压表原理与应用[M].北京:
机械工业出版社,2006.
[9]谢自美.电子线路设计实验测试[M].武汉:
华中科技大学出版社,2000.
[10]曲娜,程凤琴,周鹏.基于51单片机的舵机控制信号的设计[J].中国科技
信息,2010,21(63):
137.
[11]刘敏娜,潘宏侠,王乔.基于C51单片机的数字电压表仿真设计[J].山西
电子技术,2011
(2):
46—47,64.
[12]徐毅,赵龙,王海峰.基于单片机的新型数字电压表设计[J].河南科技
2010,11(下):
44—45.
附录1
电路原理图
电路原理图
附录2
C语言源程序
#include<
AT89X52.H>
unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsignedchardispbuf[8]={10,10,10,10,10,0,0,0};
unsignedchardispcount;
unsignedchargetdata;
unsignedinttemp;
longinti;
\\代替原来的unsignedchari;
sbitST=P3^0;
sbitOE=P3^1;
sbitEOC=P3^2;
sbitCLK=P3^3;
voidmain(void)
{
ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
TR0=1;
ST=1;
while
(1)
{
if(EOC==1)
OE=1;
getdata=P0;
i=getdata*196;
dispbuf[5]=i/10000;
i=i%10000;
dispbuf[6]=i/1000;
i=i%1000;
dispbuf[7]=i/100;
/*原来的:
temp=getdata*235;
temp=temp/128;
i=5;
dispbuf[0]=10;
dispbuf[1]=10;
dispbuf[2]=10;
dispbuf[3]=10;
dispbuf[4]=10;
dispbuf[5]=0;
dispbuf[6]=0;
dispbuf[7]=0;
while(temp/10)
{
dispbuf[i]=temp%10;
temp=temp/10;
i++;
}
dispbuf[i]=temp;
*/
}
}
voidt0(void)interrupt1using0//定时器0
中断服务
CLK=~CLK;
voidt1(void)interrupt3using0//定时器1
TH1=(65536-6000)/256;
TL1=(65536-6000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==5)
P1=P1|0x80;
dispcount++;
if(dispcount==8)
dispcount=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 数字 电压表 仿真 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)