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

上传人:牧羊曲112 文档编号:5076931 上传时间:2023-06-02 格式:DOCX 页数:25 大小:153.34KB
返回 下载 相关 举报
单片机课设数码管显示滚动控制.docx_第1页
第1页 / 共25页
单片机课设数码管显示滚动控制.docx_第2页
第2页 / 共25页
单片机课设数码管显示滚动控制.docx_第3页
第3页 / 共25页
单片机课设数码管显示滚动控制.docx_第4页
第4页 / 共25页
单片机课设数码管显示滚动控制.docx_第5页
第5页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机课设数码管显示滚动控制.docx》由会员分享,可在线阅读,更多相关《单片机课设数码管显示滚动控制.docx(25页珍藏版)》请在三一办公上搜索。

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

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

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

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

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

6、L2 -晶体振荡电路反相输入端和输出端控制线: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编程期间,施加 编程电源Vpp。I/O线:4个8位并行I/O端口: P0、P1、P2

7、、P3 口,共32个引脚。P3 口 还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。图89c51引脚图2.四位一体七段共阴极显示数码管图数码管引脚图三、系统原理图设计与仿真系统仿真图图系统仿真图系统仿真结果图系统正在运行图系统正在运行四、程序设计程序设计数码管动态显示程序包含显示数字、部分字母符号、小数点、数码管闪 烁、数码管消隐等。其它程序输出到显示程序的数据既可以是BCD码、二进制码、 ASCII码、自定义显示码等。由硬件电路工作原理可知,为了显示稳定的数据, 每秒必须显示数据50次以上,才能达到预期目的。MCS-51单片机内部有两个16位可编程的定时器/计数器T0和T1。它

8、们即 可用作定时器方式,又可用作计数器方式。其中T0由TH0和TL0计数器构成; T1由TH1和TL1计数器构成。工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计 数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接 影响定时时间。如果晶振频率为12MHZ,则定时器每隔(1/12MHZ)X12=1us加 1。工作于计数器方式时,对 或 管脚的负跳变(10)计数。它在每个机器周 期的S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期 为低时,计数器加1。因此需要两个机器周期来识别一个有效跳变,故最高计数 频率为晶振频率的1/24。特殊功能寄存

9、器TMOD用于定时器/计数器的方式控制。高4位用于设置T1, 低4位用于设置T0。单片机内部定时器/计数器的使用,简而概之:(1)如需用 中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD 设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出 后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或 TF1进行判断。程序流程图图主程序图五、系统调试系统硬件调试在领完课程设计所需的元器件并检查是否是自己所需要,并且根据电路原理 图进行电路板的焊制,在焊接过程中注意不要虚焊和短路。焊接完成后首先对电 路板上的线路进行检查是否有错漏

10、和重复。并且用万用表测试电路中有无虚焊短 接的情况。在测试无误后,向单片机烧录程序,并接通电源进行测试。在第一次上电过程中,数码管并没有显示出如期的结果,用万用表对焊接点 进行再一次的排查并对线路进行检查,发现单片机底座有几个虚焊点,并重新对 其进行焊制。系统软件调试在keil编译器下进行程序的编写,以子程序为单位进行调试,并且利用 proteus软件进行仿真实验并结合电路板进行整机调试。六、总结与体会此次的课程设计是基于单片机的数码管滚动显示控制。单片机是自动化的重 要课程,学习的时候十分用心,也同时也为这次的课程设计打下了理论基础。但 是由于学习到的更多涉及于课本知识并没有灵活的掌握,所以

11、说在设计的过程中 也需要不断的翻阅书籍,以此来达到完成顺利完成课程设计任务,在这段学习与 制作的过程中巩固了我在课堂上学习到的内容,而且锻炼到了我个人的自我学习 能力及制作能力。在课程设计最开始是做Proteus仿真,从最小系统开始做。单 片机最小系统是指用最少的元件组成的单片机可以工作的系统。应该包括:单片 机、晶振电路、复位电路等。我上学期做过数电的课程设计所以这次看到器件这 么少电路图这么简单还觉得很高兴。然而做完仿真开始焊接时才发现从单片机芯 片出来的连接数码管的线路在仿真中隐藏了只留下了引脚,导致我在焊接的时候 一下多了十多根线打乱我的节奏,好在最后还是踉踉跄跄地焊完了。在第一次调

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

13、虚焊的。每一次的课程设计对我都是一种拔高跟历练,在 一次次的课程设计中我会不断地进步,提升自己的解决问题的能力,跟动手焊接 能力,还有故障排查能力,做课程设计固然需要智慧然而坚持跟耐心也是很关键 的,这几样缺一不可,否则很难做出成功的作品。我相信我会一步步地慢慢变好 变强。附录附录二#include/-定义使用的io 口-/#define GPIO_DIG P2段选#define GPIO_PLACE P0位选sbit k =P10;/-定义全局变量-/unsigned char code DIG_PLACE8 = (0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7

14、f;/位选控制查表的方法控制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;用来存放要显示的8位数的值/-声明全局函数-/void Displaykey();void Runkey();void first();void step1();void step2();void step3();vo

15、id 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_CODEa;存放段码first(); /设置定时器初值和工作方式while(1)(Displaykey();/扫描按键Runkey();执行相对应的按键步骤/*函数名:first()*函数功能:设置初值*/void first()(

16、TMOD=0x01;设置T0为定时器 工作方式0TH0=(65536-20000)/256;TL0=(65536-20000)%256;设置计数器初值,定时时间为20msIE=0x82;允许定时器0中断/* 函数名:Displaykey();*函数功能 :按键扫描*/void Displaykey()(if(k=0)TR0=1;/启动定时器03st*/*si* 函 数名:void time0() interruptl using 1*函数功能 :定时器0*/void time0() interrupt 1 using 1(unsigned char a;TH0=(65536-20000)/25

17、6;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)case 1: i=0;break;/设置步骤1的初值a+;case 2: i=7;casecase3:4:while(a=20)20ms*50=1sa=0;i=0;i=3;break;/设置步骤2的初值i1=7; break;i1=4; break;设置步骤3的初值设置步骤4的初值/利用定时器进行延时延时时间为dela

18、y=1;TR0=0;延时结束标志位关闭定时器*函数名:Runkey();*函数功能:按键执行和选择/* * */ void Runkey()switch(step)case 1: step1(); break;case 2: step2(); break;case 3: step3(); break;case 4: step4(); break;/*函数名:stepl*函数功能:右扫程序*/void step1()(GPIO_PLACE = DIG_PLACEi;发送位选GPIO_DIG = DisplayDatai;发送段码j = 10;扫描间隔时间设定while(j-);GPIO_DIG

19、= 0x00;/消隐TR0=1;/开定时器延时while(delay=1)(delay=0;i=i+1;延时时间到,数码管位选移动while(i=8)i=0;3st*/*si*函数名: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*函数功

20、能:内缩程序*输入:无*输出:无*/void step3()(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=

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号