51开发板数码管:固定显示\闪烁显示\走灯显示“--8051--“,字符可以任意更改,较为灵活

简介: 51开发板数码管:固定显示\闪烁显示\走灯显示“--8051--“,字符可以任意更改,较为灵活

要在51单片机开发板上面实现的效果:

1、数码管固定显示"--8051--"约5s时间。

2、闪烁显示"--8051--"5次。

3、向左移动走字显示"--8051--"3遍。

4、重复执行1~3。

 

实现代码:(c语言)

#include <REGX51.H>
#include <intrins.h>
typedef unsigned int uint;
typedef unsigned char uchar;
 
uchar count=0;      //定时器计数
uint flag=0;        //开始为 第一小题
 
void Timer0Init(){    //50毫秒@12.000MHz
 
  TMOD &= 0xF0;   //设置定时器模式
  TMOD |= 0x01;   //设置定时器模式
  TL0 = 0x00;   //设置定时初值
  TH0 = 0x4C;   //设置定时初值
  TF0 = 0;        //清除TF0标志
  TR0 = 1;        //定时器0开始计时
    ET0=1;              //打开小开关
  EA=1;               //打开总开关   
}
 
void Delay(unsigned int ms) {
/*延时函数    参数:延时的毫秒数*/
  while(ms--){
    unsigned char i, j;
    _nop_();
    i = 2;
    j = 199;
    do{ 
           while (--j);
    } while (--i);
  }
}
 
void Display(int position,char value){
/*显示模块   参数:字符串*/
        switch (position){//位选
          case 8:P2_4=0;P2_3=0;P2_2=0;break;//第一位 
          case 7:P2_4=0;P2_3=0;P2_2=1;break;//第二位
          case 6:P2_4=0;P2_3=1;P2_2=0;break;//第三位
          case 5:P2_4=0;P2_3=1;P2_2=1;break;//第四位
          case 4:P2_4=1;P2_3=0;P2_2=0;break;//第五位
          case 3:P2_4=1;P2_3=0;P2_2=1;break;//第六位
          case 2:P2_4=1;P2_3=1;P2_2=0;break;//第七位
          case 1:P2_4=1;P2_3=1;P2_2=1;break;//第八位
        }
 
        switch(value){//段选,可以用数组来代替这里的选择
          case '0': P0=0x3F; break; //数值0
          case '1': P0=0x06; break; //数值1
          case '2': P0=0x5B; break; //数值2
          case '3': P0=0x4F; break; //数值3
          case '4': P0=0x66; break; //数值4
          case '5': P0=0x6D; break; //数值5
          case '6': P0=0x7D; break; //数值6
          case '7': P0=0x07; break; //数值7
          case '8': P0=0x7F; break; //数值8
          case '9': P0=0x6F; break; //数值9
          case'a': case 'A': P0=0x77; break;  //数值a  两个case兼容大小写
          case'b': case 'B': P0=0x7C; break;  //数值b
          case'c': case 'C': P0=0x39; break;  //数值c
          case'd': case 'D': P0=0x5E; break;  //数值d
          case'e': case 'E': P0=0x79; break;  //数值e
          case'f': case 'F': P0=0x71; break;  //数值f
          case '-': P0=0x40; break; //数值- 
          case '.': P0=0x80; break; //数值. 
          case ' ': P0=0x00; break; //无显示 
        }
 
        Delay(1);P0=0x00;//消影       
}
 
void main(){
 
    char display[8]="--8051--"; 
    int i,j=5,k=3,b;
    int num=3;
    Timer0Init();//初始化,并开启定时器
    for(num=0;num<3;num++){
        TR0 = 1;//启动定时器
        while(flag<5){//显示5s
            for(i=1;i<=8;i++){
              Display(i,display[i-1]);
            }
        }
        TR0 = 0;//关闭定时器
        count=0,flag=0;//清空计数,不影响下次循环的显示时间
        
       for(j=0;j<5;j++){    //闪烁5次
         for(b=1;b<50;b++)
             for(i=1;i<=8;i++)
                Display(i,display[i-1]);
        for(b=1;b<50;b++)
             for(i=1;i<=8;i++)
                Display(i,' ');
      }
 
         for(k=0;k<3;k++){  //走字显示3遍
           for(i=1;i<=8;i++)
            for(b=1;b<500;b++)
                Display(i,display[i-1]);
        }   
    }
 
    while(1);//让程序停在这里
}
 
//定时器中断函数
void interrupt_T0()interrupt 1
{
    TL0 = 0x00;   //重新设置定时初值
  TH0 = 0x4C;   //重新设置定时初值
    count++;
    if(count==20){//1秒时间到了
        count=0;     
        flag++; 
    }  
}

只要修改main函数里面字符串数组内容就能修改数码管显示的东西了

开发板电路图

数码管部分:

138 译码器部分:

 

效果图:

 

汇编语言的代码有空会补上~~~~

相关文章
51开发板同一程序实现数码管实现时钟显示、秒表计时。通过独立按键选择模式(时钟/秒表)、时间的重定义
51开发板同一程序实现数码管实现时钟显示、秒表计时。通过独立按键选择模式(时钟/秒表)、时间的重定义
301 3
|
12月前
|
数据采集 JSON 前端开发
JavaScript逆向爬虫实战分析
JavaScript逆向爬虫实战分析
178 4
|
C语言
【51单片机】用汇编语言实现点灯、闪烁
【51单片机】用汇编语言实现点灯、闪烁
299 1
|
Linux 开发工具 数据安全/隐私保护
【Deepin 20 系统】error:driver pcspkr is already registered aborting
解决Deepin 20系统启动时遇到的“error: driver pcspkr is already registered aborting”错误的方法,通过在GRUB引导加载器中临时更改启动选项进入多用户文本模式,并在系统中创建一个黑名单文件来禁用pcspkr驱动。
643 2
|
存储 C语言
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
226 3
51单片机的延时函数快速生成技巧
51单片机的延时函数快速生成技巧
461 1
|
C语言 C++
vscode——如何在vscode中运行C/C++
vscode——如何在vscode中运行C/C++
167 1
Linux线程总结---线程的创建、退出、取消、回收、分离属性
Linux线程总结---线程的创建、退出、取消、回收、分离属性
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
423 0
|
人工智能 C语言
【51单片机】让AI识别电路图,帮你进行编码(以51单片机为例)
【51单片机】让AI识别电路图,帮你进行编码(以51单片机为例)
785 0