单片机原理及应用技术(C语言版)11.pptx

单片机原理及应用技术(C语言版)11.pptx

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

单片机原理及应用技术

(C语言版)

第11章单片机应用系统设计;第11章单片机应用系统设计;11.1简易计算器设计;11.1.1数码管与键盘接口芯片

BC7277简介; 2.BC7277引脚信号

MOSI、MISO:SPI数据信号。

CLK:SPI时钟信号输入。

CS:片选信号输入引脚,下降沿使芯片复位。

KEY:键盘状态信号输出引脚,初始为低电平。

A~DP:8段驱动输出。

DIG0~DIG8:数码管位驱动输出和键盘状态输入引脚,低4位接键盘的列、DIG4~DIG7接键盘的行。;;BC7277寄存器;;;;;;;;;;;;;;11.1.2系统电路设计;计算器电路器件如下:

AT89C52:单片机;

7SEG-MPX8-CA-BLUE:蓝色七段8位共阳极数码管;

KEYPAD-SMALLCALC:计算器键盘;

SOUNDER:蜂鸣器;

BC7277:数码管键盘驱动芯片。

需要说明的是:Proteus的器件库中没有BC7277芯片,是自己制作的,没有仿真功能,所以图11-4的电路并非运行状态,包括数码管的显示。

;数码管及显示段码的说明

图中的数码管是共阴极的,但后面程序中使用的是共阳极的段码,其原因是BC7277驱动共阴极的数码管,在不用它的译码功能时,各个显示段写0则点亮,写1则不亮,等于共阳极的段码。当使用BC7277的译码功能时没有这个问题。

键盘映射代码Sx与键盘的对应关系

从图中键盘与BC7277的连接可以看出,键盘映射代码S0~S15表对应的键分别为:

+、=、0、ON/C、-、3、2、1,×、6、5、4,÷、9、8、7。;11.1.3系统功能设计; 2.系统设备执行的方法

1)键盘扫描。BC7277Z自动对键盘进行扫描,当有按键被按下或释放时,其状态信号KEY发生反转,查询KEY状态,读取按下键的键号。

2)数码管显示器。单片机把显示段码送给BC7277,BC7277自动对数码管扫描显示,并且有驱动能力。

3)蜂鸣器发声。用定时器0定时0.5ms中断,对P3.5引脚取反发声,产生1000Hz的声音。当读取到键盘信息时,发出100ms的“滴”声。;;#include reg52.h

#include math.h

#include intrins.h“

//宏定义

//定义各功能键(加减乘除、清除、等号)对应的键值

#define CLR 10

#define ADD 11

#define SUB 12

#define MUL 13

#define DIV 14

#define EQU 15

//定义??显示、错误符号(E)、负号(﹣)显示代码

#define BLANK 10

#define ERROR 11

#define MINUS 12;;;;;;;;;;;;;11.2万年历设计;11.2.1实时时钟芯片DS1302简介;1.DS1302引脚功能

Vcc1:主电源正极接入端,2.5~5.5V。

Vcc2:备份电源。;2.DS1302读写操作

DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。DS1302的控制字如下图。; 控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。

同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。;寄存器名;3.DS1302基本操作函数

写操作函数

voidDS1302WriteByte(unsignedcharData)

{ unsignedchari;

for(i=8;i0;i--)

{ Data=1;

DS1302IO=CY;

DS1302CLK=1;

DS1302CLK=0;

}

}; 读操作函数

unsignedcharDS1302ReadByte()

{ //从DS1302读取1Byte数据

unsignedchari,temp=0;

for(i=0;i8;i++)

{ DS1302CLK=0;

if(DS1302IO!=0)

temp|=(1i);

DS1302CLK=1;

}

return(temp);

};;11.2.2系统电路设计;11.2.3系统功能设计;;;;;;;

文档评论(0)

xiadaofeike + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8036067046000055

1亿VIP精品文档

相关文档