51单片机静态数码管原理及代码

单个数码管有8个LED灯,通过输入电平点亮a~g可显示数字,以下为原理图: 数码管原理图分为共阴极与共阳极两种:①共阴极:a~dp位于发光二极管的阳极(即高电平的一端)部分,左接GND端②共阳极:a~dp位于发光二极管的阴极(即低电平的一端)部分,右接VCC电源例如:点亮共阴极数码管显示数字1,对应输入二进制数为原理:a,e,f,g,dp输入为0时,由于0,1分别表示低电平、高电平,以a端为例:左右两边为低电平,二极管未接通,不发光。同理:点亮共阳极数码管显示数字1,输入二进制为:1001 1111(0表示
摘要由CSDN通过智能技术生成

1.数码管原理图

单个数码管有8个LED灯,通过输入电平点亮a~g可显示数字,以下为原理图:

 数码管原理图分为共阴极与共阳极两种

共阴极:a~dp位于发光二极管的阳极(即高电平的一端)部分,左接GND端

共阳极:a~dp位于发光二极管的阴极(即低电平的一端)部分,右接VCC电源

例如:点亮共阴极数码管显示数字1,对应输入二进制数为

a,    b,    c,    d, e,    f,    g ,   dp
0     1      1     0 0     0    0      0

原理:a,e,f,g,dp输入为0时,由于0,1分别表示低电平、高电平,以a端为例:左右两边为低电平,二极管未接通,不发光。

同理:点亮共阳极数码管显示数字1,输入二进制为:1001 1111(0表示低电压,对应的管脚即为接通状

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面为您提供一个51单片机静态数码管计算器的实例代码: ``` #include<reg52.h> #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管显示0~9,A~F uchar num1,num2,result;//记录输入的数值和结果 uchar flag=0;//标志位,用于选择运算符 void delay(uchar z)//延时函数 { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar num)//数码管显示函数 { P0 = table[num]; } void keyscan()//按键扫描函数 { uchar keyvalue = P1; keyvalue &= 0x0f; if(keyvalue != 0x0f) { delay(10); keyvalue = P1; keyvalue &= 0x0f; if(keyvalue != 0x0f) { switch(keyvalue) { case 0x0e: num1=1; display(num1); break;//1键 case 0x0d: num1=2; display(num1); break;//2键 case 0x0b: num1=3; display(num1); break;//3键 case 0x07: num1=4; display(num1); break;//4键 case 0x0e: num1=5; display(num1); break;//5键 case 0x0d: num1=6; display(num1); break;//6键 case 0x0b: num1=7; display(num1); break;//7键 case 0x07: num1=8; display(num1); break;//8键 case 0x0e: num1=9; display(num1); break;//9键 case 0x0d: num1=0; display(num1); break;//0键 case 0x0b: flag=1; break;//加法键 case 0x07: flag=2; break;//减法键 case 0x0e: flag=3; break;//乘法键 case 0x0d: flag=4; break;//除法键 case 0x0b: flag=5; break;//等于键 case 0x07: num1=0; num2=0; result=0; display(num1); break;//清零键 } } } } void main() { while(1) { keyscan(); if(flag != 0) { keyscan(); num2 = num1; num1 = 0; display(num1); switch(flag) { case 1: result = num1 + num2; break;//加法运算 case 2: result = num1 - num2; break;//减法运算 case 3: result = num1 * num2; break;//乘法运算 case 4: result = num1 / num2; break;//除法运算 } display(result); flag = 0; } } } ``` 这是一个简单的静态数码管计算器,通过按键输入数字和运算符,然后在数码管上显示结果。代码中使用了延时函数、数码管显示函数和按键扫描函数等。需要注意的是,这个程序中只能进行加减乘除四则运算,如果需要扩展其他运算,可以自行添加代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值