89C51七段数码管显示“12345678”

2023-11-15

 1、延时模块

void Delay_ms(unsigned int xms)    //@11.0592MHz延时模块
{
	unsigned char i, j;
	
	while(xms--)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);		
	}
}

2、显示模块

void display(unsigned long number)    //显示模块
{
 	unsigned char tab[8],i;    //声明一个8位数组用来装每一位的断码及循环变量i
	
	tab[0]=number/10000000;            //第一位的断码
	tab[1]=number%10000000/1000000;    //第二位的断码
	tab[2]=number%1000000/100000;      //第三位的断码
	tab[3]=number%100000/10000;        //第四位的断码
	tab[4]=number%10000/1000;          //第五位的断码
	tab[5]=number%1000/100;            //第六位的断码
	tab[6]=number%100/10;              //第七位的断码
	tab[7]=number%10/1;                //第八位的断码

	for(i=0;i<8;i++)    //循环显示
	{
		switch(i)//位选,选择点亮的数码管
		{
			case 0:
				LSC=0;LSB=0;LSA=0; break;    //显示第零位
			case 1 :
				LSC=0;LSB=0;LSA=1; break;    //显示第一位
			case 2 :
				LSC=0;LSB=1;LSA=0; break;    //显示第二位
			case 3 :
				LSC=0;LSB=1;LSA=1; break;    //显示第三位
			case 4 :
				LSC=1;LSB=0;LSA=0; break;    //显示第四位
			case 5 :
				LSC=1;LSB=0;LSA=1; break;    //显示第五位
			case 6 :
				LSC=1;LSB=1;LSA=0; break;    //显示第六位
			case 7 :
				LSC=1;LSB=1;LSA=1; break;    //显示第七位
		}
		P1=duanma[tab[i]];    //P1口输出每位对应的断码
		Delay_ms(1);    //延时一段时间
		P1=0x00;    //消影
	}		 
}

总体代码

#include <REGX52.H>     //头文件
#include <intrins.H>    //包含_nop_()头文件

unsigned char code duanma[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,0x40};    //断码

sbit LSA=P2^0;    //位定义
sbit LSB=P2^1;    //位定义
sbit LSC=P2^2;    //位定义

void Delay_ms(unsigned int xms)    //@11.0592MHz延时模块
{
	unsigned char i, j;
	
	while(xms--)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);		
	}
}

void display(unsigned long number)    //显示模块
{
 	unsigned char tab[8],i;    //声明一个8位数组用来装每一位的断码及循环变量i
	
	tab[0]=number/10000000;            //第一位的断码
	tab[1]=number%10000000/1000000;    //第二位的断码
	tab[2]=number%1000000/100000;      //第三位的断码
	tab[3]=number%100000/10000;        //第四位的断码
	tab[4]=number%10000/1000;          //第五位的断码
	tab[5]=number%1000/100;            //第六位的断码
	tab[6]=number%100/10;              //第七位的断码
	tab[7]=number%10/1;                //第八位的断码

	for(i=0;i<8;i++)    //循环显示
	{
		switch(i)//位选,选择点亮的数码管
		{
			case 0:
				LSC=0;LSB=0;LSA=0; break;    //显示第零位
			case 1 :
				LSC=0;LSB=0;LSA=1; break;    //显示第一位
			case 2 :
				LSC=0;LSB=1;LSA=0; break;    //显示第二位
			case 3 :
				LSC=0;LSB=1;LSA=1; break;    //显示第三位
			case 4 :
				LSC=1;LSB=0;LSA=0; break;    //显示第四位
			case 5 :
				LSC=1;LSB=0;LSA=1; break;    //显示第五位
			case 6 :
				LSC=1;LSB=1;LSA=0; break;    //显示第六位
			case 7 :
				LSC=1;LSB=1;LSA=1; break;    //显示第七位
		}
		P1=duanma[tab[i]];    //P1口输出每位对应的断码
		Delay_ms(1);    //延时一段时间
		P1=0x00;    //消影
	}		 
}

void main()    //主函数
{
	while(1)    //循环执行
	{
		display(1234567);    //调用显示
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

89C51七段数码管显示“12345678” 的相关文章

随机推荐

  • 测试alter table shrink space compact cascade及学习user_tables相关列的含义

    SQL gt alter table test shrink enable row movement alter table shrink space须开启行移动 Table altered SQL gt select table name
  • 网络编程14——epoll反应堆模型⭐,epoll反应堆实现源码(并没掌握▼

    epoll ET模式 非阻塞 void ptr epoll反应堆模式 与原来监听模式对比 给lfd和cfd指定回调函数的区别 epoll反应堆实现源码 这代码有点难 eventset函数 设置回调函数 lfd gt acceptconn c
  • java reference variable_What's inside a reference variable in Java?

    It s entirely up to the JVM to determine what goes inside a reference In the simplest case it would just be a pointer i
  • 设备故障分析及预测性维护在智能制造中的重要应用

    01 引言 近些年 智能制造在流程工业生产中得到了示范应用 其重要性逐渐深入人心 国内外学者对于智能制造的理解和定义不尽相同 清华大学吴澄将智能制造定义为以智能技术为代表的新一代信息技术在制造全生命周期的应用中所涉及的理论 方法 技术和应用
  • 操作系统的学习(一)

    一 操作系统的演进 1 无操作系统 人工操作 用户独占 cpu等待人工操作 资源利用率很低 2 批处理系统 无需人工等待 批量输入任务 资源利用率提升 多道程序设计 3 分时系统 人 机交互 多用户共享 及时调试 资源利用率提升 4 多道程
  • jqgrid获取全部数据

    在分页的情况下 如果grid分页 直接获取数据 var data grid table1 jqGrid getRowData 这种方法只能获取第一页的 此时获取全部数据的方法 grid table1 为某个grid的id var rowNu
  • 时序分析基本概念之线负载模型的选择方式

    对于跨越边界的net 我们除了选用合适的wire load model以外 还需要选择合理的wire load mode wire load mode主要有三种top enclosed 和segmented 这三种模式所选取的wire lo
  • 分享几款比较常用的接口测试工具

    首先 什么是接口呢 2023最新Jmeter接口测试从入门到精通 全套项目实战教程 接口一般来说有两种 一种是程序内部的接口 一种是系统对外的接口 系统对外的接口 比如你要从别的网站或服务器上获取资源或信息 别人肯定不会把数据库共享给你 他
  • OGRE动画

    动画是由若干静态画面 快速交替显示而成 因人的眼睛会产生视角暂留 对上一个画面的感知还末消失 下一张画面又出现 就会有动的感觉 计算机图形学中的动画也同样遵循着这一本质的原理 只不过不同于传统动画的手绘和拍摄 Ogre图形引擎可以通过自动或
  • java实现----阶乘相加1的阶乘+2的阶乘加3的阶乘......

    计算1 2 3 见下列代码 import java util Scanner 导包 public class 阶乘 public static void main String args Scanner sc new Scanner Sys
  • Xss练习(level11/12/13/16/17/18)

    本文为学习笔记 仅限学习交流 不得利用 从事危害国家或人民安全 荣誉和利益等活动 level11 查看源代码 尝试 利用BP抓包 改包 构造语句 注意闭合 level12 尝试BP抓包 改包 type test nclick alert 1
  • vue中style设置scoped后部分样式不生效

    因为用了elementUI的组件库 一个页面用到了el dialog 需要改一下样式 但
  • UDP用户数据报协议分析

    简介 UDP User Datagram Protocol 即用户数据报协议 在网络中它与TCP协议一样用于处理数据包 是一种无连接的协议 在OSI模型中 在第四层 传输层 处于IP协议的上一层 UDP用来支持那些需要在计算机之间传输数据的
  • vue通过uniapp打包运行页面空白(Failed to load resource)

    vue调试时候 真机打开url和mac电脑打开都正常 然后npm run build 在移植到uniapp项目里打包apk ipa传到手机运行页面空白 打开safari浏览器 查看ipa文件包的页面 发现报了Failed to load r
  • 【重磅整理】180篇NIPS-2020顶会《强化学习领域》Accept论文大全

    深度强化学习实验室 作者 DeepRL Lab AMiner cn 联合发布 来源 https neurips cc Conferences 2020 编辑 DeepRL 图片来自新智元 NeurIPS终于放榜 提交数再次创新高 与去年相比
  • Linux-C基础之输入输出函数

    一 输出 一 数据输出 C语言无I O语句 I O操作由函数实现 include
  • 搭建个人的第一个服务器以及域名申请和绑定--阿里云服务器

    在大学阶段 购买并搭建了自己的第一个服务器 心情激动无比 写下本片博文记录购买并搭建服务器的全过程 方便自己以后在服务器方面进行更加深入的学习 阿里云和腾讯的服务器都有学生价 价格都是一折左右 真心实惠 本人因为学习的Java 所以偏向于阿
  • 12.荔枝派 zero(全志V3S)-使用新版本的buildroot

    上面是我的微信和QQ群 欢迎新朋友的加入 1 下载新版buildroot 我下载了19年2月份发布的buildroot 2 文件系统配置 make menuconfig 设置target option 设置编译链 其中Toolchain p
  • nginx实现动静分离

    nginx实现动静分离 1 什么是动静分离 2 nginx反向代理与负载均衡 3 nginx实现负载均衡 4 nginx实现动静分离 1 什么是动静分离 动静分离主要是通过nginx PHP FPM来实现 其中nginx处理图片 html等
  • 89C51七段数码管显示“12345678”

    1 延时模块 void Delay ms unsigned int xms 11 0592MHz延时模块 unsigned char i j while xms nop i 2 j 199 do while j while i 2 显示模块