没有合适的资源?快使用搜索试试~ 我知道了~
首页AT89C51控制数码管显示数字序列:0-9
AT89C51控制数码管显示数字序列:0-9
5星 · 超过95%的资源 需积分: 47 40 下载量 61 浏览量
更新于2024-09-10
3
收藏 3KB TXT 举报
本资源主要介绍了如何在数码管上通过编程实现依次显示数字0-9的功能。首先,我们来看第一部分,使用AT89C51单片机配合74HC244接口和7段数码管MPX2-CC/CA来实现每秒轮流显示0-9。在这个示例中,作者定义了一个`Ledtab`数组,存储了每个数字对应的数码管显示码。`t0_init`函数用于初始化定时器T0,以500ms的时间间隔切换显示数字,`led_dis`函数则根据计数器`cnt`的值动态更新数码管显示,`t0_int`中断服务程序用于增加计数器。 第二部分,代码演示了如何处理加减法运算时的两位数显示。这里使用了两个独立的数码管位,`shi`和`ge`分别表示十位和个位。通过`P1_0`和`P1_1`控制哪一位数码管亮起,同时利用`Add`和`Sub`引脚进行加减操作。`delay`函数确保了字符间的正确切换。在`main`函数中,程序进入一个无限循环,不断调用`led_dis`函数显示当前的十位和个位数字。 这个资源提供了如何利用C语言编程,结合硬件资源,实现数码管上动态显示数字的基本方法,适合初学者学习单片机和数码管的驱动技术。通过这个实例,学习者可以理解定时器的使用、数码管的编码原理以及如何处理输入输出操作。无论是基础的数字显示还是扩展到简单的算术运算,这段代码都是一个很好的实践平台。
资源详情
资源推荐
1.编程实现在数码管上依次显示数字0-9,并延时一段时间
器件:AT89C51,RES,BUTTON,74HC244(),7SEG-MPX2-CC(共阴),7SEG-MPX2-CA(共阳)
参照书本P229
2.变成实现在数码管上依次显示数字0-9,间隔时间1S
#include<reg51.h>
unsigned char code Ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char cnt,i;
sbit P1_1=P1^1;
void t0_init(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void led_dis(unsigned char num)
{
P2=~Ledtab[num];
P1_1=0;
}
void main(void)
{
t0_init();
while(1)
{
if(cnt==20)
{
cnt=0;
器件:AT89C51,RES,BUTTON,74HC244(),7SEG-MPX2-CC(共阴),7SEG-MPX2-CA(共阳)
参照书本P229
2.变成实现在数码管上依次显示数字0-9,间隔时间1S
#include<reg51.h>
unsigned char code Ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char cnt,i;
sbit P1_1=P1^1;
void t0_init(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void led_dis(unsigned char num)
{
P2=~Ledtab[num];
P1_1=0;
}
void main(void)
{
t0_init();
while(1)
{
if(cnt==20)
{
cnt=0;
i++;
if(i==10)i=0;
}
led_dis(i);
}
}
void t0_int(void) interrupt 1 using 1
{
cnt++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
3.编程实现“+”,“-”按键控制数字的加和减,并用2位数码管显示
#include<reg51.h>
unsigned char code Ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char cnt=33;
sbit P1_1=P1^1;
sbit P1_0=P1^0;
sbit Add=P1^4;
sbit Sub=P1^5;
void delay(void)
{
unsigned int i;
for(i=0;i<2000;i++);
}
void led_dis(unsigned char num)
{
unsigned char shi,ge;
shi=num/10;
if(i==10)i=0;
}
led_dis(i);
}
}
void t0_int(void) interrupt 1 using 1
{
cnt++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
3.编程实现“+”,“-”按键控制数字的加和减,并用2位数码管显示
#include<reg51.h>
unsigned char code Ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char cnt=33;
sbit P1_1=P1^1;
sbit P1_0=P1^0;
sbit Add=P1^4;
sbit Sub=P1^5;
void delay(void)
{
unsigned int i;
for(i=0;i<2000;i++);
}
void led_dis(unsigned char num)
{
unsigned char shi,ge;
shi=num/10;
剩余6页未读,继续阅读
钱成龙
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功