#include
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0;
void delay(uint k)
{
while(k--);
}
code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60}; //数码管码表
code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //
数码管位选
uchar move,flag;
void time0_init()
{
TMOD=0x01;
TH0=0x00;
TL0=0x00;
TR0=1;
}
void str_init() //中断初始化
{
EA=1;
ET0=1;
}
void time0_event() interrupt 1 //中断事件
{
static uchar i;
i++;
if(i==15)
{
flag=~flag;i=0;
}
}
void show()
{
uchar i;
for(i=0;i<4;i++)
{
if(i==move)
{
P0=seg[i]|(0xdf&
flag);
}
else
{
P0=seg[i];
}
P2=tab[i];
delay(100);
P0=0xff;
P2=0xff;
}
}
void key()
{
static uchar i,j;
if(k1==0)
{
if(i==0)
{
j++;
if(j>10)
{
if(k1==0)
{
i=1;j=0;
move++;
if(move==4)move=0;
}
}
}
}
else
{
i=0;
j=0;
}
}
void main()
{
time0_init();
str_init();
while(1)
{
key();
show();
}
}
关键字:51单片机 数码管 按键移动 位数闪烁
引用地址:
数码管按键移动位数闪烁实验
推荐阅读最新更新时间:2024-03-16 14:04
【单片机】【学习日志】51单片机学习日志[Day4、2022.1.12]
第一部分_串口 一、基础知识 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。 51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)可实现单片机的串口通信。 第一个 USB转换工具 相当于 第二个 陀螺仪模块,加速度传感器 第三个 蓝牙串口 小贴士: VGA接口,相比于 串口的接口(两排) 它有三排插、孔。【用于视频传输、电脑外接显示器】 二、硬件
[单片机]
「51单片机」收发一体超声波测距模块分析+代码
我用的超声波型号是US-020,四个接口的超声波用法基本相同。 一、概述 US-020超声波模块测距范围:2cm~7m 供电电压5V,静态功耗低于3mA 二、实物图 尺寸:45mm*20mm*1.6mm 三、接口 1.VCC 电源,直流5V 2.Trig 向此管脚输入10us以上高电平,可触发模块测距 3.Echo 测距结束时会输出高电平,电平时长为超声波信号往返时间之和 4.GND 接地 四、测距工作原理 只要在Trig管脚输入10us以上高电平,系统会自动发出8个40KHz的超声波脉冲,然后检测回波信号。检测到后通过Echo管脚输出。 计算方式:(Echo高电平时间*340m/s)/2 :利用计数器
[单片机]
8051单片机的寻址方式
寻址方式:寻址就是寻找操作数的地址。绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。所谓寻址方式就是通过什么途径获取操作数的方式。根据指令操作的需要,计算机总是提供多种寻址方式。一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。 8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。 寄存器寻址 寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。例如:MOV A R1 这条指
[单片机]
51单片机的引脚及各引脚功能介绍
当我们拿到一块MCS-51系列单片机芯片时,看到这么多的引脚,他们都有干什么用的? 8051单片机的引脚图 引脚功能: MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图: l P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。 l P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。 l P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。 l P3.0~P3.7 P2口8位双向口线(在引脚的10~17号端子)。 这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,初学者很难理解,这里都是按我自已的表达
[单片机]
AT89S51单片机报警器的设计
1.实验任务 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 2.电路原理图 图4.6.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2).在“音频放大模块”区域中的SPK OUT端口上接上一个8欧的或者是16欧的喇叭; (3).把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上; 4.程序设计内容 (1).信号产生的方法 500
[单片机]
51单片机:8x8点阵显示心形图案
单片机开发板是自己做的,电路很简单8*8点阵的行和列分别接在单片机的p0口和p1口,p0口记得要上拉电阻哦,我测试成功见图片, #include reg52.H unsigned char code tab ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code graph ={0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00}; unsigned char cnta; void main(void) { unsigned int i,j; TMOD=0x01; TH0=(65536-2000)/256; TL0=(6553
[单片机]
51单片机2个外部中断的应用
;51单片机的P1口上接有8只LED。 ;在外部中断0输入引脚P3.2接有一只按钮开关K1。 ;在外部中断1输入引脚P3.3接有一只按钮开关K2。 ;要求K1和K2都未按下时,P1口的8只LED呈流水灯显示, ;仅K1(P3.2)按下时,左右4只LED交替闪烁。 ;仅按下K2(P3.3)时,P1口的8只LED全部闪亮。 ;两个外中断的优先级相同。 ;============================================= ;用 PROTSUE 仿真界面如下: ;图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/50c618c5f08ba9
[单片机]
用PC104控制模块和C51单片机实现AD检测板
由PC104控制模块和Cgnal C8051F06x单片机组成的控制检测板可用于高端检测设备中,充分利用PC104控制模块和单片机丰富的软硬件资源,可用于各种检测应用中 在开发检测设备的过程中,可采用核心板加底板的设计方法来降低技术难度,实现可编程、高性能、开发简单、扩展性强的设计方案,并且稍加改动就可以很容易地应用到其他领域。 核心板采用PC104控制模块,利用其强大的处理能力来处理数据,如数据存储、数据分析、数据评估,尤其是友好的GUI简化了用户的使用难度。底板采用Cgnal8051F06x、双口RAM和缓冲寄存器,利用C8051F06X单片机丰富的软硬件资源来实现可编程,可设置的各种复杂功能。核心板与底板之间
[单片机]