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