单片机控制数码管程序设计数码管滚动显示控制

/*  名称:数码管显示拨码开关编码

//各数字的数码管段码(共阴)

1 / 37 单片机控制数码管数码管显示实驗总结 数码管动态显示实验 一、实验要求 1. 在 Proteus 软件中画好 51单片机控制数码管最小核心电路包括复位电路和晶振电路 2. 在电 路中增加四个 7段数碼管 共阳 /共阴自选 ,将 P1口作数据输出口与 7 段数码 管数据引脚相连 , 引脚输出选控制信号 3. 在 Keil软件中编写程序 ,采用动态显示法 ,实现数码管显示变量 unsigned int show_value 的值即把 show_value 的千百十个位的值用数码管显示出来。 二、实验目的 1. 巩固 Proteus软件和 Keil软件的使用方法 2. 学习端口2 / 37 输入输出的高级应用 3. 掌握 7 段数码管嘚连接方式和动态显示法 4. 掌握查表程序和延时等子程序的设计 三.实验说明 如下图所示由 P1 口将要显示的数字输给七段数码管;再由 P2 第四位输给数码管的公共端,作为扫描输入信号;用外部中断和分别接 PB1 与 PB2实现数字的增减。所要实现的功能是开始运行电路功能图时,四個数码管分别显示0000按下 PB1 增 1,直到 9999 回到 0000相反按下 PB2减 1,直到 0000回到 9999 在算相关数据时,由于要显示个十百千的不同数字要调用disp 函数, disp[0]show/1000; //显示個位的值 } 五.实验总结 实验过程中遇到的问题及解决方法、体会 问题 1运行电路原理图时数码管都不亮。 解决方法定义 IE 寄存器时没有开啟总开关 EA,导致数码管不能正常显示数字 问题 2按下 PB1 或 PB2,数码管乱码 解决方法 因为使用了两个外部中断,所以 INT0 和 INT1 都要开启在声明 INT0 和 INT1时,起初写成 if; show--;if;show;而应该是 if;show; if;show--;最电路原理图能正常显示 8 / 37 体会 科学的魅力太强大了,从之前的一个数码管亮 09现在只要你想要几个数码管煷就可以接几个,写入正确的程序就能实现你想要的效果。程序一直在增多实现的功能也在无穷的变换着,越来越觉得单片机控制数碼管实现的功能在生活中也随处可见。 微机实 验报告 LED数码管显示实验 指导教师 专业班级 姓名 学号 联系方式 一、 任务要求 实验目的理解 LED七段数码管的显示控制原理掌握数码9 / 37 管与 MCU 的接口技术,能够 编写数码管显示驱动程序;熟悉接口程序调试方法 实验内容利用 C 单片机控制數码管控制数码管显示器 基本要求 利用末位数码管循环显 示数字 0-9,显示切换频率为 1Hz 提高要求 在 4 位数码管显示器上依次显示当天时期和时間,显示格式如下 yyyy 年份 思考题 数码管采用动态驱动方式时刷新频率应如何选择为什10 / 37 么 二、 设计思路 C 单片机控制数码管片上晶振为 ,采用 8 分频後为 输入时钟信号采用 48个机器周期。 0 到 9 对应的断码为 FCH、 60H、 DAH、 F2H、 66H、 B6H、 BEH、E0H、 FEH、 F6H 基础部分 由于只需要用末位数码管显示不需要改变位码,所鉯只需要采用 LED的静态显示采用查表的方法,通过循环结构每次循环查找数据表下一地址,循环十次后重新开始循环每次循环延时 1s,采用定时器 0定时方式 1 提高部分 四个数码管都要显示,所以采用 LED的动态显示由于数码管的位选由、控制, P0 端口的其他引脚都没用到所鉯对P0 端口初始化赋 00H,每次循环加 40H、选中下一位四次后十六进制溢出, P0端口变又为 00H回到第一个数码管 11 / 37 每位数码管显示 一个段码后都延时 1ms采用定时器 0定时方式 1,依然采用查表法改变段码值通过循环 DJNZ R5,BACK MOV R5,250 DJNZ R4,BACK MOV R4,8 来控制每种模式的切换时间,我采用 2s切换一次 切换 模式,可以采用改变查表法的偏移量来实现没切换一次模式,偏移量加 04H三次后回到初始偏移量,来实现三种模式的循环显示 三、 资源分配 基础部分 、控制數码管的位选 P1控制数码管段码的显示 12 / 37 R0控制段选 提高部分 、控制数码管的位选 P1控制数码管段码 的显示 R0控制位选 R1控制段选 R3用于改变偏移量来切換模式 R4、 R5控制 循环次数,控制模式切换时间 while1 { judge; xianshi; } return 0; } 五、实验步骤 六、附录 21 / 37 一、实验目的 1、在之前单 键实验和中断控制数码管 “ 静态 ” 显示实验的基础上把单键判断、数码管显示和中断结合起来编写中断程序实现单键控制一位数码管; 2、在实现控制一位数码管显示的基础上用单键控制两位数码管显示。 二、实验所需器材与软件 硬件电脑、传输线、 AT89S52单片机控制数码管 软件编程软件 Keil uVision3;读写软件 MePro 三、实验程序的及其分析 1、单键控制一位数码管显示 主要设计思路在中断主程序后加入单键判断键按下情况判断语句把数码管显示程序放在中断子程序中。当有鍵按下22 / 37 且有中断请求时重新给数码管显示偏移地址赋值,从而改变显示内容 程序 ORG 0000H AJMP MAIN ;转向主程序 ORG R7,LOOP6 DJNZ R5,LOOP5 RET 2、单键控制两位数码管显示 设计思路用兩个寄存器分别存放数码管显示的个位和十位,并且在数码管显示程序中用移位指令对数码管的位码进行移位使每次执行中断程序时显礻一位数,循环两次中断程序后 “ 静态 ” 显示两位数字 程序 ORG 0000H 26 / 37 AJMP MAIN ORG 001BH AJMP T_INT MAIN R5,LOOP5 RET 四、实 验结果分析 经过艰辛的调试工作,单键的按下判断程序能成功区分抖動键实现按下与否判断,一位数码管和两位数码管显示均能31 / 37 按预定要求工作但两位数码管显示程序设计逻辑有局限性,在自己所设计邏辑的模式下难以向上扩展要实现三位以上数码管显示时有很大困难。 五、实验心得体会 每一次的实验内容都是在之前实验基础上进行嘚因此,从多次实验经验来看要想顺利完成当次实验,课前回顾之前所做实验内容也是颇为重要的在写程序时应先想好程序设计基夲思路,避免在原来的程序模板中漫无目的地插入程序靠投机取巧实现实验要求,每次在实验中都有深深的体会在编程序前想好思路,然后循着思路琢磨着怎么实现会比较容易且能更好掌握程序逻辑结构,免得实现了实验要求自己却看懂所写的程序。在这次实验中虽然实现了两位数码管的显示,但是数码管显示的个位和十位是通过存放在两个寄存器中实现的再向上扩展至多位数码管显示却是难鉯实现,因此不是一个优良的程序结构这也是这次实验最难突破的难点。 注 1、报 告内的项目或内容设置可根据实际情况加以调整和补充。 32 / 37 2、教师批改学生实验报告时间应在学生提交实验报告时间后 10日内 实验五 串行口静态显示 一.实验 目的 1.学习用单片机控制数码管的串行口扩展 74LS164 实现静态显示方法。 2.学习用单片机控制数码管 I/O 口模拟串口工作实现静态显示的编程方法 3.掌握静态显示的编程方法和数码管显 示技术。 二.实验任务 1.根据共阳数码管的功能结构自编一组 0F 的笔形码,并按顺序存放建立程序数据表格 2.利用单片机控制数码管串行口扩展 74LS164,完成串 --并转换输 出实现静态显示要求循环显示 0~ F 这数字,即输出数字“0” 时四位同时显示 0,显示 1 秒后再输出数字 “1” 33 / 37 即四位同时显示 1, 依次类推相当于数字自检循环显示。 3.利用单片机控制数码管串行口编写静态显示程序在数码显示器上30H、 31H 单元的內 容, 30H、 31H 单元为任意的十六进制数 4.用、 分别替代 RXD、 TXD 做模拟串口完成任务 3 的静态显示程序。 三.实验电路 静态显示实验电路 连线方法静態显示只要连接 2 根线单片机控制数码管的 RXD 与 DAT 节点连接 TXD 与 CLK 接点连 接,要把电源短路片插上PW11 是电源端。 四. 实验原理说明 1.静态显示实际仩动态的过程静态的显示,单片机控制数码管串行口输出的数据通过 74LS164 串并转换 34 / 37 输出每输出一个数据,把原先的的数据推挤到下一个显礻位上显示实验时,单片机控制数码管串行口应工作在方式 0 RXD 输出串行数据, TXD 输出移位时钟在移位时钟的作用下,串行口发送缓冲器嘚 数据一位一位地从 RXD 移入到 74LS164 中并把后面送入的数据推挤原先的数据到下一个级联的74LS164 中输出,每输出一个数据可以延时 1ms实验时,通过改變延时时间可以更清楚地观察到数据推挤的过程。 2.串行口工作在方式 0 时串行传输数据为 8 位,只能从RXD 端输入输出 TXD 端用于输出移位同步时钟信号,其波特率固定为振荡频率的 1/ 12由软件置位串行控制寄存器SCON 的 REN / 37 ,D0H,38H,3CH 五.程序流程图和资源分配 1.编程思路 单片机控制数码管串行口應工作在方式 0, RXD 输出串行数据 TXD输出移位时钟。使用 R0 作指针将 30H单元指向 R0.采用查表方式,先取单元中低字节查表后发送内容,再取单元高字节再发送。再指针加 1重复上述。 2.算法流程图 3.资源分配 用 R0作指针 R7 作控制显示数 4.程序设计 ORG 30H和 31H中分别置数 12H和 34H,数码管显示 3412结果正确。 2.总结 37 / 37 问题 1数码管显示数据错乱 解决办法笔形码错误,改正笔形码 体会以前只在生活中看到过数码管显示数据,这次试验通过自己从編程到接线 再到自己调试,把生活中看到的通过自己的动手和理论分析将它实现了科学的魅力极大啊。以后一定得努力学习科学知识

你这数码管驱动的接法有点怪

你嘚仿真图有点问题1,P0口要加上拉电阻用一个排电阻。

2两个74LS373的LE控制端,直接用单片机控制数码管的2个脚控制就行了吗何必用74LS138呢,而138卻用了单片机控制数码管的6个脚反倒多用了4个,这不是即浪费又麻烦吗这是跟谁学的这种做法。

你这数码管驱动的接法有点怪

你的仿嫃图有点问题1,P0口要加上拉电阻用一个排电阻。
2两个74LS373的LE控制端,直接用单片机控制数码管的2个脚控制就行了吗何必用74LS138呢,而138却用叻单片机控制数码管的6个脚反倒多用了4个,这不是即浪费又麻烦吗这是跟谁学的这种做法。

求救啊!单片机控制数码管AT89C51 8位8段LED数码管(共阴)動态显示0到7_ —— 朋友,这个很简单.驱动8位8段数码管并不难.不管共阴还是共阳,都能做.动态显示:先只开启一个数码管,往数码管送数据,关闭这个数碼管,再开启另外一个数码管,送数据,以此类推,循环往复,给各个数码管送数据.不懂可以追问!!

如何使用单片机控制数码管at89c51驱动4位8段数码管,如果用箌芯片来驱动的,电路图如何连接? —— <p>看你将四位数码管接在单片机控制数码管的哪一组输出口 例如51单片机控制数码管一般都是四组八位输i/oロP0,P1,P2,P3口 一般P0口是三态i/o是要接上拉电阻的.其他接口是不用接上拉电阻的.上拉电阻一般选用1k~4k7都可以保证各管脚输出的电流小于500mA...

我要回帖

更多关于 单片机控制数码管 的文章

 

随机推荐