• 单片机实验--单片机控制数码管


    • 实验目的
    1. 学习单片机程序开发软件Keil uVision的使用方法
    2. 学习单片机控制数码管动态显示的方法
    3. 学习模块化程序设计的方法
    • 实验仪器

    硬件:X86型兼容计算机,单片机开发板;软件:Keil uVision和烧录软件

    • 实验内容
    1. 设计程序控制数码管动态显示需要的数值;
    2. 硬件方案:数码管为共阴极连接,段码端通过锁存器74HC245与IO口(自选)连接,位选端通过译码器74LS138与IO口(自选)连接;
    3. 软件原理:根据锁存器、译码器原理和数码管动态显示原理依次循环送段码和位选信号,通过调整延时时间来进行动态显示。
    4. 要求: 1)在单个数码管上循环显示0-9;

                          2)在左起4个数码管上滚动显示数字“2022”;

                          3)在右起4个数码管上稳定显示数字“HELP”。

     循环显示0-9

    1. #include
    2. #include
    3. unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
    4. void delay(unsigned int t)
    5. {
    6. unsigned int i;
    7. while(t--)
    8. for(i=0;i<125;i++);
    9. }
    10. void main()
    11. {
    12. unsigned char i;
    13. for(i=0;i<5;i++)
    14. {
    15. P1=tab[i];
    16. delay(300);
    17. }
    18. }

    实现数字2022

    1. #include
    2. void delay(unsigned int t)
    3. {
    4. unsigned int i;
    5. while(t--)
    6. for(i=0;i<125;i++);
    7. }
    8. void display(unsigned char dat,unsigned char pos)
    9. {
    10. unsigned char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
    11. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    12. unsigned char poscc[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
    13. P1=seg[dat];
    14. P0=poscc[pos];
    15. delay(200);
    16. }
    17. void main()
    18. {
    19. while(1)
    20. {
    21. display(2,0);
    22. display(0,1);
    23. display(2,2);
    24. display(2,3);
    25. }
    26. }

    实现help的显示就更简单了

    我这里就提一下思路,就不放代码了。

    在seg里面加入H,L,E,P的相应的段码段,显示的时候不要循环就可以了。

  • 相关阅读:
    java ssm勤工助学岗位管理系统
    【老生谈算法】基于Matlab的IIR数字低通滤波器的设计
    SpringBoot启动的时候做了什么(1)
    Linux—系统基础一
    弘辽科技:抖音,正在抛弃张同学
    Linux下动静态库的制作与使用
    while语句的实际应用(1)
    如何查看 Docker 安装的事件历史记录
    Vue2.0+AntvX6—节点 Node
    笔记 vue3如何引入iconfont
  • 原文地址:https://blog.csdn.net/BROKEN__Y/article/details/127461426