本章博客写的内容主要围绕动态数码管显示,动态数码管显示与静态数码管显示比较稍有变化,主要在添加延时函数这点上
1.首先将上一章节使用子函数方法的代码复制过来
将Nixie( , )移到下方while循环中(因为要实现效果为动态的)
void main()
{
while(1)
{
Nixie(1,1);
Nixie(2,2);
Nixie(3,3);
}
}
编译下载后效果为:
对于这种效果要进行消影的处理
因为单片机编译处理顺序是按照:位选 段选 (清零),位选 段选 ,位选 段选
由上一段的段选到下一部分的位选需要进行清零处理
接下来主要进行:增添延时函数和清零处理
2.在STC-ISP中生成相应的延时函数,函数时间为1ms,并对其进行灵活修改,如下
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
先延时再清零
编译下载后效果如下:
3.还可以了解一下数码管的驱动方式
1)单片机直接扫描:硬件设备简单,但会耗费大量的单片机CPU时间
2)专用驱动芯片:内部自带显存、扫描电路,单片机只需告诉它显示什么即可
关键字:51单片机 动态数码管显示 延时函数
引用地址:
51单片机 动态数码管显示
推荐阅读最新更新时间:2024-11-12 17:47
1-基于51单片机的病床呼叫系统仿真
具体实现功能 具体功能: (1)当病人紧急呼叫时,会产生声、光提示,并显示病人编号(房间号和床号); (2)根据病人病情设置优先级,当有多人呼叫时,病情严重者优先; (3)医护人员处理完当前最高级别呼叫后,系统按优先级别显示其它呼叫病人的号码; (4)可设定呼叫倒计时,总床位数为24个。 注意:本设计以仿真为主!! 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM
[单片机]
51单片机——SPI、DS1302时钟 C语言入门编程
SPI: 写时序: 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302, 数据输入从低位(位0)开始。(先写低位) 读时序: 在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。(先读低位,读取后将IO设置为0,否则读出的数据会出错) DS1302: DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态 RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM指示决定采用24或12小
[单片机]
80C51单片机-LED流水灯效果(汇编版)
本文将介绍一个基于8051单片机的跑马灯实验,通过编写汇编代码实现LED流水灯效果。这个实验将使用8051单片机的P2口来控制8个LED灯,实现流水灯效果。 实验准备 8051单片机 8个LED灯 8PIN排线 JP11(P2)和J12(LED灯)连接 将JP11(P2)和J12(LED灯)使用8PIN排线连接起来。 代码解析 ORG 0000h ; 程序起始地址 AJMP start ; 跳转到start标签 ORG 0030h ; 设置程序的起始地址 start: MOV A,#0ffh ; 将累加器A的值设置为0ffh(1111 1111) CLR C ; 清除进位标志位C M
[单片机]
如何用AT89C2051单片机自制一个倒计时器
倒计时器在生活非常有用,用单片机自制,不但电路简单,而且功能可根据需要自行设计。由74系列、40系列小规模数字芯片设计的倒计时器非常多,但有显示不直观(无LED数码管);调整参数不灵活;计时精度低(采用RC振荡)等缺点。 一、功能介绍 1. 独立的三路倒计时。均可独立设置启动、关闭。 2. 范围:0~20小时,可任意设定。关机后数据不丢失。计时精度高:《0.1S 3.。独立的三路输出: a:第1路 蜂鸣器输出: 15S b:第2路PNP晶体管输出:5S c:第3路 PNP晶体管输出:直致关机 二、工作原理 电路见上图整机由89c2051、三位LED数码管、K1-K4、R、T等元器件组成。89C2051内部T1定时器完成1
[单片机]
51单片机数码管动态时钟电路图
首先准备材料吧:SEG数码管4个共阴极(小编用的共阳极的)、10k排阻(小编没有直接做了个)、51单片机、按钮、30p电容、12MHz晶振、10k电阻、10uf电容、插针、74ls245(小编用三极管代替了)。 成品图 原理图 主程序: #include Key.h #include led.h uchar timeSetBuff ={'0','0',LED_MODE_COUNT,'0','0',LED_MODE_COUNT,'0','0'};//时钟数据缓冲区 uchar alarmSetBuff ={'0'
[单片机]
MSP430F149学习随笔
1.延时函数 #define CPU_F ((double)8000000) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) 其中,__delay_cycles((long)(CPU_F*(double)x/1000.0))并不是真正的函数, 只是提供编译器内联展开,该函数并不支持变量参数, 其参数只能是常数。 在头文件intrinsics.h中可以找到如下定义: /* Insert a delay with a specific number of cycles. */ __intrinsic void __delay_cycle
[单片机]
关于51单片机编程的一些错误总结
(1)这两天一直在受一个问题的干扰,那就是做单片机串口通信的时候,有些数据总是传得不对:当显示0~f这些数字的时候,显示没有错误,而显示其它8位数据的时候都错了,发送11(16进制)时,到单片机上居然是49(十进制),这显然是不对的,一直怀疑是程序的问题,反复地检查和修改之前编的一个数码管动态显示子程序,没有错,那只能是串口初始化和串口子程序有问题了……这么想太错了……先入为主,两天以来,都没解决(其实也没什么心情解决了,又是临近周末,都在看老友记),今天打定一定要解决了,就开始研究,刚开始一直在沿着老路,反复修改程序。。。。后来无意间一瞥,看到晶振上标着“12.000”,瞬间明白所有问题所在,立刻改为11.0592Mhz的晶振,
[单片机]
51单片机OLED12864 I2C接口使用教程
现在能买到的OLED12864显示屏大多为SPI和I2C接口的,I2C通信协议只需要两条总线就可以进行通信,下面介绍一下如何用51单片机使用I2C接口的OLED12864。 首先介绍一下I2C通信协议,I2C(Inter-Integrated Circuit)字面上的意思是集成电路之间,它其实是I2CBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I2C的正确读法为“I平方C”( I-squared-C )。 I2C只使用两条双向漏极开路(Open Drain)(串行数据(SDA)及串行时钟频率(S
[单片机]