用89C51单片机设计一款按键计数系统,要求用两位数码管进行00~99的循环计数,每按键一次,计数值加1,当计数值超过99时从0重新开始,计数初始值为95,按键用中断方式识别

1个回答
展开全部
摘要 硬件设计
按键计数系统的硬件设计包括如下几个部分:
1. 89C51单片机:作为系统的控制中心,负责按键输入的检测、计数值的加减、数码管显示、中断服务等功能。
2. 按键开关:用于触发中断,启动计数器计数。
3. 74HC595芯片:通过串行通信方式实现对两位数码管的控制。
4. 共阴数码管:用于显示0~99之间的数字。
软件设计
软件设计方面,需要实现以下功能:
1. 按键输入检测:通过外部中断的方式对按键进行检测,每次按键产生一个中断信号。
2. 计数器计数:中断服务程序中对计数值进行加1和判断是否超过99的操作,并将结果存储。
3. 数码管显示:将计数器计算所得结果转换为BCD码,通过74HC595芯片输出到数码管中进行显示。
4. 循环计数:当计数值超过99时,将计数值重新设为0,重新开始循环计数。
咨询记录 · 回答于2024-01-02
用89C51单片机设计一款按键计数系统,要求用两位数码管进行00~99的循环计数,每按键一次,计数值加1,当计数值超过99时从0重新开始,计数初始值为95,按键用中断方式识别
硬件设计 按键计数系统的硬件设计包括以下几个部分: 1. 89C51单片机:作为系统的控制中心,负责按键输入的检测、计数值的加减、数码管显示、中断服务等功能。 2. 按键开关:用于触发中断,启动计数器计数。 3. 74HC595芯片:通过串行通信方式实现对两位数码管的控制。 4. 共阴数码管:用于显示0~99之间的数字。 软件设计 软件设计方面,需要实现以下功能: 1. 按键输入检测:通过外部中断的方式对按键进行检测,每次按键产生一个中断信号。 2. 计数器计数:中断服务程序中对计数值进行加1和判断是否超过99的操作,并将结果存储。 3. 数码管显示:将计数器计算所得结果转换为BCD码,通过74HC595芯片输出到数码管中进行显示。 4. 循环计数:当计数值超过99时,将计数值重新设为0,重新开始循环计数。
代码如下
#include #define uchar unsigned char uchar code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00 }; uchar count = 95; // 计数变量,初始值为95 sbit key = P2^0; // 按键输入口,连接外部中断0 sbit SCK = P1^0; // 74HC595串行时钟输入 sbit RCLK = P1^1; // 74HC595锁存器时钟 sbit SRCLK = P1^2; // 74HC595串行数据输入 sbit duan = P2^6; // 段选端口 sbit wei = P2^7; // 位选端口 void delay(uchar i) { // 基础延迟函数,约延迟1ms uchar j, k; for (j = i; j > 0; j--) for (k = 125; k > 0; k--); void send_byte(uchar dat) { // 发送一个字节的函数 uchar a; SRCLK = 0; for (a = 0; a < 8; a++) { SCK = 0; SRCLK = 1;
if(dat & 0x80) { SRCLK = 1; } else { SRCLK = 0; } dat // 数据发送函数 RCLK = 0; send_byte(address); send_byte(dat); RCLK = 1; // 锁存数据 void display(uchar num) { // 数码管显示函数 P0 = table[num / 10]; // 发送高位数码 duan = 1; // 选择高位显示段 delay(1); // 延迟一定时间 duan = 0; send(1, table[num % 10]); // 发送低位数码 P0 = 0x00; duan = 2; delay(1); duan = 0; void key_isr() interrupt 0 { // 按键中断服务程序 key = 1; // 重置中断标志位 count++; // 计数器加1 if(count > 99) { count = 0; // 超过99时,重新从0开始计数 } display(count); // 更新计数器显示值 void main() { // 在这里添加主函数代码
已赞过
你对这个回答的评价是?
评论 收起
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消