单片机数码管显示小数点技术解析与程序示例

18 下载量 148 浏览量 更新于2023-05-12 1 收藏 45KB PDF 举报
"单片机怎么显示小数点?数码管小数点显示程序" 在单片机编程中,数码管是一种常见的显示设备,用于显示数字、字母和其他字符。当需要在数码管上显示带有小数点的数值时,通常会采用共阴极或共阳极的数码管,并通过特定的控制方法来实现小数点的点亮或熄灭。本文将详细介绍如何在单片机中编写数码管小数点显示的程序。 数码管一般由7个LED段组成,分别对应数字0到9的各个笔画,外加一个小数点段,总共8个段。对于共阴极的数码管,当某段的控制引脚为高电平时,该段LED熄灭;为低电平时,该段LED点亮。反之,对于共阳极的数码管,控制引脚为低电平点亮LED。小数点的控制同样如此,但通常它与数字段独立控制。 在上述程序中,数码管的段码(段码值)和位码(位选)是分开存储的。段码表示每个数字的7个LED段是否点亮,而位码则决定数码管的哪一位应该被激活。例如,`DuanMa[]`数组存储了0到9的段码,而`WeiMa[]`数组则对应各个数码管位的点亮状态。 为了显示带有小数点的数字,如2.,我们需要在不影响数字2显示的情况下点亮小数点。这可以通过与操作实现。假设数字2对应的二进制码为0x5B(不包括小数点),小数点的二进制码为0x80,将两者进行逻辑或操作(|),得到的结果0xDB包含了数字2的段码和小数点的控制位。因此,向数码管发送这个结果就能同时显示2和小数点。 在给出的代码示例中,`Display`函数负责将数值转换为数码管的段码和位码,并通过`LATCH1`和`LATCH2`引脚发送到数码管。`TempData[]`全局变量用于存储待显示数值的段码,其中`TempData[1]`的计算使用了模运算(%)和位或运算(|),将小数点的位码0x80与数字部分的段码相或,确保小数点被点亮。`main()`函数中的循环则实现了数值的动态更新,每200毫秒(可根据需求调整)加1,并限制在0到999之间,使得数码管上的显示不断变化。 单片机显示小数点的关键在于理解数码管的工作原理,以及如何通过位操作控制小数点的状态。通过精心设计的程序和适当的硬件接口,可以在数码管上实现任意数字和小数点的动态显示。
2011-06-09 上传
子情境1:简单实例助你快速掌握PROTEUS的用法 12 1.1 子情境内容:让单片机动起来,用单片机控制一个LED灯闪烁发光。 15 1.2 子情境目标: 15 1.3 子情境步骤 15 1.3.1步骤一: PROTEUS电路设计 15 1.3.2步骤二:源程序设计与生成目标代码文件 20 (1)程序流程图 20 (2)源程序设计 21 1.3.3 步骤三:PROTEUS仿真 22 1.4 扩展练习 24 子情境二:用发光二极管实现流水灯乒乓球效果 25 2.1 子情境目标: 25 2.2 子情境步骤 25 2.2.1 步骤一: PROTEUS电路设计 25 2.2.2步骤二:源程序设计与目标代码文件生成 26 (1)程序流程图 26 (2)源程序设计 27 2.2.3 步骤三:PROTEUS仿真 29 2.4 扩展练习 29 子情境三:数码管动态扫描 30 3.1子情境内容:利用动态扫描让四位数码管稳定的显示1234。 30 3.2 子情境目标: 30 (1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电 30 3.3 知识点链接 30 3.4 任务步骤 31 3.4.1 步骤一:PROTEUS电路设计,单片机控制四位共阴极数码管动态扫描显示的原理图如图5-17所示。 31 3.4.2 步骤二:源程序设计与目标代码文件生成 33 (1)程序流程图 33 (2)源程序设计 33 3.4.3 步骤三:PROTEUS仿真 35 3.5 扩展练习 36 子情境四:定时/计数器的使用——方波发生器 37 4.1子情境内容:用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。 37 4.2 子情境目标: 37 4.3 知识点链接 37 4.4.1 步骤一:PROTEUS电路设计,实现周期为2s的方波的原理图如图5-22所示。 37 (1)程序流程图 38 (2)源程序设计 38 4.4.3 步骤三:PROTEUS仿真 39 4.5 扩展练习 41 子情境五:单片机外部中断仿真 42 5.1子情境内容:外部中断是单片机的重要内容,本子情境用外部中断功能改变流水灯和数码管的显示状态。 42 5.2 子情境目标: 42 (1)理解单片机的中断原理及中断过程 42 (2)用PROTEUS设计、仿真单片机的外部中断。 42 5.3 知识点链接 42 5.4 任务步骤 42 5.4.1 步骤一:PROTEUS电路设计,实现外部中断功能改变流水灯和数码管的显示状态的原理图 42 5.4.2 步骤二:源程序设计与目标代码文件生成 43 (1)程序流程图 43 (2)源程序设计 43 5.4.3 步骤三:PROTEUS仿真 45 5.5 扩展练习 47 主程序中数码管从0至9顺序显示数字,中断发生后(在单片机P3.2引脚上有低电平),数码管从9至0反序显示。 47 子情境六:直流电机正反转 48 6.1子情境内容:用单片机AT89C51控制直流电机正反转。 48 6.2 子情境目标: 48 (1)掌握趋动电机正反转的电路 48 (2)用PROTEUS实现电机正反转电路的设计,并进行实时交互仿真 48 6.3 知识点链接 48 6.4 任务步骤 48 6.4.1 步骤一:PROTEUS电路设计,实现用单片机AT89C51控制直流电机正反转原理图 48 6.4.2 步骤二:源程序设计与目标代码文件生成 50 (1)程序流程图 50 (2)源程序设计 51 6.4.3 步骤三:PROTEUS仿真 52 6.5 扩展练习 53 子情境七:用ADC0809实现电压表 55 7.1子情境内容:利用单片机AT89C52和ADC0809设计一个数字电压表,能够测量0-5V之间的电压值,用四位数码管显示。 55 7.2 子情境目标: 55 (1)掌握PROTEUS中电压探针和电压表的使用方法 55 (2)通过制作简易电压表,学会AD转换芯片在单片机应用系统中的硬件接口技术和编程方法。 55 7.3 知识点链接 55 了解ADC0809芯片的功能以及使用方法 55 (1)功能:ADC0809芯片为8通道模/数转换器,可以和单片机直接接口,将IN0~IN7任何一通道输入的模拟电压转换成八位二进制数,在时钟为500KHZ时,一次变换时间约为100us。 55 (2)使用方法:28脚双列直插式封装如图5-39所示,各引脚功能如下: 55 7.4 任务步骤 56 7.4.1 步骤一:PROTEUS电路设计,利用单片机AT89C52和ADC0809设计一个数字电压表的原理图如图5-40所示。 56 7.4.2 步骤二:源程序设计与目标代码文件生成 58 (1)程序流程图 58 (2)源程序设计 59 7.4.3 步骤三:PROTEUS仿真 62 7.5 扩展练习 66 子情境八:1602液晶显示器 67 8.1子情境内容:利用单片机AT89C52控制液晶显示器(Liquid Crystal Display,简称为LCD)实时显示。在1602液晶的第一行显示“I LOVE MY FAMILY”,在第二行显示“WWW.YZCIT.CN”。 67 8.2 子情境目标: 67 (1)掌握1602液晶与单片机的接口电路 67 (2)通过控制LCD,学会LCD液晶模块在单片机应用系统中的编程方法。 67 8.3 知识点链接 67 了解LCD1602芯片的功能以及使用方法 67 (1)功能:本情境中所使用的液晶显示器型号为1602,意思是每行显示16个字符,一共可以显示两行。此液晶只能显ASCII字符,如数字、大小写字母、各种符号等。 67 (2)使用方法:1602液晶的引脚图 67 8.4 任务步骤 68 8.4.1 步骤一:PROTEUS电路设计,利用单片机AT89C52控制液晶显示器实时显示的原理图如图5-46所示。 68 8.4.2 步骤二:源程序设计与目标代码文件生成 69 (1)程序流程图 69 (2)源程序设计 69 8.4.3 步骤三:PROTEUS仿真 71 8.5 扩展练习 72 子情境九:简易秒表制作 73 9.1子情境内容:制作简易秒表,利用按键构成键盘实现秒表的启动、停止与复位,利用LED数码管显示时间。 73 9.2 子情境目标: 73 (1)通过简易秒表的制作,进一步熟悉LED数码管与单片机的接口电路 73 (2)学习定时/计数器、中断技术的综合运用并会使用简易键盘 73 9.3 知识点链接 73 9.4 任务步骤 73 9.4.1 步骤一:PROTEUS电路设计,简易秒表的原理图如图5-51所示。 73 9.4.2 步骤二:源程序设计与目标代码文件生成 74 (1)程序流程图 74 (2)源程序设计 76 9.4.3 步骤三:PROTEUS仿真 79 9.5 扩展练习 81 此子情境设计的秒表只能显示两位整数,如果要记录110跨栏12:88秒的成绩,则必须再增加两位数码管来显示小数位。想想硬件和软件应该做如何改动。 81 子情境十:点阵LED简单图形显示技术 82 10.1子情境内容:利用单片机AT89C52在8×8点阵上逐次显示心形、圆形和菱形图。 82 10.2 子情境目标: 82 (1)通过学习点阵LED显示技术,掌握单片机与点阵的接口电路。 82 (2)进一步熟悉单片机I/O口的运用方法,了解动态显示的编程方法 82 10.3 知识点链接 82 10.4 任务步骤 83 10.4.1 步骤一:PROTEUS电路设计,LED点阵的原理图如图5-56所示。 83 10.4.2 步骤二:源程序设计与目标代码文件生成 84 (1)程序流程图 84 (2)源程序设计 85 10.4.3 步骤三:PROTEUS仿真 87 10.5 扩展练习 88