51单片机做只用一个点阵的一个电子沙漏显示沙漏效果的代码

时间: 2024-01-24 11:04:26 浏览: 38
好的,以下是一个基于51单片机和一个点阵的电子沙漏显示沙漏效果的示例代码: ```c #include <reg51.h> // 定义数码管和时钟控制引脚 sbit Dig1 = P2^0; sbit Dig2 = P2^1; sbit Dig3 = P2^2; sbit CLK = P2^3; sbit DIO = P2^4; void delay(unsigned int t) { unsigned int i; while(t--) { for(i = 0; i < 120; i++); } } void writeData(unsigned char dat) { unsigned char i; CLK = 0; for(i = 0; i < 8; i++) { DIO = dat & 0x01; dat >>= 1; CLK = 1; CLK = 0; } } void writeCmd(unsigned char cmd) { unsigned char i; CLK = 0; for(i = 0; i < 8; i++) { DIO = cmd & 0x01; cmd >>= 1; CLK = 1; CLK = 0; } } void init() { writeCmd(0x88); // 打开显示,设置亮度 writeCmd(0x40); // 设置地址模式为固定地址模式 writeCmd(0xC0); // 设置起始地址为0 } void display(unsigned char num) { unsigned char i; writeCmd(0x44); // 设置自动地址加1模式 for(i = 0; i < 8; i++) { if(num & 0x01) { writeData(0xFF); } else { writeData(0x00); } num >>= 1; } } void main() { unsigned char cnt = 32; // 初始时间为32秒 unsigned char i, j; init(); // 初始化点阵显示 while(1) { for(i = 0; i < 8; i++) // 逐行显示沙漏 { for(j = 0; j <= i; j++) { display(1 << j); // 显示第i行的前j列 Dig1 = 1; Dig2 = 0; Dig3 = 0; delay(1); // 显示1ms } for(j = i; j >= 0; j--) { display(1 << j); // 显示第i行的前j列 Dig1 = 1; Dig2 = 0; Dig3 = 0; delay(1); // 显示1ms } } cnt--; // 时间递减 if(cnt == 0) // 时间到了,重新开始 { cnt = 32; } } } ``` 以上代码实现了一个32秒的电子沙漏,使用一个点阵显示沙漏效果,并且支持调整亮度。具体实现方法是:首先初始化点阵显示,然后在死循环中不断地逐行显示沙漏,每次显示1ms,直到时间递减为0,重新开始计时。每行的长度逐渐增加,从1列到8列,然后再逐渐减少,从8列到1列,形成一个沙漏效果。

相关推荐

最新推荐

recommend-type

51单片机驱动16×16LED点阵显示动画汉字汇编程序

这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子。
recommend-type

51单片机整数二一十进制转换的快速算法

无论是与传统汇编语言子程序,还是与使用sprintf()函数的程序相比,快速算法都有很大的速度优势;是一种针对8位机的创新算法,具有很强的工程实用性,值得推广应用。
recommend-type

基于AT89C51单片机的LED汉字显示屏设计方案

研究了基于AT89C51单片机16×16 LED汉字滚动显示屏的设计与运用Proteus软件的仿真实现。...能帮助广大电子爱好者了解汉字的点阵显示原理,认识单片机的基本结构、工作原理及应用方法,并提高单片机知识技术的运用能力。
recommend-type

C51单片机课程设计电子钟设计代码及运行效果照片

利用CPU的定时器和实验仪上提供的数码显示电路,设计一个电子钟。格式如下:XX:XX:XX,由左到右分别为:时:分:秒。由于实验箱限制,只有4个数码管,因此采取折中办法更好的实现效果,即计时一小时以内和一小时...
recommend-type

51单片机DIY制作实例:旋转LED数字显示电子钟(含C语言源程序)

该文是一篇基于51单片机的DIY制作详述,作者此时是51单片机初学者,这个制作也可以作为不少单片机学习者的练手实验,如进行多样衍生会得到不错的设计。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

优化MATLAB分段函数绘制:提升效率,绘制更快速

![优化MATLAB分段函数绘制:提升效率,绘制更快速](https://ucc.alicdn.com/pic/developer-ecology/666d2a4198c6409c9694db36397539c1.png?x-oss-process=image/resize,s_500,m_lfit) # 1. MATLAB分段函数绘制概述** 分段函数绘制是一种常用的技术,用于可视化不同区间内具有不同数学表达式的函数。在MATLAB中,分段函数可以通过使用if-else语句或switch-case语句来实现。 **绘制过程** MATLAB分段函数绘制的过程通常包括以下步骤: 1.
recommend-type

SDN如何实现简易防火墙

SDN可以通过控制器来实现简易防火墙。具体步骤如下: 1. 定义防火墙规则:在控制器上定义防火墙规则,例如禁止某些IP地址或端口访问,或者只允许来自特定IP地址或端口的流量通过。 2. 获取流量信息:SDN交换机会将流量信息发送给控制器。控制器可以根据防火墙规则对流量进行过滤。 3. 过滤流量:控制器根据防火墙规则对流量进行过滤,满足规则的流量可以通过,不满足规则的流量则被阻止。 4. 配置交换机:控制器根据防火墙规则配置交换机,只允许通过满足规则的流量,不满足规则的流量则被阻止。 需要注意的是,这种简易防火墙并不能完全保护网络安全,只能起到一定的防护作用,对于更严格的安全要求,需要
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。