#include
#define uchar unsigned char
#define LED P0
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管数字码
uchar disp1[8][4]={{8,10,10,10},{0,8,10,10},{5,0,8,10},{1,5,0,8},{10,1,5,0},{10,10,1,5},{10,10,10,1},{10,10,10,10}};
//数码管的8个显示状态
uchar scan;
void delay1ms(int);
void display(int);
void main()
{
int i;
while(1)
{
for(i=0;i<8;i++) //依次扫描8个状态
display(i);
}
}
void display(int m)
{
int i,j,k;
for(k=5;k>0;k--) //每个状态共扫描5次
{
scan=0x01; //扫描码
for(i=0;i<4;i++)
{
P3=scan;
j=disp1[m][i]; //取扫描状态中的一位
LED=tab[j]; //取对应的段码
delay1ms(10);
scan=scan<<1; //扫描码左移
}
}
}
void delay1ms(int x)
{
int i,j;
for(i=x;i>0;i--)
for(j=120;j>0;j--);
}
关键字:51单片机 C编程 数码管 飞入效果
引用地址:
51单片机C编程(十四 数码管飞入效果)
推荐阅读最新更新时间:2024-03-16 14:33
一种基于单片机的红外遥控信号解码新方法
引言 随着家用电器、试听产品的普及,红外遥控器已经被广泛应用在各种类型的家电产品中(如遥控开关、智能开关等)。红外遥控是一种把红外线作为载体的控制方式,由于其波长远小于无线电的波长,因此在采用红外遥控方式时不会干扰其他电器的正常使用,也不会影响临近的无线电设备。另外,红外遥控器件具有体积小、功耗低、性价比高的优点,是理想的人机输入设备,非常适合电子工程师和电子爱好者DIY开发与制作。红外遥控系统主要由发射和接收两大部分组成,由于发射部分使用的是购买来的遥控器成品,所以本文的重点是红外接收、解码部分。下面将从硬件结构和软件编程两个方面出发,介绍一种基于51系列单片机汇编语言的红外遥控解码新方法。 1 硬件构成 红外接收头的种类
[单片机]
51单片机+ESP8266点亮LED小灯
ESP8266模块采用STA工作模式,先在电脑上用串口调试助手,将ESP8266模块设置为STA模式,波特率9600,具体指令如下: 1.设置AP模式 AT+CWMODE=2 2.复位生效 AT+RST 3.配置热点 AT+CWSAP= test , 12345678 ,1,3 这样即使ESP8266复位也不会将这些信息擦除,直接上后面的指令就可以 单片机接ESP8266一定注意两者一定要共地,否则ESP8266不能正常工作,ESP8266电源要3.3V供电,5V的貌似不行,ESP8266的EN脚外接一个1K欧的电阻再接3.3V电源 #include reg52.h typedef unsigned char u8; typed
[单片机]
AT89S51单片机多路开关控制发光二极管显示的设计
1. 如图4.3.1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。 2. 电路原理图 图4.3.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上; (2. 把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1-K4端口上; 4. 程序设计内容 (1. 开关状态检测 对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的
[单片机]
基于51单片机+DS1302时钟模块+LCD1602显示
DS1302时钟模块相关介绍 基本介绍 概述 DS1302 可慢速充电实时时钟芯片包含实时时钟/日历和 31 字节的非易失性静态 RAM。它经过一个简 单的串行接口与微处理器通信。实时时钟/日历可对秒,分,时,日,周,月,和年进行计数,对于小于 31 天的月,月末的日期自动进行调整,还具有闰年校正的功能。时钟可以采用 24 小时格式或带 AM(上 午)/PM(下午)的 12 小时格式。31 字节的== RAM== 可以用来临时保存一些重要数据。使用同步串行通信, 简化了 DS1302 与微处理器的通信。与时钟/RAM 通信仅需3 根线:(1)RST(复位),(2)I/O(数据线) 和(3)SCLK(串行时钟)。数据可以以每次一个字
[单片机]
51单片机之数码管显示原理
一个数码管有八段:A,B,C,D,E,F ,G,H即由八个发光二极管组成;发光二极管导通的方向是一定的(导通电压一般取为1.7V),这八个发光二极管的公共端有两种:可以分别接+5V(即为共阳极数码管)或接地(即为共阴极数码管) 共阳极: 位选为高电平(即1)选中数码管, 各段选为低电平(即0接地时)选中各数码段, 共阴极: 位选为低电平(即0)选中数码管, 各段选为高电平(即1接+5V时)选中各数码段。 1位数码显示数字其实就是这8个发光二极管,哪个亮哪个不亮,从而达到显示数字的效果,亮和不亮无非就是0或1。以共阴极为例。 数码管的段依次从低到高如图中的a,b,c,d,e,f,g,h(h是小数点),如果要显示数字1,即b,
[单片机]
数码管动态扫描三种实现方法
本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c51;找到数码管部分的原理图即可.这是一整个单片机开发板的电路图其他的忽略. 以下是3个程序的源码: /**********利用定时器定时50毫秒动态扫描数码管***********/ /** *功能:定时器T1实现数码管动态扫瞄123456(if) *作者:徐冉 *日期:2013-06-12-22:10 *备注:不同的方法实现显示设备的动态扫描,节约能耗 **/ /****************AT89C52-RC MCU*************/ /****************51hei开发板*************/ #include reg52.h
[单片机]
51单片机与串口通信代码
串口调试 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。 程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #i nclude reg51.h #i nclude stdio.h #i nclude string.h #define INBUF_LEN 4 //数据长度 unsigned char inbuf1 ; unsigned char
[单片机]
51单片机的启动文件内容
在我们使用kei c51创建一个 51单片机 项目时,会有如下图所示的提示: keil 创建新项目时,提示是否添加启动文件 一般情况下,需要选择“是”。当然,也可以选择不加。那么,这个启动文件的作用是什么?什么情况下需要加,什么情况下可以不加? 今天我们就来详细了解一下这个启动文件的内容,看明白这个内容后,我们就会有种恍然大悟的感觉:“哦,原来是这样啊!” 启动代码第一段 ▼以下是启动代码原文第一段: $NOMOD51 ;------------------------------------------------------------------------------ ; This file is
[单片机]