单片机课程设计报告数字计数器.docx
- 文档编号:9132738
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:14
- 大小:223.21KB
单片机课程设计报告数字计数器.docx
《单片机课程设计报告数字计数器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告数字计数器.docx(14页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告数字计数器
单片机原理及应用
课程设计报告书
题目:
时钟计时器的设计
姓名:
学号:
专业:
电子信息科学与技术
指导老师:
设计时间:
2010年12月
简易数字电压表的设计
1.引言
随着学习的深入,我们们对各种电子器件的了解日渐深入,对各种电子仪器的原理日渐熟知,所以想通课本次课题设计来检验一下自己对课本的掌握程度,也检验一下我们们的动手能力。
1.1设计意义电压表是我们们学习电子的学生最常见的仪器,通过对电压表的设计来检验我们们的学习。
同时也通过完成对电压表的课程设计,综合应用和巩固单片机课程设计及相关课程的基础理论和专业知识,系统地掌握电子产品元件的使用方法,及单片机结构设计的基本方法和步骤,电子电路的设计等电子技术设计基本方法,同时我们们学会了正确运用技术标准和资料,培养了我们们认真负责、踏实细致的工作作风和严谨的科学态度,强化了我们们的质量意识和时间观念。
1.2系统功能要求简易数字电压表可以测量0~5V范围内的8路输入电压值,并在4位LED数码管上轮流显示或单路选择显示。
其测量最小分辨率为0.02V。
1.3本组成员所做的工作
**负责在电路板上布线,识别电路元件级各种元器件的用法,焊接方案。
**主要负责焊接元器件,同时辅助布线设计。
**查找电子元器件的使用方法,性能,写设计报告。
2.方案设计
通过对元器件的对比,在电路板上选择了较优的布线方案,力争达到用最少的漆包线。
按照系统的功能实现要求,决定控制系统采用STC89C52单片机,A/D转换采用ADC0809.系统除了能确保实现要求的功能之外,还可以方便的进行8路其他A/D转换亮的测量和远程测量结果传送等扩展功能。
数字电压表系统设计方案框图如下图2.1所示。
图2.1
数字点压表系统设计方案框图
3.硬件设计
简易电压表设计中所用到的各种元器件电路图及原理介绍如下:
ADC0809电路原理图如下所示:
1.主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
2.内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近
3.外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。
下面说明各引脚功能。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
ADC0809的工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。
为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。
例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。
可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。
因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
AT89C52电路原理图如下:
主要功能特性:
兼容MCS51指令系统
8k可反复擦写(>1000次)FlashROM
32个双向I/O口256x8bit内部RAM
3个16位可编程定时/计数器中断时钟频率0-24MHz
2个串行中断可编程UART串行通道
2个外部中断源共8个中断源
2个读写中断口线3级加密位
低功耗空闲和掉电模式软件设置睡眠和唤醒功能
简易电压表工作原理简介:
A/D转换由集成电路ADC0809完成。
ADC0809具有模拟输入端口,地址线可决定对那一路模拟输入作A/D转换。
A/D转换由集成电路ADC0809完成。
ADC0809具有8路模拟输入端口,地址线可决定对哪一路模拟输入作A/D转换。
第22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。
第6脚为测试控制,当输入一个2us宽高电平脉冲时,就开始A/D转换。
第7脚为A/D转换结束标志,当A/D转换结束时,第7脚输出高电平。
第9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出。
第10脚为ADC0809的时钟输入端,利用单片机第30脚的6分频晶振频率,再通过14024二分频得到1MHz时钟。
单片机的P1、P3.0~P3.3端口作为4位LED数码管显示控制。
P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择显示的通道。
P0端口用作A/D转换数据读入,P2端口用作ADC0809的A/D转换控制。
简易数字电压表电路原理图如下所示:
4.软件设计
4.1初始化程序
系统上电时,初始化程序主要用来执行70H~77H内存单元清0和P2口置0等准备工作。
4.2主程序
在刚上电时,系统默认为循环显示8个通道的电压值状态。
当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间在1s左右。
主程序在调用显示子程序与测量子程序之间循环。
主程序流程图如下所示
4.3显示子程序
显示子程序采用动态扫描法实现4位数码管的数值显示。
测量所得的A/D转换数据放在70H~77H内存单元中,测量数据在显示时须经过转换成为十进制BCD码放在78H~7BH单元中,其中7BH存放通道标志数。
寄存器R3用作8路循环控制,R0用作显示数据地址指针。
4.4A/D转换测量子程序
A/D转换测量子程序用来控制对ADC0809的8路模拟输入电压的A/D转换,并将对应的数值移入70H~77H内存单元。
A/D转换测量子程序流程图如下所示:
5.系统调试
采用Wave或KeilC51编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作,烧录好程序后进行软硬件联调,最后进行端口电压的对比测试。
简易数字电压表与“标准”数字电压表对比测试表
标准电压值/V
0
0.15
0.85
1
1.25
1.75
简易电表测得值/V
0
0.17
0.86
1.02
1.26
1.76
绝对误差/V
0
0.02
0.01
0.02
0.01
0.01
标准电压值/V
1.98
2.23
2.65
3
3.45
3.55
简易电表测得值/V
2
2.33
2.66
3.01
3.47
3.56
绝对误差/V
0.02
0.01
0.01
0.01
0.02
0.01
标准电压值/V
4
4.5
4.6
4.7
4.81
4.9
简易电表测得值/V
4.01
4.52
4.62
4.72
4.82
4.92
绝对误差/V
0.01
0.02
0.02
0.02
0.01
0.02
从表中可以看出,简易数字电压表与“标准”数字电压表测得的绝对误差均在0.02v以内,这与采用8位A/D转换器所能达到的理论误差精度相一致,在一般的应用场合可完全满足要求。
6.设计总结
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过实习,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们才意识到老一辈电子设计者为我们的社会付出。
我们想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的合作,我们感觉我们和同学们之间的距离更加近了;我们想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋;正所谓“三百六十行,行行出状元”。
我们们样可以为社会作出我们应该做的一切,这有什么不好?
我们们断的反问自己。
也许有人不喜欢这类的工作,也许有人认为设计的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就可。
社会需要我们,我们也可以为社会而工作。
既然如此,那还有什么必要失落呢?
于是我们决定沿着自己的路,执着的走下去。
同时我们认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
某个人的离群都可能导致导致整项工作的失败。
实习中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们实习成功的一项非常重要的保证。
而这次实践也正好锻炼我们这一点,这也是非常宝贵的。
7.附录A源程序
/*****************************************************/
//八路电压表C程序
/***************************************************/
/*使用AT89C52单片机,12MHZ晶振,P0口读入AD值,P2口作AD控制,用共阳LED数码管
P1口输出段码,P3口扫描,最高位指示通道(0-7)。
*/
#include"reg52.h"//52系列单片机定义文件
#include"intrins.h"//调用_nop_();延时函数用
#definead_conP2//AD控制口
#defineaddataP0//AD数据计入读入口
#defineDisdataP1//显示数据段码输出口
#defineucharunsignedchar//无符号字符(8位)
#defineuintunsignedint//无符号整数(16位)
sbitALE=P2^3;//锁存地址控制位
sbitSTART=P2^4;//启动一次转换位
sbitOE=P2^5;//0809输出数据控制位
sbitEOC=P3^7;//转换结束标志位
sbitDISX=Disdata^7;//LED小数点
//
ucharcodedis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
/*共阳七段LED段码表"0""1""2""3""4""5""6""7""8""9""不亮"*/
ucharcodescan_con[4]={0xfe,0xfd,0xfb,0xf7};//四位列扫描控制字
uchardataad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//定义8个数据内存单元
uintdatadis[5]={0x00,0x00,0x00,0x00,0x00};//定义4个显示数据单元、1个数据暂存单元
//
/********1毫秒延时子函数**********/
delay1ms(uintt){
uinti,j;for(i=0;i // /***********显示扫描子函数**********/ scan(){uchark,n;inth; dis[3]=0x00;//通道初值为0 for(n=0;n<8;n++)//每次显示8个数据 { dis[2]=ad_data[n]/51;//测得值转换为三位BCD码,最大为5.00V dis[4]=ad_data[n]%51;//余数暂存 dis[4]=dis[4]*10;//计算小数第一位 dis[1]=dis[4]/51;// dis[4]=dis[4]%51;// dis[4]=dis[4]*10;//计算小数第二位 dis[0]=dis[4]/51;// for(h=0;h<500;h++)//每个通道值显示时间控制(约1秒){ for(k=0;k<4;k++)//四位LED扫描控制 {Disdata=dis_7[dis[k]];if(k==2){DISX=0;} P3=scan_con[k];delay1ms (1);P3=0xff;}} dis[3]++;//通道值加1}} /*******0809AD转换子函数***********/ test(){ucharm;uchars=0x00; ad_con=s;for(m=0;m<8;m++){ ALE=1;_nop_();_nop_();ALE=0;//转换通道地址锁存 START=1;_nop_();_nop_();START=0;//开始转换命令 _nop_();_nop_();_nop_();_nop_();//延时4微秒 while(EOC==0);//等待转换结束 OE=1;ad_data[m]=addata;OE=0;s++;ad_con=s;//取AD值,地址加1} ad_con=0x00;//控制复位 } /**************主函数****************/ main(){ P0=0xff;//初始化端口 P2=0x00;P1=0xff;P3=0xff;while (1){ scan();//依次显示8个通道值一次 test();//测量转换一次 }} //*********************结束**************************// 8.附录B作品实物图 9.参考文献 [1]阳进.基于单片机的LED显示屏的汉字显示[J].中国科技信息,2005,(12): 112. [2]MarkNelson著.潇湘工作室译.串行通信开发指南[M].中国水利水电出版社,2002. [3]王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002. [4]韩润萍,陈小萍.点阵LED显示屏控制系统[J].微计算机信息,2003,19(10): 50-51. [5]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 数字 计数器