#include
sbit dula=P2^6;//申明U1寄存器的锁存端,P2^6是段锁
sbit wela=P2^7;//申明U2,P2^7是挝凰?
main()
{
wela=1; //打开U2锁存端
P0=0xfe;//送入位选信号
wela=0;//关闭U2锁存器
dula=1;//段锁
P0=0x5e;//0x06代表1
dula=0;
while(1);
}
wela代表段选。 wela控制哪几个二数码管亮
dula 代表位选,控制数码管亮哪些?后者负责显示0~F中的十六进制中的任意字符
综合来说,控制段选是由一串二进制数字控制的,1111 1110,转化为十六进制为0xfe,只有第一个二极管会亮
如果要控制六个数码管,111000000,转换为十六进制为0xc0
同理,如果要使1,3,5中的数码管工作,二进制几位11101010,0xea
同理,2,4,6即为11010101为0xD5
#include//静态显示#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;//申明U1锁存端
sbit wela=P2^7;//申明U2锁存端,位生命
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
wela=1;//打开U2
P0=0xd5;//表示对六个操作,一开始打开所有位选
wela=0;
while(1)
{
for(num=0;num<16;num++)
{
dula=1;//打开U1,段口
P0=table[num];//送入段选信号
dula=0;
delay(1000);//延时1.0秒
}
}
}
void delay(uint z)//延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
这个程序实现了静态数码管的变化,6个数码管一起从0~F的变,间隔一秒。
关键字:51单片机 数码管 显示与应用
引用地址:
51单片机开发中数码管显示与应用
推荐阅读最新更新时间:2024-11-12 01:58
51单片机-再次优化不支持连按的代码
1.还需消抖 可以看到我们在第6讲和第7讲的按键不支持连按代码中,死循环都有“delay_ms(2);”,因为大多数时候主循环都要做很多事,所以我们认为这2ms的延时是很多复杂程序要执行所消耗的时间,而正是因为这个延时函数的存在把按键的物理抖动给滤掉了,误导了我们以为这样的不支持连按代码是合格的。如果我们还是用这种写法去实现不支持连按功能,那么请把下面的代码下载进开发板通过快按和慢按K4,观察数码管的显示。 2.缺陷代码 #include reg52.h sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADD
[单片机]
51单片机解码GPS 1602显示
用51单片机解析串口GPS模块发来的信息,在1602液晶显示 ,用51单片机的TXD口接GPS模块的RXD口。程序略做修改并修正了一些错误。 这是电路原理图。程序是结合我单片机的板子做了修改。 就是先焊接一个51单片机最小系统。我的程序中是用的P0口与1602液晶通信。 这是做的改进,由原来的串口GPS模块,换成了蓝牙GPS模块。最右边是诺基亚的蓝牙GPS模块,小的四方的板子上蓝牙串口主模块,用来接收蓝牙GPS发出的信号。程序还是原程序。 程序是结合网络资料,自己加已修改 把代码贴这了。 //这是1602液晶的驱动头文件,文件名为1602.h /* LCD1602驱动,兼容LCD2402 */ sbit LCD_D
[单片机]
51单片机实验2——I2C通信——24C01扩展实验
一、实验原理: I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件。然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。 二、实验电路图 三、代码详解: “i2c.h” #ifnd
[单片机]
C51单片机计数器实验
实验要求 实现一个秒表显示器,具体的画一个MSC51单片机、2个八段数码管,运行后数码管依次显示00-59,循环显示,到59后跳变回。 必须用到中断,T0还是T1不限,方式0,1,2不限。 代码部分 #include reg51.h unsigned char code table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char second=0; bit a=0; char t=0; int0_srv() interrupt 1{ t++; if(t==20){t=0;a=1;} TH0=0x3c; TL0=0xb
[单片机]
C51全局初始化及精确延时程序,51单片机精确延时程序
/********************************************************************************************************* * Initialization Program * QiZhao,2007 * All Rights Reserved * File : initial.h * By : QiZhao * Contact :zq1987731@163.com * * Version : V2.1 γ * Corrector : QiZhao * Date : 2008.2.1 (Last modified) * * Remarks :
[单片机]
多模式51单片机心形流水灯+呼吸灯+蜂鸣器音乐
1.基础硬件DIY设计 电路硬件: STC89C52RC 蜂鸣器/24个LED/4个四角按键 1)整体原理图 2)PCB电路 3)3D_PCB TOP层 2.单片机程序设计 1)呼吸灯 //呼吸灯 while(1) { for(high=1;high cycle;high++) { P2=P1=P0=0XFF; delay2(high); P2=P1=P0=0X00; low=cycle-high; delay2(low); } for(low=1;low cycle;low++) { P2=P1=P0=0XFF;; high=cycle-low;
[单片机]
MCS-51单片机汇编中的“指针”
111条单片机指令中让我想起高级语言中的指针的功能。 数据传送类指令中的 指针 1)MOV A,@Ri 2)MOV direct,@Ri 3)MOV @Ri,A MOV @Ri,direct MOV @Ri,#data8 4)MOVX A,@Ri MOV A,@DPTR 5)MOVX @Ri,A 6)MOVX @DPTR,A @:指向的意思。
[单片机]
MCS-51单片机的中央处理器CPU介绍
MCS-51单片机的中央处理器CPU由运算器和控制逻辑构成,其中包括若干特殊功能寄存器(SFR)。 一、以ALU为中心的运算器 算术逻辑单元ALU能对数据进行加、减、乘、除等算术运算;“与”、“或”、“异或”等逻辑运算以及位操作运算。 PSW的格式如图1-3所示,其各位的含义是: 图1-3 PSW的格式 CY:进位标志。有进位/借位时CY=1,否则CY=0; AC:半进位标志。当D3位向D4位产生进位/借位时AC=1,常用于十进制调整运算中; F0:用户可设定的标志位,可置位/复位,也可供测试。 RS1、RS0:四个通用寄存器组的选择位,该两位的四种组合状态用来选择0~3寄存器组。见表1-2。 OV:
[单片机]