ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:913.66KB ,
资源ID:3970127      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3970127.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数码管流水灯设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数码管流水灯设计.docx

1、数码管流水灯设计单片机课程设计报告第一章 基础设计报告1.1设计题目 数码管流水灯设计1.2 设计任务 结合单片机原理知识,运用AT89C51单片机来设计一款简单的数码流水灯,并结合U vision 4和 ISIS 7 Professional两款软件来设计和模拟。利用AT89C51单片机来控制发光二极管的点亮和熄灭,实现延时和循环移位。用单片机AT89C51的一个端口接8位用逻辑显示的发光二极管,设计程序,使发光二极管从右向左依次轮流点亮。1.3 程序流程:图1.1实验程序流程图1.4 Proteus模拟实验电路 图1.2 Proteus实验电路模拟(1)启动proteues软件,获取所需的

2、器件。 图1.1 图1.3 Proteus 拾取元件(1)(2)打开库后,输入AT89C51,查找到AT89C51芯片,双击添加到实验图示中。 图1.4 Proteus 拾取元件(2)同理,还添加所需的电容(CAP、CAP-POL)、电阻(RESISTOR)、晶振(CRYSTAL)、发光二极管(LED-BLUE)、74LS373等。(3)按照图1.2所示连接电路图。1.5 编写实验程序(1)打开Keil程序,选择工程菜单。1.5 Keil程序 (2)选择新建uVision工程,保存为工程名称。 图1.6 新建uVision工程(3) 选择Atmel公司的 AT89C51设备。(4)新建一个程序

3、,并保存其后缀名为.asm(若是用C语言编写,其后缀名保存为.c) 图1.8 新建程序文本图1.9 保存程序并更改后缀名为.asm(5)增加程序文本到源组。图1.10 添加程序文本(6)编译程序之前,在闪存菜单设置选项中选择输出选项,在产生HEX文件前打钩即可。图1.54 产生HEX文件图1.11 产生HEX文件1.6 实验程序 (1)编写汇编程序 ORG 00HLOOP: MOV A,#0FEH /赋初始值 MOV R2,#8 /设计数值OUTPUT: MOV P1,A /送P1口输出 RL A /数据移位 ACALL DELAY DJNZ R2,OUTPUT LJMP LOOPDELAY:

4、 MOV R6,#0 /延时程序 MOV R7,#0DELAYLOOP: DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RET END(2)调试与运行:通过右击单片机,选择编辑属性,导入程序 图1.12 向单片机导入程序(3)点击运行,仿真实验 图1.13 实验仿真结果 第二章 提高设计报告2.1 设计题目 基于单片机的数字电压表设计2.2 设计任务 设计单片机主电路、数据采集接口电路、数码管显示电路,能够实现对电压的测量及显示,电压精确到小数点后一位。2.3 程序流程图 图2.1 主程序流程图2.4设计步骤:1)根据设计要求来确定设计思路。2)根据设计要求查找相应芯

5、片参数,确定所需要的器件。3)设计硬件电路。4)根据电路图编写程序。2.5 设计硬件电路(1)复位电路 图2.2 复位电路 复位端与计算机的复位键的功能类似。当系统正在运行或者计算机死机时,只要按下复位键,计算机就会重新启动。当打开单片机系统的电源开关时,VCC的电压瞬间变为+5V,电解电压的电容突变相当于短路,于是VCC(高电平)相当于直接加到了RST端。正是这个加在RST上的瞬间高电平使得单片机复位。很快,电容充满电,在电路中相当于断路,于是RST由高变成低,单片机开始执行程序。按键相当于手动复位,当按键闭合时,单片机的RST端接高电平VCC,从而单片机复位。(2)时钟信号 图2.3 外部

6、时钟信号电路这个电路构成了单片机的一个时钟信号源,作为单片机的工作时序。这种使用晶振配合产生时钟信号的方法称为内部时钟方式。晶振的频率决定了该系统的时钟频率。根据系统对速度的要求,一般可选择1.2M12MHz的晶振,电容C1和C2容量可选取2040pF。除了内部时钟外,还可以利用外部信号源直接向单片机提供时钟信号,这时应当把外部时钟信号输入到XTAL2脚上,XTAL1接地,而这时外部振荡信号一般选择低于12MHz的方波信号。(3)AD0808芯片接法 图2.4 ADC0808芯片接法ADC0808引脚功能IN0IN7: 模拟量输入通道。ADDA 、ADDB、 ADDC:地址线,它决定转换通道。

7、ALE:地址锁存信号。START:转换启动信号。START为上升沿,所有内部寄存器清零,START为下降沿,启动A/D转换。OUT1OUT8:数据输出端,为三态缓冲输出。OE:输出允许端。OE=0,输出禁止。OE=1,输出允许。CLK:时钟信号,频率小于750kHz的时钟信号。EOC:转换结束信号。系统启动前EOC=1,系统启动后EOC=0,当EOC=1时,表示转换结束。VREF:参考电压,典型值为+5V。ADC0808主要参数分辨率:8转换时间:100us转换路数:8标准电压:5V时钟频率:750kHz输入为05V输出具有锁存功耗:15mV非调整误差位:+LSB或-LSB(4)数码管显示(采

8、用的是共阳极数码管) 图2.5 数码显示电路(5)完整电路图 图2.6 基于单片机设计的数字电压表电路2.6 程序代码:#include#include#define uint unsigned int#define uchar unsigned char#define PORT P0sbit START=P25;sbit EOC=P26;sbit OE=P27;sbit CLOCK=P24;sbit p21=P21;sbit p22=P22;/*数码管显示字符组*/uchar code num=0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,

9、/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ ; /共阳极数码管/*定义中断程序*/void int1(void) interrupt 1 using 1 CLOCK=CLOCK;/*定义延时程序*/void delay(void) uchar i,j; for(i=25;i0;i-); for(j=100;j0;j-);/*声明数码显示函数*/void display(uint sw,uint gw);void main() uchar date; uint sw,gw; IE=0x82; / 开中断,EA=1,允许

10、T0中断 TMOD=0x02; / 设置工作方式,工作方式2,自动重装初值 TH0=245; /设置初值 TL0=0; / /计数溢出,置位溢出中断标志位 TR0=1; /启动T0 for(;) START=0; /ADC转换器启动信号,上升沿将逐次毕竟寄存器清零,下降沿启动ADC转换 START=1; START=0; delay(); while(EOC=0);/EOC为高时,表示转换结束,为低时表示正在转换。将EOC作为中断请求信号 OE=1;/输出转换得到的数据 date=P1; sw=date/51; gw=(date%51)%10; display(sw,gw) ; /*数码管显示

11、程序*/void display(uint sw,uint gw) /*显示数码管一*/ p21=1; PORT=numsw&0x7f; delay(); p21=0; /*显示数码管二*/ p22=1; PORT=numgw|0x80; delay(); p22=0; 2.7 仿真结果 图2.7 实验电路仿真结果 通过外接一个一个滑动变阻器来模拟数字电压表的两个测电压端。2.8 误差分析(1)ADC0808芯片的精度限制会带来一定的误差,这部分误差会影响到模数转换输出的结果。(2)ADC0808转换后输出的二进制,而得到的二进制转换成十进制时往往不是模拟的电压值,这时需要我们在主程序做相应的

12、处理,将其转换出的结果和模拟电压值相对应。在此实验中,电压的量程为5V,的转换位数为.模拟电压值与转换后二进制存在一个比例为:().而在这主程序中我们所做的转换处理会带来本次实验的误差。(3)在此次实验中,我们只精确到小数一位,在程序中的四舍五入也会带来一定的误差。2.9 实验所遇到的问题以及相应的处理()在最开始时,我们采用的是串行的方式输入数据,而在最后输出显示部分,完全不能正确的显示。我的判断是在到单片机中没有串并转换的器件,努力尝试的更改电路后,比预想的还要困难,所以最终选择的是用并行的芯片来做模数转换。(2)数码显示部分是问题最多的地方,其一就是因为人眼的视觉特性,导致延时设定不合适

13、而出现视觉闪烁现象。最后我在查阅了相关资料后,将延时设置为其二,显示数码管相应位数时,问题也特别多,也是不能正确显示出。尤其是在数码管的位数相应比较多的情况。显示程序部分就很有很大的问题。在主程序中我采用的是无符号整型和无符号字符型,而其中将其进行强制转换成浮点型来处理,但是在后的数码管显示部分仍然是不正确的读数,而其中检查模数转换部分是正确的,我判断的是主程序中处理数据部分和数码管显示子程序的问题。最后采用一种比较折中的办法,将数码管的显示位数减少为两位,小数精确到一位。(3)的时钟信号供给。从始至终我没有想用外部电路来控制时钟信号。基于单片机的可控制性,我还是采用了通过单片机的口来控制。而

14、这部分也是一个比较大的难题。外接电路究竟要怎么接?是直接连到单片机上?还是需要一些器件来共同连接?最后参考到一些单片机控制的相关程序而选择用中断的方式来供给芯片时钟信号。 第三章 提高设计报告任务说明书3.1 小组成员及学号姓名学号赵林0807040118唐棋08070401253.2 本人工作任务详细说明本次实验,我主要负责软件部分,通过已建立的电路来编写单片机的控制程序,并协同同伴修改出错的电路。在此程序采用的通过中断给ADC0808一个时钟信号。在此之间我们需要将中断打开,即在IE、TMOD设置数值。而中断程序是给CLOCK取反。通过这种方式而产生一个脉冲。在主程序中,先给START置低

15、,再置高,从而形成一个上升沿,ADC0808内部寄存器清零。再置低,形成一个下降沿,启动A/D转换。然后使能OE=1,输出转换的数据到P1口。处理数据后,调用显示数码管子程序,即将模数转换的结果输出到数码管显示。第四章设计心得 这次设计尤其是在编写程序部分是一个比较大的挑战。其中遇到了许多困难。刚开始时,我对整个软件的操作都显得不那么的熟悉。而后,在如何选择芯片上遇到了困难。我不知道应该是基于什么样的标准去选择芯片。所以最后我选择了我们常用的的芯片。在设计电路时,有时需要给一个上拉电阻,有时又不需要,这也只有在一步一步的仿真后,通过观察相应端口的高低电平来判断的。对于很少编程的我是努力的不断的

16、看程序,不断的模仿,不断的设计,不断的改进,才最终设计完此次实验。在面对问题时,我们应该选择积极的态度去面对,是积极的去解决问题,查资料,一步步弄明白,而不是选择消极的方式去处理。最后,通过这次实验,我逐步掌握了PROTEUS的用法。这对今后的设计工作带来一些方便。参考文献:1 李建忠.单片机原理及应用. 西安:西安电子科技大学出版社,20082侯玉宝、陈忠平、李成群等.基于Proteus51系列单片机设计与仿真北京:电子工业出版社,20083 江世明. 基于Proteus的单片机应用技术北京:电子工业出版社,20094 杨欣、王玉凤、刘湘黔. 51单片机应用从零开始北京:清华大学出版社,2009

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1