C语言课设项目-51单片机-数码管

简介: C语言课设项目-51单片机-数码管

 (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

静态数码管

1.数码管是如何显示出字符

显示器及其接口

共阴数码管码表

开发板数码管电路图  

2.数码管静态显示原理

3.74HC573芯片的使用

4.编写程序

动态数码管

1.数码管动态显示原理

2.芯片的使用

74HC245芯片

74HC138芯片

3.编写动态数码管程序


静态数码管

1.数码管是如何显示出字符

显示器及其接口

单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、TFT液晶显示器等。

LED显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。    

LED数码管根据LED的不同接法可以分为2类:共阴和共阳。

上图(a)为数码管,(b)为两种接法:左边为共阴接法,右边为共阳接法 ,开发板使用的就是共阴接法

共阴数码管码表

使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。我们实验板用共阴LED显示器,根据电路连接图显示16进制数的编码已列在下表。

我们可以用0来举例,当数码管显示0时 ,如下图所示:其中除了g和dp,其余都要点亮,共阴接法二进制则表示为11111100,将其转换为16进制则表示为0x3f

                                           

开发板数码管电路图  

2.数码管静态显示原理

LED显示器工作方式有两种:静态显示方式和动态显示方式。

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。

3.74HC573芯片的使用

1.OE为使能端,当他为低电平的时候, 锁存器开始工作

2.VCC和GND为电源和地端

3.LE为锁存端,当LE为高电平的时候,Q0~Q7都跟D0~D7状态一样,当LE为低电平的时候,Q0~Q7都锁存数据,无论D0~D7怎么变化,Q0~Q7都保持锁存之前的那个状态。

4.编写程序

让8位一体的数码管最后一个显示为0

//让8位一体的数码管最后一个显示为0
#include"reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[]={0x3f,0x05,0x5b,0x4f,0x66,0x6d,
          0x7d,0x07,0x7f,0x6f,0x77,
          0x7c,0x39 , 0x5e , 0x79 , 0x71};
void main()
{ 
  //选择最后一个数码管显示  
  LSA=0;
  LSB=0;
  LSC=0;
  P0=smgduan[0]; //  输入字码,使其显示为0
  while(1);  //通过循环实现按键控制LED
}

动态数码管

1.数码管动态显示原理

动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的

2.芯片的使用

74HC245芯片

是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其他的消费类电子产品中增加驱动

采用CMOS工艺

宽电压工作范围:3.0V-5.0V

双向三态输出

八线双向收发器

封装形式:SOP20、SOP20-2、TSSOP20、DIP20

适用于显示屏及其他数字电路的驱动

74HC138芯片 是一种三通道输入,八通道输出的译码器,主要用于消费类电子产品

采用CMOS工艺

低功耗

工作电压:3.0V-5.0V

封装形式:SOP16

适用于数字电路中的3-8译码功能

3.编写动态数码管程序

//实现数码管的动态显示
#include"reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[]={0x3f,0x05,0x5b,0x4f,0x66,0x6d,
          0x7d,0x07,0x7f,0x6f,0x77,
          0x7c,0x39 , 0x5e , 0x79 , 0x71};
void delay(u16 i)
{
  while(i--);
}
void DigDisplay()
{
  u8 i;
  for(i=0;i<8;i++)
  {
    switch(i)
    {
      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;
    }
    P0= smgduan[i];//点亮后显示相应的字码
    delay(100);//短暂延迟,实现动态效果
    P0=0x00;  //对P0口清零,防止重影
  }
}
void main()
{ 
  P0=~smgduan[0]; //  输入字码,使其显示为0
  while(1)  //通过循环实现按键控制LED
  {
    DigDisplay();
  }
}


相关文章
|
4月前
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
331 1
|
1月前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
32 1
|
2月前
|
C语言
【总结】单片机重点知识总结记录之C语言条件编译(五)
【总结】单片机重点知识总结记录之C语言条件编译(五)
|
4月前
51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)
51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)
197 0
|
4月前
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
146 0
|
4月前
|
算法
51单片机不用定时器的数码管倒计时
51单片机不用定时器的数码管倒计时
|
6月前
|
C语言
C语言实战项目——学生试卷分数统计
C语言实战项目——学生试卷分数统计
|
6月前
|
C语言
C语言学习记录——鹏哥扫雷项目实现及递归展开、记录雷坐标
C语言学习记录——鹏哥扫雷项目实现及递归展开、记录雷坐标
73 0
|
7月前
|
C语言 C++
C语言项目(1)----扫雷小游戏的实现
C语言项目(1)----扫雷小游戏的实现
55 0
|
7月前
|
消息中间件 NoSQL Redis
C语言开源项目分析
本文分析了C语言开源项目Redis,一个用ANSI C编写的高效数据结构服务器。Redis提供丰富数据类型和命令,广泛应用于缓存、消息队列等场景。文章详细介绍了Redis的代码结构,如src目录包含服务器核心代码,deps存储依赖库,tests包含测试用例。重点讨论了事件驱动模型和数据持久化机制,并概述了Redis的技术特点,包括高效的内存管理、灵活的扩展性、优秀的性能和广泛应用场景。通过研究Redis,读者能更好地理解C语言在实际项目中的应用。