基于单片机的自动计数器设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
uchar i; fo( r i=0;i<8;i++) {
dat <<= 1; P_HC595_SER = CY; P_HC595_SRCLK = 1; P_HC595_SRCLK = 0; } }
35 2015 年第 3 期
设计研究
周克辉:基于单片机的自动计数器的设计
/************************* 自定义函数 ********* **********************/
Key words:single chip microcomputer;counter;LED display;pulse detection
1 计数器设计的要求及内容
(1)设计要求。 ①自动计数器能检测到相应的脉冲信 号。 ②自动计数器能显示相应的计数值。 ③自动计数器系 统计数范围 0~9999。
/************* IO 口定义 **************/ sbit P_HC595_SER = P4^0;//pin 14 SER data input sbit P_HC595_RCLK = P5^4;//pin 12 RCLk store (latch) clock sbit P_HC595_SRCLK = P4^3; //pin 11 SRCLK Shift data clock /**************** 向 HC595 发送一个字节函数 ** ****************/ void Send_595(uchar dat) {
(上接第 18 页) 够的资金投入农机节油技术上, 长久下来 恰恰造成了极大的浪费,如资金不足没有钱去更新旧的农 机,反而造成能源的消耗量大。所以国家应该加大投入,在 推广农机节油技术之前,要先完善农机技术。当然,资金投 入的同时,还要找到有效办法解决节油技术遇到的问题。
(2)定期对农机操作人员进行严格的培训。 要想让农 机节油技术更加成熟和普及,首要任务就是对农机手进行 培训,提高他们的基本素质,让他们认识到能源短缺的现 实和环境保护的迫切。 还要对农机手如何操作以及操作
c=0; }
}
// 外部中断 0
while(1){};
Βιβλιοθήκη Baidu
// 计数值加一
}
// 刷新数码管显示
5 系统调试
系统设计完成后,在调试过程中按下自动计数器计数 按键,模拟脉冲的输入。 计数器上显示 000,再按一次显示 001...一直计数显示到 999,按下复位按钮,电子计数器显 示为 000,计数器复位清零,并从 000 重新开始计数,经实 验验证,该系统能够完成预定的设计目标。
设计研究
识别键盘上的闭合键,它具有结构简单,使用灵活等特点, 因此被广泛应用于单片机系统。
并行输出的移位寄存器。 由于它自带锁存器,所以其数据 在移位寄存器中的移位与锁存器的输出是独立的,当数据 移位时,可以保持锁存器输出的数据不改变,等所有 8 位 数据全部串入完成移位操作后, 一次性的将数据打入锁 存器中,从而实现了并行输出的同步改变。
4 软件设计
#include <reg51.h> #define uchar unsigned char #define uint unsigned int long c=0;
// 计数值
图 1 单片机最小系统图 组成键盘的按钮有触点式和非触点式两种,单片机中 应用的一般是由机械触点组成的。 如图 2 所示,当开关 S 未被按下时,输入为高电平,S 闭合后,输入为低电平。 单
36 2015 年第 3 期
基于单片机的自动计数器设计
作者: 作者单位: 刊名:
英文刊名: 年,卷(期):
(3)脉冲检测方式的选择。 方案一:脉冲从 I/0 口输 入,单片机通过检测相关 I/O 口的高低电平来判断脉冲输
入。 方案二:脉冲从 P3.2(INT0 )输入,单片机通过检测 P3. 2(INT0 )的下降沿来检测脉冲输入。 两种方案都能实现单 片机对脉冲的检测,但第一种方法需要考虑外部键盘的抖 动现象造成的多次计数问题,而方案二通过下降沿来检测 可以解决这个问题,抗干扰能力更强,所以选择方案二。
收稿日期:2015-01-28 作者简介:周克辉,讲师。
信号的时间间隔测量。 且单片机的控制电路很容易实现 扩展故采用方案三。
(2)LED 显示模块驱动选择。 方案一:使用单片机 I/O 口直接驱动,通过控制 I/O 口输出高低电平,点亮或熄灭 8 位数码管,方法简单。 方案二:使用 74HC595 芯片驱动数 码管,74HC595 自带锁存功能,需要与单片机连接的线少, 占用单片机资源少。 方案一采用的直接控制法虽然操作 简单,但需要大量的 I/0 口来控制,浪费了资源,而方案二 使用 74HC595 不但克服了这个问题,而且能够锁存数据, 更符合设计要求,所以选择方案二。
过程中怎样解决遇到的问题进行技术培训,让操作人员可 以正确完成整个农机操作过程,以减少能源的浪费和机器 的损坏。
(3)加强对农机节油技术的宣传。 农机部门应该加大 对农机节油技术的宣传,而宣传的首要就是改变农机手传 统的思想,大力宣传节油的好处,让人们从心底接受农机 节油技术, 让每一个农机手都意识到农机节油技术的重 要和迫切。
计数器的设计,计数器主要由脉冲发生模块、脉冲检测模块、LED 显示驱动电路模块、单片机处理模块组成。脉冲发生
模块将使用扩展键盘产生脉冲信号,通过单片机的 I/O 口检测到脉冲信号,并使计数值加一,最后将计数值送入到
LED 显示模块显示当前计数值。
关键词:单片机;计数器;LED 显示;脉冲检测
中图分类号:TP332.12
Abstract:With the continuous development and progress of counter technology,the kind of counter is becoming more and more various and the application scope is more and more wide. This paper introduced the design of automatic counter based on sin鄄 gle chip microcomputer,the counter was mainly composed of a pulse generating module,a pulse detection module,a LED display driver circuit module and a SCM processing module. Pulse generating module can generate pulse signals with extended keyboard and detect the pulse signals through the I/O port of SCM,and make the count value plus one,finally it would send the count value to the LED display module to display current count value.
(2)设计主要内容。 基于单片机构成的产品自动计数 器研究的主要内容包括:通过单片机检测外部脉冲,每检 测到一次外部脉冲,计数值加 1,并送入 LED 显示模块显 示。 本次设计主要是并制作脉冲检测电路,,LED 驱动显 示电路,单片机处理模块及软件程序的设计等。
2 设计方案选择及论证
(1)处理器的选择。方案一:采用多种数字逻辑电路来 实现逻辑控制、主门、门控、计数单元的设计要求,这样设 计的电路整体比较复杂, 而且不宜完成发挥部分的功能 要求。所以方案一不采用。方案二:可以采用 FPGA 来实现 逻辑控制、主门、门控、计数单元的设计要求,并且设计方 便,但由于对 FPGA 的技术原理掌握不够熟练,所以放弃 方案二。 方案三:系统采用 STC89C51 为核心的单片机控 制系统,实现原理图中的逻辑控制、主门、门控、计数的设 计 要 求 单 片 机 计 数 器 的 方 式 控 制 寄 存 器 TMOD 中 的 GATE 位 =1 时,可以很方便的进行 INT0 引脚的外部输入
void Display(uchar zi,uchar wei) { 数码管显示
Send_595(T_COM[wei]); Send_595(t_display[zi]); P_HC595_RCLK = 1; P_HC595_RCLK = 0; }
// 单个
void Display_Al( l ){
3 硬件电路设计
单片机最小系统如图 1 所示。 单片机的最小系统是由电源、复位、晶振、/EA=1 组成。 脉冲输入使用外部扩展键盘,键盘是由若干按钮组成 的开关矩阵,它是单片机系统中最常用的输入设备,一般 单片机系统中采用非编码键盘, 非编码键盘是由软件来
34 2015 年第 3 期
周克辉:基于单片机的自动计数器设计
// 设置外部中断 0 为下降沿触发方式
EX0=1;
// 开中断
PX0=1;
// 设置为高优先级
}
/********************** 主函数 ***************
*********/
void main(void)
{
uchar i;
fo( r i=0;i<8;i++)
// 数码管清 0
// 计数值显示
Display(c/1000,4);
// 千位
Display((c%1000)/100,5);
// 百位
Display(((c%1000)%100)/10,6); // 十位
Display(c%10,7);
// 个位
}
void int0_ini( t ){
// 外部中断 0 初始化
TCON=TCON|0x01;
片机通过检测 P3.2(INT0 )的下降沿来检测脉冲输入。
/************* 数码管显示 **************/
uchar code t_display[]={
// 标准字库
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
第 42 卷第 3 期 Vol.42 No.3
时代农机
TIMES AGRICULTURAL MACHINERY
基于单片机的自动计数器设计
2015 年 3 月 Mar.2015
周克辉
(湖南财经工业职业技术学院,湖南 长沙 410000)
摘 要:随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广。 基于单片机的自动
0x77,0x7C,0x39,0x5E,0x79,0x71,
//black
0x00};
// 公阴极
uchar code T_COM[]={0xFE,0xFD,0xFB,0xF7,0xEF,
0xDF,0xBF,0x7F};// 位码
图 2 脉冲输入模块 (3)LED 显示电路模块。 如图 3 所示。
图 3 LED 显示电路模块 LED 显示电路模块模块使用两片 74HC595 动态驱动 8 个数码管,由于 74HC595 拉低能力比较强,所以数码管 使用共阴极的方式。 74HC595 是带锁存功能的三态输出的 8 位串行输入 /
文献标识码:A
文章编号:2095-980X(2015)03-0034-03
On Design of Automatic Counter Based on Single Chip Microcomputer
ZHOU Ke-hui
(Hunan Industrial Vocational and Technical College,Changsha,Hunan 410000,China)
{
Display(0x10,i);
}
int0_ini( t );
// 外部中断 0 初始化
Display_Al( l );
// 初始化数码管显示
EA=1;
// 开总中断
void serve_0() interrupt 0{ c++; Display_Al( l ); i( f c>=10000) {
dat <<= 1; P_HC595_SER = CY; P_HC595_SRCLK = 1; P_HC595_SRCLK = 0; } }
35 2015 年第 3 期
设计研究
周克辉:基于单片机的自动计数器的设计
/************************* 自定义函数 ********* **********************/
Key words:single chip microcomputer;counter;LED display;pulse detection
1 计数器设计的要求及内容
(1)设计要求。 ①自动计数器能检测到相应的脉冲信 号。 ②自动计数器能显示相应的计数值。 ③自动计数器系 统计数范围 0~9999。
/************* IO 口定义 **************/ sbit P_HC595_SER = P4^0;//pin 14 SER data input sbit P_HC595_RCLK = P5^4;//pin 12 RCLk store (latch) clock sbit P_HC595_SRCLK = P4^3; //pin 11 SRCLK Shift data clock /**************** 向 HC595 发送一个字节函数 ** ****************/ void Send_595(uchar dat) {
(上接第 18 页) 够的资金投入农机节油技术上, 长久下来 恰恰造成了极大的浪费,如资金不足没有钱去更新旧的农 机,反而造成能源的消耗量大。所以国家应该加大投入,在 推广农机节油技术之前,要先完善农机技术。当然,资金投 入的同时,还要找到有效办法解决节油技术遇到的问题。
(2)定期对农机操作人员进行严格的培训。 要想让农 机节油技术更加成熟和普及,首要任务就是对农机手进行 培训,提高他们的基本素质,让他们认识到能源短缺的现 实和环境保护的迫切。 还要对农机手如何操作以及操作
c=0; }
}
// 外部中断 0
while(1){};
Βιβλιοθήκη Baidu
// 计数值加一
}
// 刷新数码管显示
5 系统调试
系统设计完成后,在调试过程中按下自动计数器计数 按键,模拟脉冲的输入。 计数器上显示 000,再按一次显示 001...一直计数显示到 999,按下复位按钮,电子计数器显 示为 000,计数器复位清零,并从 000 重新开始计数,经实 验验证,该系统能够完成预定的设计目标。
设计研究
识别键盘上的闭合键,它具有结构简单,使用灵活等特点, 因此被广泛应用于单片机系统。
并行输出的移位寄存器。 由于它自带锁存器,所以其数据 在移位寄存器中的移位与锁存器的输出是独立的,当数据 移位时,可以保持锁存器输出的数据不改变,等所有 8 位 数据全部串入完成移位操作后, 一次性的将数据打入锁 存器中,从而实现了并行输出的同步改变。
4 软件设计
#include <reg51.h> #define uchar unsigned char #define uint unsigned int long c=0;
// 计数值
图 1 单片机最小系统图 组成键盘的按钮有触点式和非触点式两种,单片机中 应用的一般是由机械触点组成的。 如图 2 所示,当开关 S 未被按下时,输入为高电平,S 闭合后,输入为低电平。 单
36 2015 年第 3 期
基于单片机的自动计数器设计
作者: 作者单位: 刊名:
英文刊名: 年,卷(期):
(3)脉冲检测方式的选择。 方案一:脉冲从 I/0 口输 入,单片机通过检测相关 I/O 口的高低电平来判断脉冲输
入。 方案二:脉冲从 P3.2(INT0 )输入,单片机通过检测 P3. 2(INT0 )的下降沿来检测脉冲输入。 两种方案都能实现单 片机对脉冲的检测,但第一种方法需要考虑外部键盘的抖 动现象造成的多次计数问题,而方案二通过下降沿来检测 可以解决这个问题,抗干扰能力更强,所以选择方案二。
收稿日期:2015-01-28 作者简介:周克辉,讲师。
信号的时间间隔测量。 且单片机的控制电路很容易实现 扩展故采用方案三。
(2)LED 显示模块驱动选择。 方案一:使用单片机 I/O 口直接驱动,通过控制 I/O 口输出高低电平,点亮或熄灭 8 位数码管,方法简单。 方案二:使用 74HC595 芯片驱动数 码管,74HC595 自带锁存功能,需要与单片机连接的线少, 占用单片机资源少。 方案一采用的直接控制法虽然操作 简单,但需要大量的 I/0 口来控制,浪费了资源,而方案二 使用 74HC595 不但克服了这个问题,而且能够锁存数据, 更符合设计要求,所以选择方案二。
过程中怎样解决遇到的问题进行技术培训,让操作人员可 以正确完成整个农机操作过程,以减少能源的浪费和机器 的损坏。
(3)加强对农机节油技术的宣传。 农机部门应该加大 对农机节油技术的宣传,而宣传的首要就是改变农机手传 统的思想,大力宣传节油的好处,让人们从心底接受农机 节油技术, 让每一个农机手都意识到农机节油技术的重 要和迫切。
计数器的设计,计数器主要由脉冲发生模块、脉冲检测模块、LED 显示驱动电路模块、单片机处理模块组成。脉冲发生
模块将使用扩展键盘产生脉冲信号,通过单片机的 I/O 口检测到脉冲信号,并使计数值加一,最后将计数值送入到
LED 显示模块显示当前计数值。
关键词:单片机;计数器;LED 显示;脉冲检测
中图分类号:TP332.12
Abstract:With the continuous development and progress of counter technology,the kind of counter is becoming more and more various and the application scope is more and more wide. This paper introduced the design of automatic counter based on sin鄄 gle chip microcomputer,the counter was mainly composed of a pulse generating module,a pulse detection module,a LED display driver circuit module and a SCM processing module. Pulse generating module can generate pulse signals with extended keyboard and detect the pulse signals through the I/O port of SCM,and make the count value plus one,finally it would send the count value to the LED display module to display current count value.
(2)设计主要内容。 基于单片机构成的产品自动计数 器研究的主要内容包括:通过单片机检测外部脉冲,每检 测到一次外部脉冲,计数值加 1,并送入 LED 显示模块显 示。 本次设计主要是并制作脉冲检测电路,,LED 驱动显 示电路,单片机处理模块及软件程序的设计等。
2 设计方案选择及论证
(1)处理器的选择。方案一:采用多种数字逻辑电路来 实现逻辑控制、主门、门控、计数单元的设计要求,这样设 计的电路整体比较复杂, 而且不宜完成发挥部分的功能 要求。所以方案一不采用。方案二:可以采用 FPGA 来实现 逻辑控制、主门、门控、计数单元的设计要求,并且设计方 便,但由于对 FPGA 的技术原理掌握不够熟练,所以放弃 方案二。 方案三:系统采用 STC89C51 为核心的单片机控 制系统,实现原理图中的逻辑控制、主门、门控、计数的设 计 要 求 单 片 机 计 数 器 的 方 式 控 制 寄 存 器 TMOD 中 的 GATE 位 =1 时,可以很方便的进行 INT0 引脚的外部输入
void Display(uchar zi,uchar wei) { 数码管显示
Send_595(T_COM[wei]); Send_595(t_display[zi]); P_HC595_RCLK = 1; P_HC595_RCLK = 0; }
// 单个
void Display_Al( l ){
3 硬件电路设计
单片机最小系统如图 1 所示。 单片机的最小系统是由电源、复位、晶振、/EA=1 组成。 脉冲输入使用外部扩展键盘,键盘是由若干按钮组成 的开关矩阵,它是单片机系统中最常用的输入设备,一般 单片机系统中采用非编码键盘, 非编码键盘是由软件来
34 2015 年第 3 期
周克辉:基于单片机的自动计数器设计
// 设置外部中断 0 为下降沿触发方式
EX0=1;
// 开中断
PX0=1;
// 设置为高优先级
}
/********************** 主函数 ***************
*********/
void main(void)
{
uchar i;
fo( r i=0;i<8;i++)
// 数码管清 0
// 计数值显示
Display(c/1000,4);
// 千位
Display((c%1000)/100,5);
// 百位
Display(((c%1000)%100)/10,6); // 十位
Display(c%10,7);
// 个位
}
void int0_ini( t ){
// 外部中断 0 初始化
TCON=TCON|0x01;
片机通过检测 P3.2(INT0 )的下降沿来检测脉冲输入。
/************* 数码管显示 **************/
uchar code t_display[]={
// 标准字库
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
第 42 卷第 3 期 Vol.42 No.3
时代农机
TIMES AGRICULTURAL MACHINERY
基于单片机的自动计数器设计
2015 年 3 月 Mar.2015
周克辉
(湖南财经工业职业技术学院,湖南 长沙 410000)
摘 要:随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广。 基于单片机的自动
0x77,0x7C,0x39,0x5E,0x79,0x71,
//black
0x00};
// 公阴极
uchar code T_COM[]={0xFE,0xFD,0xFB,0xF7,0xEF,
0xDF,0xBF,0x7F};// 位码
图 2 脉冲输入模块 (3)LED 显示电路模块。 如图 3 所示。
图 3 LED 显示电路模块 LED 显示电路模块模块使用两片 74HC595 动态驱动 8 个数码管,由于 74HC595 拉低能力比较强,所以数码管 使用共阴极的方式。 74HC595 是带锁存功能的三态输出的 8 位串行输入 /
文献标识码:A
文章编号:2095-980X(2015)03-0034-03
On Design of Automatic Counter Based on Single Chip Microcomputer
ZHOU Ke-hui
(Hunan Industrial Vocational and Technical College,Changsha,Hunan 410000,China)
{
Display(0x10,i);
}
int0_ini( t );
// 外部中断 0 初始化
Display_Al( l );
// 初始化数码管显示
EA=1;
// 开总中断
void serve_0() interrupt 0{ c++; Display_Al( l ); i( f c>=10000) {