首页 > 其他分享 >03-共阳极数码管的静态显示

03-共阳极数码管的静态显示

时间:2023-10-03 19:33:10浏览次数:42  
标签:P2 03 0000 void unsigned 数码管 0x1f 阳极

共阳数码管的静态显示

20231003163444

由电路图可知此为共阳数码管

#include <REGX52.H>

unsigned int code num[16] ={
	 0xc0,   	  // 0    1100 0000  
	 0xf9,        // 1    1111 1001    abged  为0
	 0xa4,           // 2           1010 0100
	 0xb0,//3
	 0x99,//4
	 0x92,//5
	 0x82,//6
	 0xf8,//7
	 0x80,//8
	 0x90,//9
	 0x88,//A
	 0x83,//B
	 0xc6,//C
	 0xa1,//D
	 0x86,//E
	 0x8e,//F     
};
// 以毫秒级别的倍数减少
void Delay(unsigned int xms) {
	//while(t--);
	//while(t--);
	unsigned int i,j;
	for(i = 0; i < xms;i++) {
		for(j = 0;j < 299; j++);
	}

}
void _74HC138(unsigned char n) {
	
	switch(n) {
		case 4:   // LED使能
			P2 = (P2 & 0x1f) | 0x80;  // 1000 0000 
		break;
		case 5:   // 蜂鸣器和继电器使能
			P2 = (P2 & 0x1f) | 0xa0;  // 1010 0000 
		break;
		case 6:   // 数码管位选使能
			P2 = (P2 & 0x1f) | 0xc0;  // 1100 0000 
		break;
		case 7:   // 数码管段选使能
			P2 = (P2 & 0x1f) | 0xe0;  // 1110 0000 
		break;
		case 0:   
			P2 = (P2 & 0x1f) | 0x00;  // 1110 0000 
		break;
	}

}
void SystemInit(void) {
	_74HC138(5);
	P0 = 0x00;
	_74HC138(4);
	P0= 0xff;
}
void showSMG_Bit(unsigned char dat,pos) {
	_74HC138(6);    // 数码管位选使能
	P0 = 0x01 << pos; // 0x01 << 0000 0001 
	_74HC138(7);    // 数码管段选使能
	P0=dat;
}

void SMG_Static(void) {
	unsigned char i,j;
	for(i=0;i<8;i++) {
	
	for(j =0;j<10;j++) {
		// 参数1段选  参数2位选
		showSMG_Bit(num[j], i);
		Delay(500);
		}
	}
	
	
	for(i=0;i<16;i++) {
        _74HC138(6);    // 数码管位选使能
		P0 = 0xFF;
		_74HC138(7);
		P0=num[i];
		Delay(4000);
	
	}
	

}
void main(void) {
 unsigned char i,j;
    
	SystemInit();
    // 调用该函数可实现上述功能
	SMG_Static();
	// 第二种方法
	for(i=0;i<8;i++) {
	_74HC138(6);    // 数码管位选使能
	P0=0x01<<i; // 从左往右依次点亮  0000 0001 => 0000 0010 =>以此类推
	for(j =0;j<10;j++) {
			_74HC138(7);
			P0=num[j];
			Delay(500);
		}
	
	}
	
	_74HC138(6);
	P0 = 0XFF;   // 位选全部点亮
	for(i=0;i<16;i++) {
		_74HC138(7);
		P0=num[i];
		Delay(4000);
	
	}
	
}
	
	

标签:P2,03,0000,void,unsigned,数码管,0x1f,阳极
From: https://www.cnblogs.com/bky111/p/17741542.html

相关文章

  • stata 18 显示r603 不能安装外部命令 主要是设置文件夹的读写权限
    1.stata18安装位置的ado文件夹中新建plus personal ......
  • 梦断代码阅读笔记03
    1、程序员与用户的交涉读这本书,发现其实这个团队也有过交工的时候,只是仅仅在项目成员满意的情况下,而没有达到用户的预期,也就是二者沟通不充分,程序员本身并没有真正了解到用户的需求,只是按照自己认为的行事,导致了期望之间的偏差,也造成了工作量的加大,和项目的返工;这也和王老师之......
  • 第03章 Python的数据结构、函数和文件
    本章讨论Python的内置功能,这些功能本书会用到很多。虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的。我们会从Python最基础的数据结构开始:元组、列表、字典和集合。然后会讨论创建你自己的、可重复使用的Python函数。最后,会学习P......
  • 2023.10.03补题两则
    2023.10.03T2Solution在\(\bmod{2}\)意义下,\(-x^{c}=x^{c}\)。对于\(A_i\equivC\pmod{B}\),变为\(A_i-C\equiv0\pmod{B}\),那么\(-C\)操作可以看成是异或上\(C\)。对于\(A^{'}_i\equiv0\pmod{B}\)的形式,欲找到最大的\(B\),则\(B\)显然是\(\gcd\......
  • 10.03模拟赛总结
    总结寄掉啦,\(50+30+100+8\)。T1组队(team)分析很简单的题目,通过充分发扬人类智慧,设\(x\)为二元组\((i,j)\)满足\(i<j,a_i=a_j\)的数量,则答案为\(2^x-1\)。代码没有。T2话外世界奇观:、附:题面组队(team)题目描述穗织镇上共有\(n\)个种族的秽神,第\(i\)个......
  • 【231003CHEM-1】电解硫酸铜溶液 化学方程式虽简单 但稳定实验还需要多次尝试
    电解硫酸铜用以湿法炼铜或是制备稀硫酸,书本上的反应方程式倒是很简单,具体如下:阴极:2Cu2++4e-==2Cu阳极:2H2O-4e-==4H++O2总方程式:2Cu2++2H2O=通电=2Cu+O2+4H+或2CuSO4+2H2O=通电=2Cu+O2+2H2SO4(以上公式来自https://qb.zuoyebang.com/xfe-question/questi......
  • 【题解】洛谷 P1003 [NOIP2011 提高组] 铺地毯
    原题链接解题思路如果直接按照题意开一个二维数组来模拟每个点最上面的地毯编号,会发现所占空间最坏情况下约为(2*105)2*4B=4*1010*4B=1.6*1011B≈149GB,程序完全无法运行。但实际上没有必要将每一个点的信息记录下来,只需要记录每一块地毯能覆盖哪些点,再依次判断哪那些地毯可以......
  • [ARC035B] アットコーダー王国のコンテスト事情 题解
    前置芝士排列组合分析明显的贪心,第一问与此题思路相似,优先选择做时间少的,可以尽可能让后面的罚时尽量的小。难点在第二问,第二问问的是有几种可能性,有个显然的结论:相同做题时间的题目,位置调换答案仍然相同。那么可以用桶+排列组合来解决:用桶储存这个做题时间的出现次数\(b......
  • 错误解决Error: error:0308010C:digital envelope routines::unsupported
    问题原因:查了下原因,主要是nodeJsV17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,nodeJsv17之前版本没影响,但V17和之后版本会出现这个错误。我的node版本是v18.12.1解决方式(仅windows):在package.json的scripts中新增SETNODE_OPTIONS=--openssl-lega......
  • Gym 103428B Subset
    CF传送门首先考虑没有选出的数互不相同的限制。设\(f_m\)为选出\(m\)个\(\in[0,n]\)的数,异或\(\text{popcount}=k\)的方案数。可以考虑枚举这\(m\)个数和\(n\)的\(\text{LCP}\)(要求后一位为\(1\)),然后钦定一位为\(1\)来满足\(\text{popcount}\)的限制。那......