本帖最后由 327342551 于 2024-1-5 08:55 编辑
昨天晚上改出来的基于三八译码器做的头文件和c文件
- #ifndef __SEG_LED_H
- #define __SEG_LED_H
-
-
- #include "../inc/stc89c52.h" //引用89c52
-
-
- #define LSA P22 // 三八译码器实现选那个数码管
- #define LSB P23
- #define LSC P24
- #define SEG_LED P0 //它来决定数码管上的led的显示
-
- // 定义一个叫 SEG_Select的函数,他需要输入参数,段的值
- void SEG_Select(u8 num);
-
- // 定义一个叫 SEG_Display的函数,他需要输入参数,才输的值为数码管上的段要显示的几个led组成的文字
- void SEG_Display(u8 dat);
-
- // 定义一个叫 SEG_Display_shark 的函数
- void SEG_Display_shark(void);
-
- void display(u8 num);
-
- #endif
-
复制代码
c文件
- #include "seg_led.h"
- //------------------------------变量定义------------------------------
-
- u8 SEG_Tab[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数码管的码表,此码表为0-9,A-F 没有扩充其他的
-
- u8 Show_Tab[8] = {0,0,0,0,0,0,0,15}; //数码管显示的一个数组
- //要显示的内容直接写到这个数组里面,写什么输出什么,这里面的是上面码表的索引,只能输0-15,对应的就是显示码表里面的内容。可以写更牛逼的码表,包含更多的内容
-
-
-
-
-
- // 定义一个叫 SEG_Select的函数,他需要输入参数,段的值
- void SEG_Select(u8 num)
- {
- switch (num)
- {
- case 0:
- LSA=0;LSB=0;LSC=0;
- break;
-
- case 1:
- LSA=1;LSB=0;LSC=0;
- break;
-
- case 2:
- LSA=0;LSB=1;LSC=0;
- break;
-
- case 3:
- LSA=1;LSB=1;LSC=0;
- break;
-
- case 4:
- LSA=0;LSB=0;LSC=1;
- break;
-
- case 5:
- LSA=1;LSB=0;LSC=1;
- break;
-
- case 6:
- LSA=0;LSB=1;LSC=1;
- break;
-
- case 7:
- LSA=1;LSB=1;LSC=1;
- break;
复制代码
|