C51语句概念

2023-10-27

C51语句概念

单分支语句

表达语句

if(表达式) {

        分支一

}

     else

{

        分支二

}

表达语句

if(表达式)

{

        语句

}

#include<reg52.h>
sbit key1 = P3^2;
void delay(unsigned int k)
{
	unsigned i,j;
	for(i=0;i<k;i++)
		for(j=0;j<124;j++);
}
	   
void main()
{
 while(1)
 	{	
		if(key1==0)
		{
		  P2=0X0F;    //0000(左边)  1111    是左边四个灯亮
		  delay(500);
		}
		else
		{
		  P2=0XF0;	  //1111(右边)  0000    是右边四个灯亮
		  delay(500);
		}

	}
}

多分支语句

if(表达式){

        语句

}else if(表达式){

        语句

}else{

        表达式

}

#include<reg52.h>
sbit key1 = P3^2;
sbit key2 = P3^3;
void delay(unsigned int k)
{
	unsigned i,j;
	for(i=0;i<k;i++)
		for(j=0;j<124;j++);
}
	   
void main()
{
 while(1)
 	{	if(key1==0 && key2==0)
		{
			0X00;     //全亮
		}
		else if(key1==0)
		{
		  P2=0X0F;    //0000(左边)  1111    是左边四个灯亮
		  delay(500);
		}
		else if(key2==0)
		{
		  P2=0XF0;	  //1111(右边)  0000    是右边四个灯亮
		  delay(500);
		}
		else
		{
			P2=0XFF;
		}

	}
}

两个按钮来控制左右移动的效果

#include<reg52.h>
sbit key1=P3^2;
sbit key2=P3^3;
bit f1,f2;
unsigned char tab[8]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};

void delay(unsigned int k)
{
	unsigned i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}
							-
void main()
{
 while(1)
 {	int i;
 	if(key1==0)
	{
	 f1=1;
	 f2=0;
	}else if(key2==0)
	{
	 f1=0;
	 f2=1;
	}
 	else if(f1==1)
	{
		for(i=0;i<8;i++)
		{
			P2=tab[i];
			delay(500);
		}
		P2=0XFF;

	}
	else if(f2==1)
	{	
		for(i=7;i>=0;i--)
		{
			P2=tab[i];
			delay(500);
		}
		P2=0XFF;
	}

 }
}

for 循环语句

 

数码管原理

数码管八段数码管内部由七个条形发光二极管和一个小圆点发光二极管组成和共阴极数码管。

二极管的阳极接在一起电源,共阳极是公共端,共阴极分别引出。

数码管的静态显示

静态显示也叫直流驱动或静态驱动。

优点:数据稳定,无闪亮。

缺点:位数多时,功率耗大。

 

数码管的读法:dp g f e d c b a

左右读法 亮为0,灭为1来不是。

数码管的共阴接口的二进制码

比如说:我们在想亮1那就接口设置为0xF9

L.显示的接口设置为0x47

数码管显示数字的代码(简单来表示)

#include<reg52.h>
unsigned char tab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0x83,0x83,0xc6,0x92,0xa1,0x86,0x8e};
void delay()
{
	unsigned i,j;
	for(i=0;i<100;i++)
	for(j=0;j<124;j++);
}
void main()
{
	while (1)
  {
    P2=0xef;
    P0=0xc0;
    delay();
    P0=0xf9;
    delay();
    P0=0xa4;
    delay();
    P0=0xb0;
    delay();
    P0=0x99;
    delay();
	P0=0x92;
    delay();
    P0=0x82;
    delay();
    P0=0xf8;
    delay();
    P0=0x80;
    delay();
    P0=0x90;
    delay();
	P0=0x88;
    delay();
    P0=0x83;
    delay();
    P0=0xc6;
    delay();
    P0=0xa1;
    delay();
    P0=0x86;
    delay();
	P0=0x8e;
    delay();
	P0=0xC8;
    delay();
	P2=0xcf;
	P0=0xc0;
    delay();
    P0=0xf9;
    delay();
    P0=0xa4;
    delay();
    P0=0xb0;
    delay();
    P0=0x99;
    delay();
	P0=0x92;
    delay();
    P0=0x82;
    delay();
    P0=0xf8;
    delay();
    P0=0x80;
    delay();
    P0=0x90;
    delay();
	P0=0x88;
    delay();
    P0=0x83;
    delay();
    P0=0xc6;
    delay();
    P0=0xa1;
    delay();
    P0=0x86;
    delay();
	P0=0x8e;
    delay();
	P0=0xC8;
    delay();
	P2=0x8f;
	P0=0xc0;
    delay();
    P0=0xf9;
    delay();
    P0=0xa4;
    delay();
    P0=0xb0;
    delay();
    P0=0x99;
    delay();
	P0=0x92;
    delay();
    P0=0x82;
    delay();
    P0=0xf8;
    delay();
    P0=0x80;
    delay();
    P0=0x90;
    delay();
	P0=0x88;
    delay();
    P0=0x83;
    delay();
    P0=0xc6;
    delay();
    P0=0xa1;
    delay();
    P0=0x86;
    delay();
	P0=0x8e;
    delay();
	P0=0xC8;
    delay();
	P2=0x0f;
	P0=0xc0;
    delay();
    P0=0xf9;
    delay();
    P0=0xa4;
    delay();
    P0=0xb0;
    delay();
    P0=0x99;
    delay();
	P0=0x92;
    delay();
    P0=0x82;
    delay();
    P0=0xf8;
    delay();
    P0=0x80;
    delay();
    P0=0x90;
    delay();
	P0=0x88;
    delay();
    P0=0x83;
    delay();
    P0=0xc6;
    delay();
    P0=0xa1;
    delay();
    P0=0x86;
    delay();
	P0=0x8e;
    delay();
	P0=0xC8;
    delay();
  }
 }

函数方法:

#include<reg52.h>
unsigned char tab[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
void delay(unsigned int k)
{
	int i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}
void main()
{
	while(1)
	{
		int i;
		P2=0xef;     // 数码管第一个亮	  1110    1111
		for(i=0;i<16;i++)
		{
			P0=tab[i];
			delay(5000);
		}
		P0=0XFF;
		delay(5000);
		P2=0XDF;   // 数码管第二个亮	  1101    1111
		for(i=15;i>0;i--)
		{
			P0=tab[i];
			delay(5000);
		}
		P0=0XFF;
		delay(5000);
		P2=0XBF;   // 数码管第三个亮	  1011    1111
		for(i=0;i<16;i++)
		{
			P0=tab[i];
			delay(5000);
		}
		P0=0XFF;
		delay(5000);
		P2=0X7F;   // 数码管第四个亮	  0111    1111
		for(i=0;i<16;i++)
		{
			P0=tab[i];
			delay(5000);
		}
	}
}

按钮来控制数字的变化

#include<reg52.h>
unsigned char tab[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
sbit key1=P3^2;
sbit key2=P3^3;
void delay(unsigned int k)
{
	int i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}
void main()
{
	while(1)
	{	
		int i;
		P2=0XEF;
		if(key1==0&&key2==1)
		{
		   i++;
		   delay(1000);
		   if(i>15) i=0;
		   P0=tab[i];	
		}
		if(key2==0&&key1==1)
		{
		   i--;
		   delay(1000);
		   if(i<0) i=15;
		   P0=tab[i];	
		}
	}
}

7SEG-MAX4-CA

74LS04

BUTTON

RESPACK-8

数码管同时亮

显示为3282

#include<reg52.h>
unsigned char tab[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
sbit key1=P3^2;
sbit key2=P3^3;
void delay(unsigned int k)
{
	int i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}

//显示3
void one()
{
	P0=0XB0;    //段选   P2.7   P2.6  P2.5   P2.4
	P2=0XEF;    //位选    1       1     1      0
}
// 显示2
void two()
{
	P0=0XA4;
	P2=0XDF;   //位选    1       1     0      1
}
// 显示8
void three()
{
	P0=0X80;
	P2=0XBF;   //位选    1       0     1      1
}
// 显示2
void four()
{
	P0=0XA4;
	P2=0X7F;   //位选    0       1     1      1
}
void main()
{
	while(1)
	{	
		// 第一个端口
		one();
		delay(4);
		// 第二个端口
		two();
		delay(4);
		// 第三个端口
		three();
		delay(4);
		// 第四个端口
		four();
		delay(4);	
	}
}

按来说说所的表示(1234)

#include<reg52.h>
void delay(unsigned int k)
{
	int i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}
void main()
{
	while(1)
	{	
		P0=0XF9;
		P2=0XEF;
		delay(4);
		P0=0XA4;
		P2=0XDF;
		delay(4);
		P0=0XB0;
		P2=0XBF;
		delay(4);
		P0=0X99;
		P2=0X7F;
		delay(4);	
	}
}

仿真软件运行

#include<reg52.h>
unsigned char tab[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
sbit key1=P3^2;
sbit key2=P3^3;
void delay(unsigned int k)
{
	int i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}
void main()
{
	while(1)
	{	
		P0=0XF9;
		P2=0XEF;
		delay(4);
		P0=0XFF;
		P0=0XA4;
		P2=0XDF;
		delay(4);
		P0=0XFF;
		P0=0XB0;
		P2=0XBF;
		delay(4);
		P0=0XFF;
		P0=0X99;
		P2=0X7F;
		delay(4);
		P0=0XFF;	
	}
}

第四种表示方法:

#include<reg52.h>
unsigned char tab[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
sbit key1=P3^2;
sbit key2=P3^3;
void delay(unsigned int k)
{
	int i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}
void main()
{	int num = 3282;
	while(1)
	{	
	 P0=tab[num/1000%10];
	 P2=0XEF;
	 delay(4);
	 P0=0XFF;
	 
	 P0=tab[num/100%10];
	 P2=0XDF;
	 delay(4);
	 P0=0XFF;
	 
	 P0=tab[num/10%10];
	 P2=0XBF;
	 delay(4);
	 P0=0XFF;
	 
	 P0=tab[num%10];
	 P2=0X7F;
	 delay(4);
	 P0=0XFF;	
	}
}

按钮来控制0到12的变化

#include<reg52.h>
unsigned char tab[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
sbit key1= P3^2;
sbit key2= P3^3;
sbit LED = P2^0;
bit f1,f2;
void delay(unsigned int k)
{
	int i,j;
	for(i=0;i<k;i++)
	  for(j=0;j<124;j++);
}
void main()
{	int num = 3282;
	while(1)
	{
	 if(key1==0 && f1==0)
	 {
	 	f1=1;
	 	num++;
		if(num>12)
		{
			num=0;
			LED=0;
			delay(2000);
			LED=1;
		}
	 }
	 if(key1==1) f1=0;
	 	
	 P0=tab[num/1000%10];
	 P2=0XEF;
	 delay(4);
	 P0=0XFF;
	 
	 P0=tab[num/100%10];
	 P2=0XDF;
	 delay(4);
	 P0=0XFF;
	 
	 P0=tab[num/10%10];
	 P2=0XBF;
	 delay(4);
	 P0=0XFF;
	 
	 P0=tab[num%10];
	 P2=0X7F;
	 delay(4);
	 P0=0XFF;	
	}
}

数码管的0到99 的减加法

#include<reg52.h>
// 数码管的动态显示
#define u8 unsigned char
#define u16 unsigned int
u8 tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};	// 0到9的执行编码
u8 dx[]={0XB0,0XA4,0X80,0XA4};	 //学号3282
u8 wx[]={0XEF,0XDF,0XBF,0X7F};	 //端口的位选
sbit sb1=P3^2;	// 按钮1
sbit sb2=P3^3;	// 按钮2
bit flag1,flag2; //标志位
char cnt;    // 变量
// 延迟函数
void delay(u16 k)
{
  u16 i,j;
  for(i=0;i<k;i++)
    for(j=0;j<124;j++);
}
/**
// 显示函数 第一种方法(简单)
void xs()
{
  P0=dx[0];
  P2=wx[0];
  delay(1);
  P0=0XFF;  //关闭显示

  P0=dx[1];
  P2=wx[1];
  delay(1);
  P0=0XFF;  //关闭显示

  P0=dx[2];
  P2=wx[2];
  delay(1);
  P0=0XFF;  //关闭显示

  P0=dx[3];
  P2=wx[3];
  delay(1);
  P0=0XFF;  //关闭显示
}
*/


// 显示函数 第二种方法(循环)
void xs()
{
  int i;
  for(i=0;i<4;i++)
  {
  P0=dx[i];
  P2=wx[i];
  delay(1);
  P0=0XFF;  //关闭显示
  }
}


// 主函数
void main()
{
  while(1)
  {
     xs();
	 // 加法
	 if(sb1==0&&flag1==0)
	 {
	   flag1=1;
	   cnt++;
	   if(cnt>99)
	   {
	     cnt=0;
	   }
	   dx[0]=0X88;
	   dx[1]=0XBF;
	   dx[2]=tab[cnt/10];
	   dx[3]=tab[cnt%10];
	 }
	 if(sb1==1)flag1=0;

	 // 减去方法
	 if(sb2==0&&flag2==0)
	 {
	   flag2=1;
	   cnt--;
	   if(cnt<0)
	   {
	     cnt=99;
	   }
	   dx[0]=0XC6;
	   dx[1]=0XBF;
	   dx[2]=tab[cnt/10];
	   dx[3]=tab[cnt%10];
	 }
	 if(sb2==1)flag2=0;
  }
}

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

C51语句概念 的相关文章

随机推荐

  • java imap 乱码_用 imaplib 只取信件头会取到乱码,取整封信则正常

    最近用 Python 的 imaplib 和 email 从一个 gmail 信箱中取信 因为信可能有很多 而我只想取特定发件人发来的信 所以就只先取信头 通过类似 rv data self M fetch num BODY HEADER
  • 口语理解任务源码详解系列(四)Ernie模型实现

    Ernie模型实现口语理解任务 一 构建词表 def word2id func raw dataset returns a dictionary of words and their ids print raw dataset raw da
  • The connection property 'zeroDateTimeBehavior' only accepts values of the form

    前景概述 表user info中created time 设计为 created time timestamp not null default current timestamp java插入数据时没有填写createdTime字段 就抛
  • 自定义view之水波浪进度球

    这段时间项目做完了 本以为可以偷懒一段时间 结果领导又接了一个车载项目让我做 很气但是没办法 还是得搞 谁让我是搬砖的呢 今天搞了一个水波纹的自定义控件 先看效果 第一眼还是觉得可以看的 其实我觉得有点丑 ui妹子说挺好看 好吧 那就这样吧
  • 【设计经验】5、Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    原文链接 https www cnblogs com liujinggang p 10549095 html
  • 浅谈chrony服务

    浅谈chrony服务 chrony概念 Chrony 是 NTP 客户端的替代品 Chrony 的优势 更快的同步只需要数分钟而非数小时时间 从而最大程度减少了时间和频率 误差 对于并非全天 24 小时运行的虚拟计算机而言非常有用 能够更好
  • 图的m着色问题——回溯法及其优化(变量排序MRV, 值排序MCV, 前向检查ForwardChecking, 智能回溯, 边相容,K阶相容)python C++实现

    文章目录 图的m着色问题背景 背景知识 问题描述 回溯法的原理及其实现 回溯法基本思想 朴素回溯法解决图的m着色问题 回溯优化策略 回溯法优化 变量排序MRV 回溯法优化 值排序MCV 回溯法优化 前向检查ForwardChecking 边
  • [Transformer]TNASP: A Transformer-based NAS Predictor with a Self-evolution Framework

    TNASP 基于Transformer和自进化的的NAS Predictor Abstract Section I Introduction Section II Related Work Training based network pe
  • C++11-14 第5讲 Uniform Initialization 一致初始化值 &initializer_list

    版权说明 本博文属于个人笔记 本人保留对本文的所有权益 未经许可不得以任何形式转载 Uniform Initialization 一致初始化值 新手困惑初始化怎么写 可能发生在 中 任何初始化都用共通写法 旧 Rect r1 1 2 3 R
  • 6.3.3法线贴图

    1 法线贴图必须与灯光同时进行 2 从法线纹理取得模型空间的法线 再根据切线空间到世界空间的变换矩阵 传递到世界坐标系的法线 再进行计算
  • 和你一起draw9patch

    前言 在工作当中 你总会遇到制作点9图片的时候 我就在公司的新项目中遇到了 很多人说 这交给UI妹妹做就好了 为啥要烦劳我们自己动手 第一呢 作为程序员的我们 多学点东西是没错的 第二呢 UI妹妹做的点9图片产生的效果不是你想要的 一 制作
  • 小程序如何使用vant

    小程序如何使用vant 使用 Vant Weapp 前我强烈的建议大家去看下微信官方的 小程序简易教程 和 自定义组件介绍 点击下方超链接 https youzan github io vant weapp quickstart 第一步 首
  • 目标检测入门概念知识

    一个常见的目标检测网络 其本身往往可以分为一下三大块 Backbone network 即主干网络 目标检测网络的主体结构 是目标检测网络最为核心的部分 大多数时候 backbone选择的好坏 对检测性能影响是十分巨大的 代表网络有 VGG
  • ORB_SLAM2特征匹配

    ORB SLAM2特征匹配 SearchByProjection 使用于运动模型跟踪 函数原型 函数简介 知识难点 由两帧绝对位姿推出两帧相对位姿 前进与后退对搜索范围的影响 描述子的比较 方向一致性检测 运用于局部地图跟踪 函数原型 函数
  • 注解处理器APT在java中的实现

    概念理解 APT 英文全名 Annotation Processor Tool 即 注解处理器 它是 javac 的一个工具 这是Sun为了帮助注解的处理过程而提供的工具 apt被设计为操作Java源文件 而不是编译后的类 作用阶段示意图如
  • 正则表达式使用文档

    通过网站 https regex101 com 可以测试正则表达式的匹配结果及匹配过程 本文章抛开各个编程语言实现差异 仅做正则本身的介绍 会尽量将正则这玩意说明白 使得你看完这边文章后对正则基本可以运用自如 温馨提示 这篇文章会比较长 大
  • Nginx php 错误日志排查

    遇到错误 通常解决流程如下 比如一个php存储服务器的文件上传问题 px ef grep php fpm 查看fpm 是否启动 查看 fpm 运行用户以及权限 发现运行用户为 nobody 组 nobody 文件写入权限为 root cho
  • logPath_IS_UNDEFINED

    logPath IS UNDEFINED 解决Springboot项目启动的时候日志文件找不到路径新建文件夹的问题 网上也有很多案例 大部分都是路径没正确引入 或者引入springCloud依赖 在bootstrap yml配置 今天自己摸
  • 移动web开发基础

    目录 移动web开发 浏览器现状 PC 端常见浏览器 移动端常用浏览器 手机屏幕现状 常用移动端屏幕尺寸 移动端调用方式 总结 视口 1 布局视口 layout viewport 2 视觉视口 visual viewport 3 理想视口
  • C51语句概念

    C51语句概念 单分支语句 表达语句 if 表达式 分支一 else 分支二 表达语句 if 表达式 语句 include