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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机课设数码管显示滚动控制.docx

1、单片机课设数码管显示滚动控制单片机设计与实训设计报告 题 目: 数码管滚动显示控制 姓 名: 王伟杰 班 级: 自动化四班 学 号: 2014550430 指导老师: 张莹 提交日期: 2016年10月29日 一、设计题目与要求单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。单片机课程设计题目包含基本部分及扩展部分,基本部分即单

2、片机最小系统部分,扩展部分是对单片机内部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能。1.1设计题目 数码管滚动显示控制1.2设计要求 自制一个单片机最小系统,包括串口下载、复位电路,采用两个四位一体数码管作为显示器件,通过按钮选择实现四种滚动显示模式,例如从左至右,从右至左,内缩,外扩等,滚动信息可以是数字或有意义的英文字符。二、系统方案设计2.1硬件电路设计本设计的硬件电路主要包括的模块有:单片机最小系统、七段数码管显示模块、1.单片机最小系统简介单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单

3、片机、晶振电路、复位电路。结构图如下:图2.1单片机最小系统各部分的功能介绍如下:复位电路:复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。MCS-51单片机的复位电路由片内、片外两部分组成,进行复位操作时,外部电路需在复位引脚RST端产生大于两个机器周期的高电平信号,RST引脚通过片内施密特触发器与复位电路相连(施密特触发器的作用是脉冲整型和抑制噪声)。MCS-51单片机的复位操作有两种方式:上电复位和上电按钮复位。图2.

4、2复位电路图晶振电路(时钟电路): 时钟电路是单片机的心脏,它用于产生单片机工作所需要的时钟信号。单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。单片机的时钟产生方法有内部时钟方式和外部时钟方式,大多数单片机应用系统采用内部时钟方式,本系统采用的亦是内部时钟方式。在MCS-51芯片内部有一个高增益反相放大器,XTAL1、XTAL2引脚分别为该反相放大器的输入端和输出端,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 图2.3时钟电路图2.数码管显示电路图2.4数码显示电路2.3

5、硬件选型及说明1. ST89C51单片机MCS-51把微型计算机的主要部件都集成在一块心片上,使得数据传送距离大大缩短,可靠性更高,运行速度更块。由于属于芯片化的微型计算机,各功能部件在芯片中的布局和结构达最优化,抗干扰能力加强,工作亦相对稳定。因此,在工业测控系统中,使用单片机是最理想的选择。单片机属于典型的嵌入式系统,所以它是低端控制系统最佳器件。8051是MCS-51系列单片机的典型产品。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线:引脚介绍:电源:VCC - 芯片电

6、源,接+5V;VSS - 接地端; 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端控制线: ALE/PROG:地址锁存允许/片内EPROM编程脉冲: ALE功能:用来锁存P0口送出的低8位地址; PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 PSEN:外ROM读选通信号。 RST/VPD:复位/备用电源: RST(Reset)功能:复位信号输入端; VPD功能:在Vcc掉电情况下,接备用电源。 EA/Vpp:内外ROM选择/片内EPROM编程电源: EA功能:内外ROM选择端; Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加

7、编程电源Vpp。 I/O线:4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。图2.5 89c51引脚图2. 四位一体七段共阴极显示数码管图2.6数码管引脚图三、系统原理图设计与仿真3.1系统仿真图图3.1系统仿真图3.2系统仿真结果图3.2系统正在运行图3.3系统正在运行四、程序设计4.1程序设计 数码管动态显示程序包含显示数字、部分字母符号、小数点、数码管闪烁、数码管消隐等。其它程序输出到显示程序的数据既可以是BCD码、二进制码、ASCII码、自定义显示码等。由硬件电路工作原理可知,为了显示稳定的数据,每秒必

8、须显示数据50次以上,才能达到预期目的。MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为12MHZ,则定时器每隔(1/12MHZ)12=1us 加1。工作于计数器方式时,对P3.4 或P3.5 管脚的负跳变(10)计数。它在每个机器周期的S5P2 时采样外部输入,当采样值在这个机器周期

9、为高,在下一个机器周期为低时,计数器加1。因此需要两个机器周期来识别一个有效跳变,故最高计数频率为晶振频率的1/24。特殊功能寄存器TMOD 用于定时器/计数器的方式控制。高4 位用于设置T1,低4 位用于设置T0。单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。4.2程序流程图图4.1主程序图五、系统调试5.1系统硬件调试在领完课程设计所需的元器件

10、并检查是否是自己所需要,并且根据电路原理图进行电路板的焊制,在焊接过程中注意不要虚焊和短路。焊接完成后首先对电路板上的线路进行检查是否有错漏和重复。并且用万用表测试电路中有无虚焊短接的情况。在测试无误后,向单片机烧录程序,并接通电源进行测试。在第一次上电过程中,数码管并没有显示出如期的结果,用万用表对焊接点进行再一次的排查并对线路进行检查,发现单片机底座有几个虚焊点,并重新对其进行焊制。5.2系统软件调试在keil编译器下进行程序的编写,以子程序为单位进行调试,并且利用proteus软件进行仿真实验并结合电路板进行整机调试。六、总结与体会此次的课程设计是基于单片机的数码管滚动显示控制。单片机是

11、自动化的重要课程,学习的时候十分用心,也同时也为这次的课程设计打下了理论基础。但是由于学习到的更多涉及于课本知识并没有灵活的掌握,所以说在设计的过程中也需要不断的翻阅书籍,以此来达到完成顺利完成课程设计任务,在这段学习与制作的过程中巩固了我在课堂上学习到的内容,而且锻炼到了我个人的自我学习能力及制作能力。在课程设计最开始是做Proteus仿真,从最小系统开始做。单片机最小系统是指用最少的元件组成的单片机可以工作的系统。应该包括:单片机、晶振电路、复位电路等。我上学期做过数电的课程设计所以这次看到器件这么少电路图这么简单还觉得很高兴。然而做完仿真开始焊接时才发现从单片机芯片出来的连接数码管的线路

12、在仿真中隐藏了只留下了引脚,导致我在焊接的时候一下多了十多根线打乱我的节奏,好在最后还是踉踉跄跄地焊完了。在第一次调试的时候并没有现象,这令我十分惶恐,仔细检查才发现仿真中21 20引脚的都略去了而这几个针脚正是连接vcc跟地的引脚,后来将它焊上了。给我的启发是以后在做完仿真焊接的时候一定要每个引脚的过,因为仿真中它将芯片的引脚打乱了顺序而且有的引脚也省略了,仿真跟真实的焊接还是不同的。还有就是拿到仿真先别急着焊接,还是要大致地考虑器件的布局跟正反面的走线,提前理清思路焊的时候才能游刃有余,不至于慌忙。而且在制作仿真的过程中也有了瓶颈,大一学的c语言忘得差不多了好在同学的帮助下才解决了问题,另

13、外焊接只是一方面,后续的检测诊断才是关键,不可能一下子焊好就可以使用,在焊接的过程中难免有一些焊点漏焊虚焊的。每一次的课程设计对我都是一种拔高跟历练,在一次次的课程设计中我会不断地进步,提升自己的解决问题的能力,跟动手焊接能力,还有故障排查能力,做课程设计固然需要智慧然而坚持跟耐心也是很关键的,这几样缺一不可,否则很难做出成功的作品。我相信我会一步步地慢慢变好变强。附录一元器件清单器件名称数量Stc89c54单片机1电容若干七段共阴极数码管2电阻若干微动开关2芯片插座3驱动1晶振1附录二#include/-定义使用的IO口-/#define GPIO_DIG P2 /段选#define GPI

14、O_PLACE P0 /位选sbit k =P10;/-定义全局变量-/unsigned char code DIG_PLACE8 = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位选控制 查表的方法控制unsigned char code DIG_CODE17 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char DisplayData8;/用来存

15、放要显示的8位数的值/-声明全局函数-/void Displaykey();void Runkey();void first();void step1();void step2();void step3();void step4();signed char delay;signed char i;unsigned char j;signed char i1;unsigned char step=1;/* 函 数 名 : main* 函数功能 : 主函数*/void main(void) unsigned char a; for(a=0; a8; a+) DisplayDataa = DIG_C

16、ODEa; /存放段码 first(); /设置定时器初值和工作方式 while(1) Displaykey(); /扫描按键 Runkey(); /执行相对应的按键步骤 /* 函 数 名 :first()* 函数功能 : 设置初值*/void first() TMOD=0x01; /设置T0为定时器 工作方式0 TH0=(65536-20000)/256; TL0=(65536-20000)%256; /设置计数器初值,定时时间为20ms IE=0x82; /允许定时器0中断 /* 函 数 名 :Displaykey();* 函数功能 : 按键扫描*/void Displaykey() if

17、(k=0) TR0=1; /启动定时器0 /* 函 数 名 :void time0() interrupt1 using 1* 函数功能 : 定时器0*/ void time0() interrupt 1 using 1 unsigned char a; TH0=(65536-20000)/256; TL0=(65536-20000)%256; /方式1需要重置定时器的初值 if(k=0) /定时20ms去除按键抖动 while(1) if(k=1) break; /判断按键是否弹起 step=step+1; /进入下一个工作方式 if(step=5) step=1; switch(step)

18、 case 1: i=0; break; /设置步骤1的初值 case 2: i=7; break; /设置步骤2的初值 case 3: i=0; i1=7; break; /设置步骤3的初值 case 4: i=3; i1=4; break; /设置步骤4的初值 a+; while(a=20) /利用定时器进行延时 延时时间为20ms*50=1s a=0; delay=1; /延时结束标志位 TR0=0; /关闭定时器 /* 函 数 名 :Runkey();* 函数功能 : 按键执行和选择*/void Runkey() switch(step) case 1: step1(); break;

19、 case 2: step2(); break; case 3: step3(); break; case 4: step4(); break; /* 函 数 名 : step1* 函数功能 : 右扫程序*/void step1() GPIO_PLACE = DIG_PLACEi; /发送位选 GPIO_DIG = DisplayDatai; /发送段码 j = 10; /扫描间隔时间设定 while(j-); GPIO_DIG = 0x00;/消隐 TR0=1; /开定时器延时 while(delay=1) delay=0; i=i+1; /延时时间到,数码管位选移动 while(i=8)

20、i=0; /* 函 数 名 : step2* 函数功能 : 左扫程序*/void step2() GPIO_PLACE = DIG_PLACEi; /发送位选 GPIO_DIG = DisplayDatai; /发送段码 j = 10; /扫描间隔时间设定 while(j-); GPIO_DIG = 0x00; /消隐 TR0=1; while(delay=1) delay=0; i=i-1; /延时时间到,数码管位选移动 while(i=-1) i=7; /* 函 数 名 : step3* 函数功能 : 内缩程序* 输 入 : 无* 输 出 : 无*/void step3() GPIO_PL

21、ACE = DIG_PLACEi; /发送位选 GPIO_DIG = DisplayDatai; /发送段码 j = 10; /扫描间隔时间设定 while(j-); GPIO_DIG = 0x00; /消隐 GPIO_PLACE = DIG_PLACEi1; /发送位选 GPIO_DIG = DisplayDatai1; /发送段码 j = 10; /扫描间隔时间设定 while(j-); GPIO_DIG = 0x00; /消隐 TR0=1; while(delay=1) delay=0; i=i+1; i1=i1-1; /延时时间到,数码管位选移动 while(i1=3) i=0; i1

22、=7; /* 函 数 名 : step4* 函数功能 : 外扩程序*/void step4() GPIO_PLACE = DIG_PLACEi; /发送位选 GPIO_DIG = DisplayDatai; /发送段码 j = 10; /扫描间隔时间设定 while(j-); GPIO_DIG = 0x00; /消隐 GPIO_PLACE = DIG_PLACEi1; /发送位选 GPIO_DIG = DisplayDatai1; /发送段码 j = 10; /扫描间隔时间设定 while(j-); GPIO_DIG = 0x00; /消隐 TR0=1; while(delay=1) delay=0; i=i-1; i1=i1+1; /延时时间到,数码管位选移动 while(i1=8) i=3; i1=4; 附录三图1硬件原理图图2实物图(正面)图3实物图(背面)

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2