1、INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。从上世纪70年代第一批单片机问世,短短二三十年时间,单片机技术已经成为计算机技术的一个重要分支,广泛运用到工业控制、仪器、仪表、消费产品,汽车、办公自动化和通信等领域。因此,单片机技术已经成为电子、测控、自动化、通信等许多工科专业学生的必备技能。我用AT89C51芯片来设计一个简单的数码管显示。此设计给出了源代码,通过仿真测试,其性能指标达到了设计要求。关键词:单片机,AT89C51,数码管 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的
2、控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。二 设计任务和要求2.1 设计目的1.学习基本理论在实践中综合运用的初步经验,掌握模拟电路设计的基本方法、设计步骤,培养综合设计与调试能力。2.了解AT89C51这个芯片的使用和性能指标测试方法。3.培养实践技能,提高分析和解决实际问题的能力。
3、4了解数码管动态显示的原理及了解74LS164扩展端口的方法。2.2 设计意义 为了更好地熟悉和掌握单片机的基本功能和编程,掌握数码管动态扫描显示原理及实现方法。自我动态扫描显示电路驱动程序的编写方法。通过课程设计,达到理论与实际应用相结合,提高学生对微机硬件结构的软件设计方法的理解,使学生能够根据实际应用,初步实现硬件及软件的设计,对硬件开发有更深层的认识,为今后打软硬件开发,打下坚实的基础。三总原理图及及主要模块的流程图3.1本实验仪提供了8段码数码管LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,采用动态方式显示。8段数码管是由8155的PB0、PB1
4、经74LS164“串转并”后输出得到。6位位码由8155的PA0口输出,经uA2003反向驱动后,选择相应显示位。74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,向显示位选通地址输出高电平就可以点亮相应的显示位。本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为 0e101H。本实验涉及到了8155 I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。3.1七段数码管的字型
5、代码表显示字形gfedcba段码13fh06h25bh a f b g e c d 。dp34fh466h56dh67dh707h87fh96fhA77hB7chC39hD5ehE79hF71h3.2 课程设计电路图如下1 数码管电路图如下 28155键显模块3.2 主要流程图1. 主程序的流程图 1、将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。2、进入KEIL软件界面,点击项目/打开项目在C:KEILUV23000TC51配套实验例程中选择实验一,内有ASM和C51两种程序,进入
6、ASM文件夹打开LED项目文件进入如图所示界面点击“调试/启动/停止调试”,进入调试界面,点击“调试/运行”可看到8段数码管交替显示0F五程序汇编代码如下 主程序和子程序都存放在AT89C51单片机中。主程序的功能是:显示数字。子程序的功能有:延时。程序代码:Num equ 70h ; 显示的数据DelayT equ 75h ; org 0000h ljmp StartLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: 延时子程序 m
7、ov r7, #0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00100000b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #00h movx dptr, a ; 关所有八段管 mov a, r0 mov B, #8 ; 送164DLP: rlc a mov r3, a mov acc.0, c ANL A, #0FDH mov dptr, #DAT164 movx dptr, a m
8、ov dptr, #CLK164 orl a,#02h anl a,#0fDh mov a, r3 djnz B, DLP mov a, r2 显示一位八段管 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop mov a, #0Start: mov dptr,#0e100h mov a,#03h movx dptr,a mov sp, #40h mov Num, #0MLoop: inc Num mov a, Num mov b, aFillBuf: mov a, b anl a, #0fh
9、mov dptr, #LEDMap movc a, a+dptr ; 数字转换成显示码 mov r0,a ; 显示在码填入显示缓冲 inc b cjne r0, #LEDBuf+6, FillBuf mov DelayT,#30DispAgain: call DisplayLED ; 显示 djnz DelayT,DispAgain ljmp MLoop END六程序调试过程及运行结果 通过用Uvision按编译运行没错误后执行但不调试 看到每一步执行结果运行状态的各个内存外存数据变化情况调试菜单如图所示寄存器状图 七结论与心得此次课程设计使我受益良多,在着一周的时间里我我遇到了很多困难,但是通过同学的和老师的帮主都一一解决了,在作品完成的同时我也感觉到自己对嵌入式有了更多的认识和理解,在此真诚的感谢帮助我的同学和老师。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2