1.静态数码管显示
对数码管所在管口输入,然后根据二进制计算出6的二进制对应输入101,数码管中输入引脚是7D,这里需要有数码管的显示位置的管口参照,不同单片机可能不同
#include
void main()
{
P2_4=1;
P2_3=0;
P2_2=1;
P0=0x7D;//显示数字6
while(1)
{
}
}
由于引脚冲突,led也会亮
然后设置函数。用Switch来定义所有的输入
#include void Num(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=0x7D;
}
void main()
{
Num(6);
while(1)
{
}
}
也可以对数字进行设置,在上面的代码中,number没有定义,所以还是显示6
可以用数组的形式,对每个数字的显示形式放在数组中,在函数中调用
#include
char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F};
void Num(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NumTable[Number];
}
void main()
{
while(1)
{Num(4,2);
}
}
2.动态数码管显示
加入延迟函数,不然的话在显示上会有重影,对应位置的显示,也可以用循环语句
#include
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{i = 12;
j = 169;
do
{
while (--j);
} while (--i);}
}
char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F};
void Num(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NumTable[Number];
}
void main()
{
while(1)
{ Num(1,1);
Delay(200);
Num(2,2);
Delay(200);
Num(3,3);
Delay(200);
}
}
关键字:51单片机 数码管显示 二进制
引用地址:
51单片机—数码管显示
推荐阅读最新更新时间:2024-11-11 16:14
51单片机——SPI
UART、 I2C 和 SPI 是单片机系统中最常用的三种通信协议。 1、初步介绍 SPI 是一种高速的、全双工、同步通信总线,标准的 SPI 也仅仅使用 4 个引脚,常用于单片机和 EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。 SPI 通信原理比 I2C要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的 SPI 是 4 根线,分别是 SSEL( 片选,也写作 SCS)、 SCLK( 时钟,也写作 SCK)、 MOSI( 主机输出从机输入Master Output/Slave Input) 和 MISO( 主机输入从机输出 Master Input/Slave Output)。
[单片机]
16位数据传送指令(1条)——mcs51单片机汇编语言
16位数据传送 指令 (1条) 这是89C51单片机唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入数据指针DPTR中去。其中高8位送入DPH,低8位送入DPL。 MOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL 例如:MOV DPTR,#2345 则执行完程序后,DPL中的值为23,DPL中的值为45。
[单片机]
基于C51单片机的多路开关状态显示电路原理图
如下图所示, AT89S51 单片机的 P1.0 - P1.3 接四个发光二极管 L1 - L4 ,P1.4 - P1.7 接了四个开关 K1 - K4 ,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。 1 . 把 “ 单片机系统 ” 区域中的 P1.0 - P1.3 用导线连接到 “ 八路发光二极管指示模块 ” 区域中的 L1 - L4 端口上; 2 . 把 “ 单片机系统 ” 区域中的 P1.4 - P1.7 用导线连接到 “ 四路拨动开关 ” 区域中的 K1 - K4 端口上。
[模拟电子]
51单片机学习笔记:合并1602和12864液晶排插接口
今天成功合并1602和12864液晶排插接口! 码出来分享下 上面这2个图是1602和12864液晶的排插接口,一般的单片机开发板上都会有 仔细观察发现他们的插口大多是相同的, 对于第三脚的对比度调节,1602和12864液晶在硬件上是相反的(1602是低电位方向对比度增强,12864是高电位方向对比度增强), 但他们接口位置相同,所以一个10K左右的3脚电位器就可以满足要求! 接法如12864中的接法,规格取10K的 456这3个脚一模一样,1602第5脚接地是让1602一直工作在写入模式, 原始的接口和12864是一样的, 那么只要在我们以前的代码中添加一条LCD1602WR=0就搞定了 然后8个数据口又
[单片机]
51单片机C编程(七、5个IO口扫描10个按键)
程序名称:5个IO口扫描10个按键 作 者:jumpmysoul 日 期:2009年5月22日 程序功能:用P1口的P00~P04实现10个按键的扫描,并将键值用一个数码管显示 proteus仿真电路如下: #include reg51.h #define uchar unsigned char #define uint unsigned int #define SEG P0 uchar code tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x08};//共阳数码管段码 void delay1ms(uint); uchar pr
[单片机]
51单片机多路测温报警系统(AT89C51、多个DS18B20、LCD1602)
一、简介 此系统主要由AT89C51、多个DS18B20温度模块和LCD1602组成。 大致的原理是多个DS18B20按顺序采集温度到的数据传送给AT89C51的P2.7,最后通过LCD1602显示当前的实时温度,按键可以设置上下限温度,根据温度判断是否需要报警。 二、运行效果图 模拟仿真运行 三、部分代码 /*想要更多项目私wo!!!*/ #include reg52.h #include intrins.h unsigned int iTempDataH; unsigned int SetTemp = 30; int SetTemp1 = 1; int num = 0; //ÅжÏæָÁî void
[单片机]
STC51单片机的下载问题相关
之前记录了一个关于ch340的问题, 简单记录一个CH340T的小问题解决方法(冷启动时重启导致下载失败) http://blog.sina.com.cn/s/blog_717116870102vauh.html 主要写了U转串那部分,ch340的要点。(TXD和RXD接二极管和300欧,ch340电源5口要接电容稳压,要离的近。) 网上也有一些人也遇到下载的问题 http://www.openedv.com/posts/list/6634.htm 也介绍了max232的问题,虽然现在不怎么用了 近期公司开发一款STC51核心的射频卡和2.4G无线通讯开发板,由本人操刀,原本认为难做的地方并没费什么力气,反倒是
[单片机]
基于51单片机的超声波液位控制器设计
一.硬件方案 利用超声波传输中距离与时间的关系,采用8051单片机进行控制及数据处理,设计出了能精确测量两点间距离的超声波液位检测系统。并通过液位的高低开,通过控制继电器,选择注水或者放水。 主要由51单片机+HC-SR04超声波传感器+LCD1602液晶+水泵+按键+蜂鸣器+继电器设计而成;如图: 二.设计功能 (1)本设计中液晶显示有4个字母,分别为 H------容器的最高水位设定值(不能高于实际高度) L------容器的最低水位设定值 D-----容器实际高度(可以设置) C-----容器内液体的高度(在实际演示中,障碍物离探头越近,液晶C显示越大,因为障碍物好比液面,离探头近了说明水位高了) (2)如果容器实际
[单片机]