AD转换系统设计毕业设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业论文仅供参考精品合同,仅供参考,需要可下载使用!
中国电子科技大学
实习总结报告
实习类型生产实习
实习单位电子科学学院实习基地
实习起止时间 201X年7月X日至202X年6月X日
指导教师
所在院(系)电子科学学院
班级电信X班
学生姓名
学号
202X年 6月 20日
A/D转换系统设计
一、课题目的
单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU 表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中在很多方面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。
事实上单片机是世界上数量最多处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。
手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。
汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。
本次课程设计的题目是A/D转换系统设计,通过课程设计使学生更进一步掌握单片机原理与应用课程的有关知识,提高用C语言编程的能力,并将所学的内容加以综合;通过查阅资料,了解所学知识的应用情况;通过课程设计全面系统的了解单片机的设计方法及设计步骤,了解微机系统的基本组成及开发设计过程中需要注意的问题。
1、设计目的及意义
(1)设计目的
1)掌握52系列单片机的基本硬件结构及工作原理;
2)掌握52系列单片机的C语言及基本程序设计方法;
3)学习并掌握使用52系列单片机开发控制系统的基本步骤及方法。
(2)设计意义
学习单片机最重要的方法就是实现理论与实践相结合的学习方法。
有些工程师说过,能利用单片机设计并实现电子时钟,技能基本上掌握单片机的使用。
所以设计电子时钟的真正目的不在于设计出成品而投入使用,而是在于熟悉单片机的基本功能与编程来实现单片机的控制。
作为大学生,以后出去就业或是继续学业,都要有一定的动手能力和实践能力,而这,便是电子计时器设计的另一个目的。
(3)设计要求
1)选择一个目前较为常用的A/D器件,对0~5V的电压信号进行采样;
2)采样的结果用两位十进制数显示;
3)用按键控制每次采样动作:按一次按键,采样一次,并显示;
4)数码管显示具备锁存功能,上电后显示“00”,当采样一次后,显示采样结果。
并保持到下次采样。
2、总体设计方案
STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD 和TXD 分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在 1.2~12MHz 之间选择,电容值在5~30pF 之间选择,电容值的大小可对频率起微调的作用。
复位是单片机的初始化操作。
其主要功能是把PC 初始化为0000H ,使单片机从0000H 单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
单片机由运算器、控制器、存储器、输入输出设备构成。
此次课程设计所用到的单片机为STC89C52芯片。
(1)总体框图
图1-1 总体框图
(2)模块电路分析
1)STC89C52单片机:STC89C52是STC 公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash ,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:8k 字节Flash ,512
字节RAM ,
32 位I/O 口线,看门狗定时器,内置4KB EPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
它是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦1000次的Flash只读程序存储器,器件采用STC公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及STC89C52引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解方案。
STC89C52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,128bytes 的随机存取数据存储器(RAM),32个外部双向输入输出(I/O)口,5个中断优先级,2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信,片内时钟振荡器。
其单片机的外围引脚有40个,分别是:第20
脚和40脚分别是电源,即GND和VCC;第9脚是复位脚RST;第18脚是时钟XTAL2脚,片内振荡电路的输出端;第19脚是时钟XTAL1脚,片内振荡电路的输入端;第29脚:PSEN脚,当访问外部程序存储器时,此引脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上;第30脚ALE/PROG,当访问外部数据存储器时,ALE (地址锁存)的输出用于锁存地址的低字节;第31脚:EA/VPP为程序存储器内外部选通信号;P0^0-P0^7,P1^0-P1^7,P2^0-P2^7,P3^0-P3^7这32个引脚为数据的输出及输入引脚,即I/0口。
表1-1 STC89C52主要功能
的。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
晶振原理压电效应(物理特性):在水晶片上施以机械应力时,,会产生电荷的偏移,即为正压电效应;逆压电效应:相对在水晶片上印加电场会造成水晶片的变形即产生逆压电效应,利用这种特性产生机械振荡,变换成电气信号。
逆压电效应是在1880年由皮埃尔居里发现的,1881年他的兄弟贾可柏居里发现逆压电效应的存在。
压电效应看似简单,但它奠定了石英晶体的技术基础。
如图1-2所示:
图1-2 晶振电路
3)电源和复位电路:STC89C52需5V电压,所以可以采用USB接口的5V电源对其供电,复位电路可采用上电复位、按键电平复位、按键脉冲复位3种,本次采用按键电平复位,如图1-3所示:
图1-3 按键电平复位
4) 显示模块:该模块由8位8段共阳极数码管组成,由8个PNP型三极管分别驱动其发光,从左至右位控分别接于单片机的P1.7-P1.0中上,段控接单片机P0.0-P0.7口上,使用动态显示从右向左循环点亮每一位数码管。
如电路原理图中的数码管电路如图1-4所示:
图1-4显示模块
八段数码显示器是微机系统常用的输出设备。
数码管是一种半导体发光器件,其基本单元是发光二极管。
引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,d,p来表示。
多个发光二极管封装在一起的八段数。
数码管也称LED数码管,晶美、光电、不同行业人士对数码管的称呼不一样,其实都是同样的产品。
数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;码显示器按其连接形式可分为共阳显示器和共阴显示器共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
根据发光字段的不同组合可显示出各种数字或字符。
AD采集转换电路,本模块采用的芯片TLC549芯片。
TLC549是TI公司生产的一种低价位、高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,其转换速度小于17us,最大转换速率为40000HZ,4MHZ典型内部系统时钟,电源为
3V至6V。
它能方便地采用三线串行接口方式与各种微处理器连接,TLC549器件工作时折叠当CS变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB (A7)自 DATA OUT 端输出,接着要求自I/O CLOCK端输入8个外部时钟信号,前7个I/OCLOCK信号的作用,是配合TLC549输出前次转换结果的A6-A0位,并为本次转换做准备:在第4个I/O CLOCK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个I/O CLOCK信号的下降沿使片内采样/保持电路进入保持状态并启动 A/D开始转换。
转换时间为36个系统时钟周期,最大为17us。
直到A/D转换完成前的这段时间内,TLC549的控制逻辑要求:或者CS保持高电平,
或者I/O CLOCK时钟端保持36个系统时钟周期的低电平。
由此可见,在自TLC549
的I/O CLOCK端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次 A/D转换开始。
电路图如下:
图1-5 AD 采集模块
二、软件编程
(1)编程思想:
该系统软件程序主要有主程序模块,独立按键服务程序,显示子程序服务程序,延迟子程序服务程序等四大模块组成。
图中按键从上往下设定为可用KEY1,KEY2,KEY3,KEY1与P3.2相连用以控制采集的是否开始。
本设计使用LED数码管显示,LED显示器具有耗电少、成本低、配置简单灵活、安装方便、耐震动、使用寿命长等优点,因而应用广泛。
该方案控制最简单,但是只能显示有限的符号和数字,对于设计中复杂的显示功能显然不能胜任。
虽然点阵液晶可以显示多种字符和图形,拥有友好的人机界面及强大的显示功能。
特别适用于智能控制的可编程人性化显示。
但是考虑到本设计的实际要求,使用数码管显示就足以达到要求了。
八段LED由八个发光二极管按日字排开,所有发光二极管的阳极连在一起成共阳极,阴极连在一块称共阴极接法。
当采用芯片驱动时不需要加限流电阻,其他情况下一般应外接限流电阻。
动态显示电路有显示块,字形码封锁驱动器,字位锁存驱动器三部分组成。
(2)软件流程图
三、调试分析
验证结果:将此程序在汇编器中生成的“.hex”文件,导入STC89C52芯片中,用鼠标右键点击STC89C52,然后点鼠标左键,弹出编辑元件的框图,在programfile里添加.hex文件,再点OK。
本程序已经完成了任务要求。
四、总结及体会
在程序设计和算法实现上要多方面思考,最好画好程序流程图,这样就能达到事半功倍的效果。
在调试的过程中能够不断的发现在编写算法时应该注意的一些细节和算法语句的非法使用,在调试过程中通过对算法的不断测试、更正、扩充功能、修饰细节,使算法程序不断的得到完善。
通过本次单片机课程设计,我不仅加深了对单片机理论知识的理解,学会了学以致用的重要性;而且还学会了如何去加强锻炼创新精神,同时也提高了自身的动手能力,让我深刻的意识到理论与实际结合的重要性。
在本次设计过程中,通过遇到的困难也让我不断地去查找资料,不断地区询问同学,不断地去开动自己的脑子,从而也不断地超越自我,让自己的知识能够得到不断地完善;同时更重要的是,在这一设计过程当中,让我懂得了在学习的道路上会遇到很多的阻碍,但关键的是能做到坚持不懈,不轻易放弃,最终达到自己想要的目标。
通过这次的课程设计使我认识到要专业课学好不仅仅是要把书上的基本知识学好而且还要不断进行实践,使一些不清楚的问题得以解决,这一点也是非常重要的。
当然最关键的还是要靠自己亲自去领会思考如何解决问题,掌握独自面对问题分析问题的方法。
不少人抱怨在大学学不到东西,我并不这样认为。
我想无论是在学习还是在生活上只有自己真正用心去学习和参与才可能有收获,这也算是课设给我知识之外的一点小小的感悟。
总之本次课程设计的收获确实良多,很珍惜这样的的机会。
五、附录程序
#include<reg52.h>
#include<intrins.h>
#define led P0
#define uchar unsigned char
#define uint unsigned int
unsigned int Volt; //电压换算并扩大1000倍
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/** 0 1 2 3 4 5 6 7 8 9 */ unsigned char code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
/** 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
/* TLC549和数码管为选声明 */
sbit CLK = P3^5; //时钟
sbit DO = P3^4; //数据输出
sbit CS = P3^6; //片选
sbit w4 = P1^0;
sbit w3 = P1^1;
sbit w2 = P1^2;
sbit w1 = P1^3;
/* 延时1ms函数 */
void delay(uint z) // 延时函数
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 110; y > 0; y--)
;
}
unsigned char TLC549_ADC(void) //TLC549转换函数
{
uchar i, tmp;
CS = 1; //CS置高,片选无效
CLK = 0;
CS = 0; //CS置低,片选有效,同时DO输出最高位
毕业论文仅供参考
_nop_();
_nop_(); //适当延迟时间1.4us 等待启动(大概需要内部系统时钟的两个上升沿和其后的下降沿)
for(i = 0; i < 8; i++) //串行数据移位输入
{
tmp <<= 1;
tmp |= DO;
CLK = 1; //在CLK的下降沿读取数据
_nop_(); //CLK保持低电平一段时间等待数据读出
CLK = 0;
}
CS = 1; //CS置高,DO处于高阻状态,且CLK禁止(转换完成系统必须马上把CS置高
for(i = 17; i != 0; i--) _nop_(); //转换周期最大17us
return (tmp);
}
/* AD 读数转十进制函数 */
void Data_Conversion(void)
{
unsigned char AD_Data;
AD_Data = TLC549_ADC();
Volt = 5.0 / 256 * AD_Data * 1000; //扩大1000倍以输出小数
}
/* 数码管显示函数 */
void display()
{
uchar i,j,k;
i = Volt / 1000 ; //个位加小数点
j = Volt / 100 % 10; //十分位
k = Volt / 10 % 10; //百分位
//l = Volt % 10; //个位
w1=0;
led=table1[i];
delay(1);
w1=1;
w2=0;
led=table[j];
毕业论文仅供参考
delay(1);
w2=1;
w3=0;
led=table[k];
delay(1);
w3=1;
w4=0;
led=0xc1; //V符号,电压单位
delay(1);
w4=1;
}
/* 主函数 */
void main()
{
while(1)
{
Data_Conversion();
display();
}
毕业论文仅供参考。