基于单片机的计数器设计

基于单片机的计数器设计
基于单片机的计数器设计

百度文库- 让每个人平等地提升自我

- 1 -

湖南科技大学

单片机课程设计

题目基于单片机的计数器设计姓名李建雄

学院机电工程学院

专业测控技术与仪器

学号09030303

指导教师戴巨川

成绩

二〇一二年六月二日

百度文库- 让每个人平等地提升自我

- 2 -

摘要

本设计是根据我们所学习的单片机课程,按照课程要求进行的课程检验。单片

机技术是一个不可或缺的技术,尤其是对于我们测控技术与仪器专业来说它是我们必须要掌握的技能之一,使我们未来工作和生活的根本。现在的社会是一个信息科技高速发展的社会,也是一个电子技术和微机计算机迅速发展的时代,单片机的档次和水平在不断的提高,其应用的领域和范围也越来越广,成为现代电子系统中最重要的智能化核心部分。

随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。

现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。

计数器的应用范围也遍布印刷、纺织、印染、针织、电缆、电讯、军工、轻工、机械、开关、断路器、矿山、实行多班制的纺织行业的织布机、织带机、制线、制带、造纸、制革、薄膜、高压开关电器产品、试验设备,印刷设备、短路器、医疗、纺织、机械、仓库和码头的货运、行人及车辆过往的数量计数、冶金、食品、国防、包装、配料、石油、化工、发电、机床、仪表、自动化控制等行业。

百度文库- 让每个人平等地提升自我

- 3 - 目录

2.2设计原理 (6)

数码管的介绍 ............................................................................................................................... - 11 -3.3电路仿真. (11)

百度文库 - 让每个人平等地提升自我

- 4 -

a0a1a3a4a5a6a7a2b0b1b2b3b4b5b6b7a 7

a 6

a 5

a 4

a 3

a 2a 1

a 0

a 0a 1a 2a 3a 4a 5a 6

a 7

b 0b 3b 4b 5b 6

b 7

b 2b 1XTAL2

18

XTAL1

19

ALE 30EA

31

PSEN 29RST

9

P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78

P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD

17

P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1

AT89C51

C1

30pF

C230pF

XTAL

12MHz

R1

10k

C3

10uF

v c c

vcc

R6

10k

R5

10k

R4

10k

R3

10k

R2

10k

R8

10k

R7

10k

R9

10k vcc

R10

220

R11

220

............................................ - 12 - 第四章 软件设计 ............................. - 13 -

4.1 系统软件设计流程图 ................................................................................................................. - 13 - 4.2 程序 ............................................................................................................................................ - 14 -

5.1 系统性能测试与功能说明 ......................................................................................................... - 15 - 5.2 软件调试问题及解决 ................................................................................................................. - 15 -

百度文库- 让每个人平等地提升自我

参考文献................................. - 15 -计数器程序 (16)

第一章系统的功能要求

要求:

1.整个系统有较强的抗干扰能力.

2.计数范围:00~99.

3.将计数值准确显示出来.

应解决问题:

基于单片机构成的产品自动计数器研究的主要内容包括:如果构成检测电路、MCS-51单片机用何种方式对外部计数脉冲进行计数显示控制、LED显示驱动模块的选择、MCS-51单片机的扩展。在这个设计中主要需要解决的问题便是如何提高MCS-51单片机的抗干扰能力以及稳定性。

第二章方案论证

2.1设计方案选择

方案一:

采用多种数字逻辑电路来实现逻辑控制、主门、门控、计数单元的设计要求,这样设计的电路整体比较复杂,而且不宜完成发挥部分的功能要求。所以方案一不采用。

方案二:

可以采用FPGA来实现逻辑控制、主门、门控、计数单元的设计要求,并且设计方便,但由于对FPGA的技术原理掌握不够熟练,所以放弃方案二。

方案三:

系统采用8051为核心的单片机控制系统,实现原理图中的逻辑控制、主门、门控、计数的设计要求

单片机计数器的方式控制寄存器TMOD中的GATE位=1时,可以很方便的进行INT0引脚的外部输入信号的时间间隔测量。且单片机的控制电路很容易实现扩展,比

- 5 -

百度文库 - 让每个人平等地提升自我

- 6 -

如语音模块、测温I2C 模块、时钟模块、A/D 模块等。故采用方案三。

2.2 设计原理

利用AT89S52单片机来制作一个手动计数器,在AT89S52单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为

00-99计数的十位数显示;

硬件电路图如图2-1所示:

图 2-1 硬件电路图

系统板上硬件连线

1)把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a -h 端口上;要求:P0.0/AD0对应着a ,P0.1/AD1对应着b ,……,P0.7/AD7对应着h 。

2)把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a -h 端口上;

百度文库 - 让每个人平等地提升自我

- 7 -

3)把“单片机系统”区域中的P3.7/RD 端口用导线连接到“独立式键盘”区域中

的SP1端口上.

第三章 系统硬件电路的设计

3.1 最小系统设计

XTAL2

18XTAL1

19

ALE 30EA

31

PSEN 29RST

9

P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78

P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD

17

P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1

AT89C51

v c c

R1

4.7k

X2

CRYSTAL

R2

2k

C1

30pF

C2

30pF

v c c

C3

10u

图3-1 单片机最小系统的结构图

单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍一下每一个组成部分。 1.电源引脚

Vcc 40 电源端; GND 20 接地端;

百度文库 - 让每个人平等地提升自我

工作电压为5V

2.外接晶体引脚

百度文库- 让每个人平等地提升自我

P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触

在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。

(2) P1端口[P1.0-P1.7] P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

对内部Flash程序存储器编程时,接收低8位地址信息。

(3) P2端口[P2.0-P2.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接收高8位地址和控制信息。

在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问- 9 -

- 10 -

8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。

(4) P3端口[P3.0-P3.7]P2是一个带有内部上拉电阻的8位双向端口。输出时可驱动4个TTL 。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。

3.2 原理图

a0a1a3a4a5a6a7a2b0b1b2b3b4b5b6b7a 7

a 6

a 5

a 4

a 3

a 2a 1

a 0

a 0a 1a 2a 3a 4a 5a 6

a 7

b 0b 3b 4b 5b 6

b 7

b 2b 1XTAL2

18

XTAL1

19

ALE 30EA

31

PSEN 29RST

9

P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78

P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD

17

P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1

AT89C51

C1

30pF

C230pF

XTAL

12MHz

R1

10k

C3

10uF

v c c

vcc

R6

10k

R5

10k

R4

10k

R3

10k

R2

10k

R8

10k

R7

10k

R9

10k vcc

R10

220

R11

220

图3-4 电路总图

数码管的介绍

在本任务中用两位数码管显示当前数值的十,个,采用动态显示方式。两位数码管的相同段并联在一起,由一个6位I/O(P1口)输出字形码控制显示某一字形,每个数码管的公共端由另外一个I/O口(P0口)输出的字位码控制,即数码管显示的字形是由单片机I/O口输出的字形码确定,而哪个数码管点亮是由单片机I/O口输出的字位码确定的。数码管有共阴极和共阳极两种,

对于共阳数码管,字形驱动输出0有效,字位驱动输出1有效;而对于共阴数码管则相反,即:字形驱动输出1有效,字位驱动输出0有效

数码管使用条件:

a、使用电压段:根据发光颜色决定;

b、小数点:根据发光颜色决定

c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流100mA

数码管使用注意事项说明:

(1)数码管表面不要用手触摸,不要用手去弄引角;

(2)焊接温度:260度;焊接时间:1s

(3)表面有保护膜的产品,可以在使用前撕下来。

3.3 电路仿真

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

用PROTUES软件,画出M=99的计数器仿真图,得到的图如下所示

- 11 -

- 12 -

a0a1a3a4a5a6a7a2b0b1b2b3b4b5b6b7a 7

a 6

a 5

a 4

a 3

a 2a 1

a 0

a 0a 1a 2a 3a 4a 5a 6

a 7

b 0b 3b 4b 5b 6

b 7

b 2b 1XTAL2

18

XTAL1

19

ALE 30EA

31

PSEN 29RST

9

P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78

P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD

17

P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1

AT89C51

C1

30pF

C230pF

XTAL

12MHz

R1

10k

C3

10uF

v c c

vcc

R6

10k

R5

10k

R4

10k

R3

10k

R2

10k

R8

10k

R7

10k

R9

10k vcc

R10

220

R11

220

图3-11 仿真图

第四章软件设计

程序设计内容

(1.单片机对按键的识别的过程处理

(2.单片机对正确识别的按键进行计数,计数满时,又从零开始计数;

(3.单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。

(4.通过查表方式,分别显示出个位和十位数字。

4.1 系统软件设计流程图

主程序先是开始,然后赋初值,本设计采用的是动态显示,所以在赋玩初值后显示程序不断被调用。

开始

初始化

计数----(按键)

显示

图4-1主程序流程图

- 13 -

4.2 程序

#include

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Count;

void delay10ms(void)

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

void main(void)

{

Count=0;

P0=table[Count/10];

P2=table[Count%10];

while(1)

{

if(P3_7==0)

{

delay10ms();

if(P3_7==0)

{

Count++;

if(Count==100)

{

Count=0;

}

P0=table[Count/10];

P2=table[Count%10];

while(P3_7==0);

}

}

}

- 14 -

}

第五章调试及性能分析

5.1 系统性能测试与功能说明

走时:默认为计数状态,显示两位数,时间会按实际时间以秒为最小单位变化,从00—99的计数,按复位键,重00开始,重新计数。

5.2 软件调试问题及解决

软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。本次课题,keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。

仿真部分采用protus 6 professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。

首先打开protus 6 professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wave6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。

参考文献

[1] 《单片机系统设计及工程应用》雷思孝等西安电子科技大学出版社

[2] 《电路基础》吴大正西安电子科技大学出版社

[3] 《c++程序与设计语言》揣锦华等西安电子科技大学出版社

[4] 《MCS—51/96系列单片机原理及应用》孙涵芳北京航空航天大学出版社- 15 -

计数器程序

#include

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Count;

void delay10ms(void)

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

void main(void)

{

Count=0;

P0=table[Count/10];

P2=table[Count%10];

while(1)

{

if(P3_7==0)

{

delay10ms();

if(P3_7==0)

{

Count++;

if(Count==100)

{

Count=0;

}

P0=table[Count/10];

P2=table[Count%10];

while(P3_7==0);

}

}

}

}

- 16 -

实物电路图

- 17 -

- 18 -

相关主题
相关文档
最新文档