• 三、单片机学习——数码管实验(共阳)


    实验目的:理解并掌握共阳数码管的显示原理;
         理解并掌握数码管静态显示和动态显示的原理;
    实验模块:   核心板+独立按键模块+数码管模块
    实验内容:(1)数码管静态显示,8 位数码管显示同一个数字;
            (2)数码管动态显示,8 位数码管显示不同的数字;

    模块连接图:

    电路原理图:
       

    数码管内部结构图:

    功能描述: 控制数码管8位动态扫描显示01234567
    硬件连接:  用8位杜邦线将J8与J12连接,2位杜邦线分别将J11_0与J15_DS1、J11_1与J15_DS2连接。

    #include "reg51.h"       //包含头文件
    sbit LE1=P2^0;           //位选573锁存器使能
    sbit LE2=P2^1;           //段选573锁存器使能

    #define uchar unsigned char
    #define uint  unsigned int
    uchar wei;
    uchar   i;
    uchar code dis[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
                       //  0    1    2    3    4    5    6    7   
                         0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//0~F的段码
                       //  8    9    A    B    C    D    E    F 

    //**************************************************************************************************
    //延时函数
    //**************************************************************************************************
    delay(uint time)              //int型数据为16位,所以最大值为65535           
     {
      uint  i,j;                  //定义变量i,j,用于循环语句
      for(i=0;i<time;i++)         //for循环,循环50*time次
         for(j=0;j<50;j++);       //for循环,循环50次
     }
    //**************************************************************************************************
    //动态扫描函数
    //**************************************************************************************************
    scan()
    {
         P1=~wei;                 //由于共阴,低电平来选通某1位,所以需取反
         LE1=1;                   //锁存位
         LE1=0;                   //断开锁存,位选573的Q7~Q0仍保持
         wei<<=1;                 //左移一位
         P1=dis[i];               //0~7的编码
         LE2=1;                   //锁存段码
         LE2=0;                   //断开锁存,段选573的Q7~Q0仍保持
         i++;                     //i加1
         delay(10);               //延时保持一下,延时过大会闪动,延时过小会有暗影   
        
         if(i==8){i=0;wei=0x01;}  //共8位,扫描到第8位时,重新扫描
         
    }
    //**************************************************************************************************
    //主函数
    //**************************************************************************************************
    void main()                   //主函数
    {
         wei=0x01;                //初始化位为0x01,即为最高位
         i=0;                     //初始化段码为0
         while(1)                 //进入while死循环
          {
            scan();               //数码管扫描函数
          }        
    }
  • 相关阅读:
    Eclipse+Maven整合开发Java项目(二)➣webapp3.0以上的Maven项目
    Eclipse+Maven整合开发Java项目(一)➣Maven基础环境配置
    JAVA-ORM框架整理➣Mybatis操作MySQL
    Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库
    Spring MVC基础知识整理➣拦截器和自定义注解
    Spring MVC基础知识整理➣国际化和异常处理
    Spring MVC基础知识整理➣数据校验与格式化
    Spring MVC基础知识整理➣View与Controller数据交互
    面向过程,面向对象,函数式对同一个问题的思考方式
    分享一个简单程序(webApi+castle+Automapper+Ef+angular)
  • 原文地址:https://www.cnblogs.com/breads/p/12684728.html
Copyright © 2020-2023  润新知