MSP430程序库九数码管显示

内容发布更新时间 : 2025/6/1 7:22:03星期一 下面是文章的全部内容请认真阅读。

MSP430程序库<九>数码管显示

数码管也是单片机系统最常用的输出设备之一(还有液晶、发光二极管等)。七段(这里用的是8段,有小数点)数码管可以完成显示0-9数字和一部分的英文字符如:A、b。本文实现的程序完成显示数字和可显示的英文字符;同时完成数码管显示的printf函数的移植,以支持printf的格式化字符等好用的特点(我用的数码管8个排为一排,方便数字等的显示)。

?

硬件介绍:

这里所用到的硬件资源包括8个数码管、和msp430单片机的两个8位IO口(这里用的是P3和P5口,如有改变,可以通过宏定义更改)。

数码管是8个共阴的数码管,a-h 8段通过一个200Ω的电阻接到430单片机的P5口。共阴端是由单片机的P3口控制,单片机的一位IO通过一个三极管接到数码管的共阴端,以完成位选。

单片机的P3口时数码管的位选口,某位为高则选中;P5口时段选口;要数码管显示时,通过P3位选,选中某个数码管亮,P5段选选择8段(a-h)中的那些亮,从而控制某一位显示数字或字符。

要同时显示多个数码管,就要动态扫描;动态扫描时,本程序选用的是由看门狗的中断扫描显示:每1.9ms显示其中的一位,动态扫描显示每一位,从而让数码管看起来是同时亮的。

? 程序实现:

数码管显示首先要有一个数码管显示的断码表(完成数字和字符到数码管段值的表),程序中采用了《MSP430系列单片机系统工程设计与实践》这本书推荐的方式实现的这个数码表:先用宏定义定义每段对应的单片机要输出的段值,然后再实现是个表,当硬件改变时,只需更改前面的每段的段值定义即可,改动的地方少了很多,代码如下:

/*宏定义,数码管a-h各段对应的比特,更换硬件只用改动以下8行*/ #define a 0x01 // AAAA #define b 0x02 // F B #define c 0x04 // F B #define d 0x08 // GGGG #define e 0x10 // E C #define f 0x20 // E C #define g 0x40 // DDDD HH #define h 0x80 //小数点 /*用宏定义自动生成段码表,很好的写法,值得学习*/ /*更换硬件无需重写段码表*/ const char Tab[] = { a + b + c + d + e + f, // Displays \\ b + c, // Displays \ a + b + d + e + g, // Displays \ a + b + c + d + g, // Displays \ b + c + f + g, // Displays \ a + c + d + f +g, // Displays \ a + c + d + e + f + g, // Displays \\ a + b + c,

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi