327342551 发表于 2024-1-5 08:53:34

本帖最后由 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 = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};      //数码管的码表,此码表为0-9,A-F 没有扩充其他的

u8 Show_Tab = {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;

327342551 发表于 2024-1-5 08:57:38

感谢华北区石小姐帮忙申请的stc32的开发板,最近会重新学习,开新帖。因为工作原因,暂停更新预计13号以后,开新帖
页: 1 2 [3]
查看完整版本: 学习心得STC32位8051单片机原理及C语言程序设计视频教程