数码管显示的简易计算器

数码管显示的简易计算器
数码管显示的简易计算器

学号1307080113

天津城建大学

单片机原理及应用A课程设计

设计说明书

数码管显示的简易计算器设计

起止日期:2016 年1月4日至2016年1月8日

学生姓名邬海斌

班级13电信科1班

成绩

指导教师(签字)

计算机与信息工程学院

2016年1月8日

天津城建大学

课程设计任务书

2014—2015学年第1学期

计算机与信息工程学院电子信息工程专业班级13电信科1班学号1307080113

课程设计名称:单片机原理及应用A课程设计

设计题目:数码管显示的简易计算器设计

完成期限:自2015年1月4日至2015年1月8日共1周

设计依据、要求及主要内容:

一.设计的目的

1.进一步熟悉和掌握单片机系统设计和编程原理。

2.掌握单片机的接口技术及相关外围芯片的外特性、控制方法。

3.通过设计,掌握以单片机核心的电路设计的基本方法和技术。

4.通过实际程序设计和调试,掌握模块化程序设计方法和调试技术。

5.通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应开发打下基础。

二.设计的基本要求

1.认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。

2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。

3.提高独立分析、解决问题的能力,逐步增强实际应用训练。

4.设计的说明书要求简洁、通顺,电路图内容完整、清楚、规范。

三.设计主要内容

a) 设计实现功能

STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计由数码管和键盘电路组成的简易计算器。一是扩展数码管显示电路;二是扩展按键电路,能够实现参数的输入;三是能够实现数据的加减乘除运算,并能显示运算的数据和运算结果;四是扩展时钟芯片DS12C887电路,用于不计算时的时间信息显示。

b) 原理图设计

1.原理图设计要符合项目的工作原理,连线要正确。

2.图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明。

3.原理图要完整,CPU、外围器件、外扩接口、输入/输出装置要一应俱全。

c) 程序调计

1.根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。

2.根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流程

图。

d) 程序调试

1.编写相关程序,并进行仿真。

2.将程序下载到单片机,进行运行调试。

e) 设计说明书

1.原理图设计说明

简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。

2.程序设计说明

对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。

3.画出工作原理图,程序流程图并给出相应的程序清单。

四.设计进度安排

日期计划完成内容

1 1.4 确定设计方案,根据设计方案绘制的硬件原理电路。

2 1.5 编写软件程序流程。

3 1.6-1.7 根据设计方案编写软件程序,综合调试。

4 1.8 编写课程设计报告,口试或答辩。

指导教师(签字):

批准日期:20 年月

目录

第1章设计任务及要求 (1)

第2章设计原理 (2)

2.1设计原理 (2)

2.2设计系统框图 (2)

第3章硬件电路设计 (3)

3.1 数码管硬件电路设计 (3)

3.2 矩阵键盘电路设计 (4)

3.3 主要元件AT89S51 (4)

第4章软件程序设计与调试 (7)

4.1程序流程图 (7)

4.2 调试结果 (9)

总结 (10)

参考文献 (11)

附录I:主要程序 (12)

附录II:元器件清单 (21)

第1章设计任务及要求

STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计由数码管和键盘电路组成的简易计算器。一是扩展数码管显示电路;二是扩展按键电路,能够实现参数的输入;三是能够实现数据的加减乘除运算,并能显示运算的数据和运算结果;四是扩展时钟芯片DS12C887电路,用于不计算时的时间信息显示。通过键盘输入数据,进行相应的加减乘除运算,并在数码管显示相应的运算结果。

第2章设计原理

2.1设计原理

设计主要是利用AT89C51进行数据处理,利用4×4矩阵键盘的按键扫描,利用LED数码管的动态显示。该设计首先是运用矩阵键盘的按键扫描,然后把扫描得到的键值进行译码,其次把译码所得的数值进行处理,最后将处理后的值进行动态显示。矩阵键盘和数码管分别接在P1和P0,这样大大的节约了单片机的I/O端口。

图2-1 设计原理图

2.2设计系统框图

图2-2 系统结构框图

第3章硬件电路设计

3.1数码管硬件电路设计

数码管数据显示的硬件电路由单片机、4位共阳极数码管、位驱动电路、限流电阻等组成。实验板中将跳线J7 与J2(A8—A11 脚)相连,即单片机P2.0-P2.3。控制数码管4位位选。用跳线将J14 与J15 相连,P0 口送出数码管段选码。程序轮流选通各位,并送出段码信息,数码管从低位循环移位显示0-F 的数据。程序由P1 口送出段码信息,最低位数码管循环显示0-9的数字。数码管共阳极段码表及数码管显示电路图如下:

表3-1共阳极数码管段码

显示字符共阳极段码共阴极段码

0 C0H 3FH

1 F9H 06H

2 A4H 5BH

3 B0H 4FH

4 99H 66H

5 92H 6DH

6 82H 7DH

7 F8H 07H

8 80H 7FH

9 90H 6FH

图3-1 数码显示电路

3.2矩阵键盘电路设计

4*4 矩阵键盘行输入接单片机P1.0-P1.3,列输入接单片机P1.4-P1.7,通过扫描方式检测是否有键按下,并确定键值。通过数码管显示价值。设置跳线,连接J12 与J11,P1 口连接键盘行列,连接J14 与J15,74LS573口送出数码管段码,连接J7 至J2:A8-A11 脚(单片机P2.0-P2.3),控制数码管位选。键盘扫描程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。

图3-2 键盘电路

3.3主要元件AT89S51

目前AT89S51多采用40个引脚的双列直插封装方式。40个引脚按其功能可分如下三类:

电源及时钟引脚—Vcc、Vss;XTAL1、XTAL2.

控制引脚—PSEN、ALE/PROG、EA/Vpp\RST(即RESET).

I/O口引脚—P0、P1、P2、P3,为4个8位I/O口的外部引脚。

主要引脚功能如下:

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

图3-3 单片机

图3-4 输出口扩展

第4章软件程序设计与调试

4.1程序流程图

初始化后,程序开始进入主程序,1、进行按键判断,如果有键按下,继续往下执行,否则重新扫描;2、如果有键按下,延时5MS ;3、再次按键判断,如果有键按下,继续往下执行,否则重新扫描;4、如果有键按下,确定按键位置;5、再次进行按键判断,如果有键按下,继续往下执行,否则,表示出错,重新扫面;6、如果有键按下,对按键译码;7、判断是否按键释放,如果释放,继续往下执行,否则等待;8、对送来的译码值进行数据处理;9、把处理的数据,放到LED 数码管中动态显示。详细程序源代码见附录I 。

N

Y N

N

图4-1 程序流程

4.2调试结果

(1)键盘上按下123;键盘上按下运算键“+”后,按下7;

图4-2 数码管显示“123”、“7”(2)键盘上按下功能键“=”后,得出运算结果130;

图4-3 数码管显示运算结果(3)不运算时,数码管显示时间15:12。

图4-4 数码管显示时间

总结

很快一周多的时间又过去了,一个星期的课程设计对于我们初学者来说并不简单,毕竟我们对单片机这门课程花的时间很少,上课的时间和上机的时间仅仅那么多,所以我们对这门课程的知识只了解了一个大概。对于这一个星期的成就我感到很欣慰,能够自己编出一个程序运用到实践当中。

刚开始我们都不知道如何动笔,看到那么多的课题,心中在暗暗的想,我们真的能做好一个吗,纠结了好久才把课题选好。选好课题后也不只从何处下手,我们只得到处查询资料和网上借鉴。我们都知道这个课程设计的关键是流程图和程序的编写。我们不急不忙的看了很多相似的程序和流程图,和向老师的请教才将流程图给画出个大概来,当然万事开头难吗,第一步做好了以后。我们就得开始编写程序了,这是最关键的了,首先我们认真的看了书本上的相似程序,将这个程序看懂了解透。我们才开始着手编写程序,当然在编写程序的这个过程是最复杂最麻烦了。老是出现各种各样的问题,这就需要我们能静下心了,同样我们也得考验同学之间团结合作能力了。自己编的程序自己往往很难发现错误,我们便便请教班上的高手解答。实在不懂得就求助老师了。在各种方法使尽后,程序终于出来了,一个程序的编写就花了我们课程设计的一大半的时间。此后说明书的书写也是项不小的工程,要将所有的东西集合起来还真的不简单。老是发现缺这缺那的。一个人书写后还得要几个人的审查才敢最终确定。

当然经过这次课程设计我们学会了很多,对单片机这门课程有了更好的了解,这也是一次理论知识运用到实践当中的考验,同时也为我们以后的毕业设计提供了参考。最后非常感谢老师和同学们的帮助。

参考文献

[1]张毅刚,彭喜元等. 单片机原理及应用[M]. 北京:高等出版社,2010.

[2]彭伟.单片机C语言程序设计实训100例[M]. 北京:高等出版社,2009.

[3]徐爱均,徐阳等. 单片机原理与应用[M]. 机械工业出版社,2013.

附录I:主要程序

#include "reg51.h"

#include"absacc.h"

#include

typedef unsigned char BYTE;

typedef unsigned int WORD;

#define led_date XBYTE[0x6000] ///*LED口地址*/

BYTE led_dm[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,

0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

void LED_crt(BYTE val);// /**led显示位置**/

void Delay(WORD n);

voidcrt_num();

BYTE led_w,di;

WORD num,a,b,c,d;//定义存储变量

WORD num1;

WORD num2,count,flage,Hourh,Hourl,Secondh,Secondl,Minuteh,Minutel; bitfuhao;

BYTE yunsuan;

bit flag;

bitbiaozhi;

#define DS_A XBYTE[0x100A] //寄存器A/* DS12887口地址*/ #define DS_B XBYTE[0x100B] //寄存器B

#define DS_C XBYTE[0x100C] //寄存器C

#define Years XBYTE[0x1009] //年

#define Month XBYTE[0x1008] //月

#define Day XBYTE[0x1007] //日

#define Week XBYTE[0x1006] //星期

#define Hour XBYTE[0x1004] //时

#define Minute XBYTE[0x1002] //分

#define Second XBYTE[0x1000] //秒

void DS_init()/************DS12887初始化程序**********************/ {

DS_A=0x20;

DS_B=0x12;

}

voidwrite_time()

{

DS_A=0x2f; //寄存器A

DS_B|=0x80;

Years=0x16; //年

Month=0x01; //月

Day=0x03; //日

Week=0x07; //星期

Hour=0x15; //时

Minute=0x12; //分

Second=0x00; //秒

DS_B &=0x7f; //寄存器A}

void Delay(WORD n)//延时500US {

WORD x;

while(n--)

{

x=500;

while(x--);

}

}

void crt_num() //转换运算数据

{

Hourh=Hour/16;

Hourl=(Hour%16)+10;

Secondh=Second/16;

Secondl=Second%16;//+10;

Minuteh=Minute/16 ;

Minutel=Minute%16;

a=num/1000;

b=num/100%10;

c=num/10%10;

d=num%10;

if(flage==1)

{

for(count=0;count<4;count++)

{ if(di==0x09)

LED_crt(a);

else if(di==0x08)

LED_crt(b);

else if(di==0x07)

LED_crt(c);

else if(di==0x06)

LED_crt(d);

di--;

if(di==0x05)

{

di=0x09;

}

Delay(1);

}

}

if(flage==0)

{

for(count=0;count<4;count++)

{ if(di==0x09)

LED_crt(Hourh);

else if(di==0x08)

LED_crt(Hourl);

else if(di==0x07)

LED_crt(Minuteh);

else if(di==0x06)

LED_crt(Minutel);

di--;

if(di==0x05)

{

di=0x09;

}

Delay(1);

}

}

}

unsigned char keypad_scan()//矩阵键盘扫描/*****行列式扫描键盘****/ {

unsigned char temp;

unsigned char key=0xff;

P1=0xfe;

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

Delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P1;

switch(temp)

{

case 0xee: key=7; break;

case 0xde: key=4; break;

case 0xbe: key=1; break;

case 0x7e: key=15; break;

}

while(temp!=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1=0xfd;

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

Delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P1;

switch(temp)

{

case 0xed: key=8; break;

case 0xdd: key=5; break;

case 0xbd: key=2; break;

case 0x7d: key=0; break;

}

while(temp!=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

}

P1=0xfb;

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

Delay(5);

temp=P1;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P1;

七段数码管及其驱动七段数码管及其驱动原理,

[转]7段数码管管脚顺序及译码驱动集成电路74LS47,48 7段数码管管脚顺序及译码驱动集成电路74LS47,48 这里介绍一下7段数码管见下图7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg 这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。发光二极管的工作电压一般在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数!74ls48引脚图管脚功能表 74LS48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,下面我就给大家介绍一下这个元件的一些参数与应用技术等资料。74ls48引脚功能表—七段译码驱动器功能表http://www.51hei. com/chip/312.html74LS47引脚图管脚功能表:

电脑计算器里面的“科学型”的里面所有的按键的功能

下表描述了计算器的功能: 按钮功能 % 按百分比的形式显示乘积结果。输入一个数,单击“*”,输入第二个数,然后单击“%”。例如, 50 * 25% 将显示为12.5。也可执行带百分数的运算。输入一个数,单击运算符(“+”、“-”、“*” 或“/”),输入第二个数,单击“%”,然后单击“=”。例如,50 + 25%(指的是50 的25%) = 62.5。 ( 开始括号的新层。当前的层数显示在“)”按钮上方的框中。括号的最多层数为25。 ) 结束括号的当前层。 * 乘法。 + 加法。 +/- 改变显示数字的符号。 - 减法。 . 插入小数点。 / 除法。 0–9 将此数字置于计算器的显示区。 1/x 计算显示数字的倒数。 = 对上两个数字执行任意运算。若要重复上一次的运算,请再次单击“=”。 A–F 在数值中输入选中字母。只有在十六进制模式为开启状态时该按钮才可用。 And 计算按位AND。逻辑运算符在执行任何按位运算时将截断数字的小数部分。 Ave 计算“统计框”对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave”。只有先 单击“Sta”,该按钮才可用。 Backspace 删除当前显示数字的最后一位。 站将显示数字转换为二进制数字系统。最大的无符号二进制数值是将64 位全都设置为1。 C 清除当前的计算。 CE 清除显示数字。 cos 计算显示数字的余弦。若要计算反余弦,请使用“Inv”+“cos”。若要计算双曲余弦,请使用“Hyp”+“cos”。若要计算反双曲余弦,请使用“Inv”+“Hyp”+“cos”。cos 只能用于十进制数字 系统。 Dat 在“统计框”对话框内输入显示的数字。只有先单击“Sta”,该按钮才可用。 十进制将显示数字转换为十进制数字系统。 度数在十进制模式下将三角函数输入设置为度数。 dms 将显示数字转换为度-分-秒格式(假设显示数字是用度数表示的)。若要将显示数字转换为用度数表示的格式(假设显示数字是用度-分-秒格式表示的),请使用“Inv”+“dms”。dms 只能用 于十进制数字系统。 Exp 允许输入用科学计数法表示的数字。指数限制为四位数。指数中只能使用十进制数(键0-9)。 Exp 只能用于十进制数字系统。 F-E 打开或关闭科学计数法。大于10^32 的数总是以指数形式表示。F-E 只能用于十进制数字系统。 梯度在十进制模式中,将三角函数输入设置为梯度。 十六进制将显示数字转换为十六进制数字系统。最大的无符号十六进制数值是将64 位全都设置为1。 Hyp 设置“sin”、“cos”和“tan”的双曲函数。完成一次计算后自动关闭双曲函数功能。 Int 显示十进制数值的整数部分。若要显示十进制数值的小数部分,请使用“Inv”+“Int”。 Inv 设置“sin”、“cos”、“tan”、“PI”、“x^y”、“x^2”、“x^3”、“ln”、“log”、“Ave”、“Sum” 和“s”的反函数。完成一次计算后自动关闭反函数功能。

基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真

单片机原理及接口技术 课程设计报告 设计题目:计算器设计 学号:100230205 姓名:费博文 指导教师:张扬 信息与电气工程学院 二零一三年七月

计算器设计 单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。 数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。 注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。字数不要太多,300-500字。 另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。 1. 设计任务 结合实际情况,基于AT89C51单片机设计一个计算器。该系统应满足的功能要求为: (1) 实现简单的四位十进制数字的四则运算; (2) 按键输入数字,运算法则; (3) LED数码管移位显示每次输入的数据和运算结果; (4) 当运算结果超出范围时实现报错。 主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。 注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。

简易加减计算器小程序

[java語言與程序設計]简易加减计算器小程序 歸真我发表于:2011/8/1922:51:21标签(TAG): 简易加减计算器小程序 在上一篇《简易计算器面板小程序》中,我已对面板部分的程序作了详细的注释,并对程序的运行过程及结果作了完整的介绍,并且是上机调试过了得到的结果。但是,那只是面板,不能运算。要想让它具有运算的功能,还得在此基础上作一些修改,加进有关按钮动作响应部分的程序。为了便于理解,便于调试,便于学习,掌握其要点,我想应该遵循循序渐进的原则,所以,先从加减运算开始,看看这个功能是怎么实现的。请看下面的小程序。从程序中可以看出,它是利用内部类ButtonAct来处理按钮的动作响应的。从总体上讲是两个按钮“运算”和“重置”,但“运算”又区分为“加”和“减”。所以,用负责实现双分支的if语句来编程。 /**C2.java简易加减计算器小程序*/ import java.applet.*; import java.awt.*; import java.awt.event.*; public class C2extends Applet{ TextField t1,t2,t3; Button btn1,btn2; CheckboxGroup select; Checkbox a,s;//分别代表加、减 Label b; public void init(){ t1=new TextField(13); t2=new TextField(13); t3=new TextField(13); btn1=new Button("等于");

btn2=new Button("重置"); select=new CheckboxGroup(); a=new Checkbox("加",true,select); s=new Checkbox("减",false,select); b=new Label("简易加法/减法计算器"); add(b); add(t1); add(a); add(s); add(t2); add(btn1); add(t3); add(btn2); btn1.addActionListener(new ButtonAct());//注册给ButtonAct对象btn2.addActionListener(new ButtonAct());//注册给ButtonAct对象} class ButtonAct implements ActionListener{//内部类,按钮处理public void actionPerformed(ActionEvent e){ int op1,op2,op3; if(e.getSource()==btn1){//等于按钮 op1=Integer.parseInt(t1.getText()); op2=Integer.parseInt(t2.getText()); if(a.getState())//以下判断计算类型并实现相应的计算 op3=op1+op2; else op3=op1-op2; t3.setText(Integer.toString(op3)); } else{//重置按钮 t1.setText(""); t2.setText(""); t3.setText(""); a.setState(true); } } }//end of ButtonAct }//*~ 运行结果为:

8位数码管计数器

C:\Documents and Settings\Administrator\桌面\new\1.c /* 单片机52系列, 功能描述:8位数码管显示0~0-9~9 加1计数,数码管使用共阴极,数码管通过2片74HC573接到P0口,P2^6段选择,P2^7位选择 */ #include< reg52.H> #define uchar unsigned char //宏定义uchar 为无符号字符 #define N 1 //宏定义N=1,用于动态显示位 uchar code duan[]={ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f/* 0x77,0x7c,0x39,0x5e,0x79,0x71*/ }; //共阴段码表uchar code wei[]={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //8个位的开通表 uchar ge=0,shi=0,bai=0,qian=0,wan=0,swan=0,bwan=0,qwan=0,num=0; //定义变量及初始化 sbit dula= P2^6; //段变量定义 sbit wela= P2^7; //位变量定义 void delayxms(uchar x); //延时子函数声明 void main() //主函数 Page: 1 C:\Documents and Settings\Administrator\桌面\new\1.c

{ P0=duan[0]; // 装载初值 dula=1; dula=0; P0=wei[0]; // 装载初值 wela=1; wela=0; /* 中断设置*/ EA=1; //中断总允许 ET0=1; //定时器0中断允许 TMOD= 0x01; // 定时器器0工作方式1 TH0=-10000/256;// 定时10000高8位,可以直接写成TH0=-10000/256 TL0=-10000%256;// 定时10000低8位,可以直接写成TL0=-10000%256 TR0=1; // 启动定时器0 /* 程序跳转去执行定时中断程序,然后返回此处*/ while(1) //大循环 { P0=duan[qwan]; //送千万位段码 if(qwan==0) // 如果千万位等于0,关闭段选、位选{

计算器有关按键说明大全

计算器有关按键说明大全 一、基本按键 ON 开机 OFF 关机 AC 总清,清除所有存储和显示数值(又:CA, All Clear C 清除所有显示和当前运算、归零(又:CLR、Esc,英文名Clear 注:以上又有组成组合键的情况为ON/OFF、ON/AC、ON/C CE 清除输入,清除当前输入数据中最后一个不正确的输入数据并显示“0”,可重新更正输入(英文名Clear Error或Clear Entry ?清除光标前一字符(又:←、Backspace、BS、DEL(delete) INS 改写模式,从当前位置插入(英文名insert REPLAY 指令状态移动方向,上下查记录,左右移动当前表达式中光标(一般此键上有成十字排列的方向标识:▲▼?? SHIFT 转换,上档选择(又: 2ndF、2nd、2nd(第二功能选择,Second Function)、ALT,按键设定为与其同色的功能 ALPHA 阿尔法,字母,按键设定为与其同色的功能 MODE 方式、模式,用于模式切换(不同的计算器有所不同,常用的见下表:

对于数值计数法有: Norm(normal)标准计数法 Fix(fixed)固定小数点 Eng(engineering)工程计数法 Sci(scientific)科学计数法 Inv 反、倒置,用于使用其它有关按键的相反功能,多用于电子计算器。如ln键变为e x键,sin键变为sin-1键,lsh键变为rsh键等EXP 以科学记数法输入数字,即表示以10为底的方幂(又:EE,英文名Exponent 说明:科学记数法:将一个数字表示成a×10的n次幂的形式,其中1≤|a|<10,n表示整数,这种记数方法叫科学记数法。如:5EXP2即5×102,就是500 F-E 科学记数法开关,显示方式转换 作用:十进制浮点(Floating Point)与科学记数法(Exponent)显示转换 S?D 数值在标准形式(Standard)和小数形式(Decimal fraction)之间转换 作用:分数与小数显示转换 Ran# 随机数(又:RAND、RND、Rnd#,英文名Random , : 分隔符,用于输入方程式之间、坐标数据之间分隔用 ∠角,用于标识极坐标数据的角度数据或复数的虚数 二、基础运算 0、00、1、2、3、4、5、6、7、8、9 数字

速算,简易计算器c语言代码,可实现加减乘除

#include"stdio.h" #include"math.h" #include"stdlib.h" struct optrstyle { int top; char stack[20]; } struct opndstyle { int top; int stack[20]; } void main() { char ch; while(1) { printf("-----------------------------------------\n"); printf("|-----------欢迎来到速算24--------------|\n"); printf("|----------是否开始游戏?????------------|\n"); printf("|--------- 开始游戏请按'Y'-------------|\n"); printf("|--------- 退出游戏请按其他键-------------|\n"); printf("-----------------------------------------\n"); scanf("%c",&ch); if(ch=='Y' or ch=='y') { } else break; } } int EvaluateExpression() { // 算术表达式求值的算符优先算法。设OPTR 和OPND 分别为运算符栈和运算数栈,OP 为运算符集合。 InitStack(OPTR); Push(OPTR,'#'); InitStack(OPND); c = getchar(); while(c!='#' || GetTop(OPTR)!='#') { if(!In(c,OP))

0-99手动计数器的设计要点

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 第1章绪论 1.1 计数器介绍 本设计是根据我们所学习的单片机课程,按照课程要求进行的课程设计。单片机技术是一个不可或缺的技术,尤其是对于我们电气专业来说它是我们必须要掌握的技能之一,使我们未来工作和生活的根本。现在的社会是一个信息科技高速发展的社会,也是一个电子技术和微机计算机迅速发展的时代,单片机的档次和水平在不断的提高,其应用的领域和范围也越来越广,成为现代电子系统中最重要的智能化核心部分。 随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。 现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。计数器的应用范围也遍布印刷、纺织、印染、针织、电缆、电讯、军工、轻工、机械、开关、断路器、矿山、实行多班制的纺织行业的织布机、织带机、制线、制带、造纸、制革、薄膜、高压开关电器产品、试验设备,印刷设备、短路器、医疗、纺织、机械、仓库和码头的货运、行人及车辆过往的数量计数、冶金、食品、国防、包装、配料、石油、化工、发电、机床、仪表、自动化控制等行业。 1.2 本次设计的要求 1) 上电时,数码管显示为00。 2) 利用单片机来制作一个手动计数器,在单片机的管脚上接一个轻触开关,作为手动计数的按钮,用单片机的I/O口接数码管,作为计数器,进行加计数显示。 3) 计数器计数到99后,再按计数按钮,则数码管从00重新开始计数。 1.3 本次设计的目的 1) 学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。 2) 掌握汇编语言程序设计方法。 3) 培养实践技能,提高分析和解决实际问题的能力。

模拟计算器数字输入及显示课程设计

摘要 本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。 显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。 按键部分:采用4*4键盘。采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。 执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。注:结果不能超出65535。(具体操作见后面仿真图)

目录 1 概述 1.1MCS-51单片机在自动化仪表中的作用 (3) 1.2掌握单片机仿真软件Proteus的使用方法 (3) 1.3设计方法 (3) 1.4基本功能 (4) 2 系统总体方案及硬件设计 2.1计算器总体思想 (5) 2.2硬件的选择与连接 (6) 3 软件设计 3.1显示程序设计 (7) 3.2键盘识别程序设计 (8) 3.3运算程序设计 (10) 3.4风鸣器程序设计 (10) 4 Proteus软件仿真 (12) 5课程设计体会 (16) 参考文献 (18) 附1:源程序代码 (19) 附2:计算器模拟系统电路图 (31)

android简单计算器课程设计

摘要 Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的,应用程序可以轻松的嵌入网络、应用程序可以并行运行。而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。并且具有很强的使用性。 关键字:Android Java基础计算器

目录 第1章开发工具与环境 (1) 1.1 Android平台 (1) 1.2 Java开发环境 (1) 1.3 Eclipse (1) 1.4 Android程序基础—Android应用程序的构成 (2) 第2章系统分析与设计 (4) 2.1系统的可行性分析 (4) 2.2 系统的需求分析 (4) 2.3 系统的优势 (4) 2.4 系统的流程图 (5) 第3章系统详细设计 (6) 3.1 动作Activity (6) 3.2 布局文件XML (6) 3.3 Activity的详细设计 (7) 3.2 布局文件XML的详细设计 (21) 3.2 系统的运行结果 (24) 结论 (25) 参考文献 (26)

第1章开发工具与环境 1.1 Android平台 1.谷歌与开放手机联盟合作开发了Android, 这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。 2.Android是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 3.所有的Android应用之间是完全平等的。 4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是“应用”。 5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。 1.2 Java开发环境 Java技术包含了一个编程语言及一个平台。Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。Java编程语言起源于Sun公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。1996年1月发布了JDK1.1版本,一门新语言自此走向世界。之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。Java1.2版本是一个重要的版本,基于该版本,Sun将Java技术分为J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE 建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。 1.3 Eclipse

8位数码管动态显示电路设计.

电子课程设计 — 8位数码管动态显示电路设计 学院:电子信息工程学院 专业、班级: 姓名: 学号: 指导老师: 2014年12月

目录 一、设计任务与要求 (3) 二、总体框图 (3) 三、选择器件 (3) 四、功能模块 (9) 五、总体设计电路图 (10) 六、心得体会 (12)

8位数码管动态显示电路设计 一、设计任务与要求 1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。 2. 要求在某一时刻,仅有一个LED 数码管发光。 3. 该数码管发光一段时间后,下一个LED 发光,这样8只数码管循环发光。 4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。 5、研究循环地址码发生器的时钟频率和显示闪烁的关系。 二、总体框图 设计的总体框图如图2-1所示。 图2-1总体框图 三、选择器件 1、数码管 数码管是一种由发光二极管组成的断码型显示器件,如图1所示。 U13 DCD_HEX 图1 数码管 数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出 不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个 74LS161计数器 74LS138译码 器 数码管

LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。 2、非门 非门又称为反相器,是实现逻辑非运算的逻辑电路。非门有输入和输出两个端,电路符号如图2所示,其输出端的圆圈代表反相的意思,当其输入端为高电平时输出端为低电平,当其输入端为低电平时输出端为高电平。也就是说,输入端和输出端的电平状态总是反相的。其真值表如表1所示。 图2 非门 表1 真值表 输入输出 A Y 0 1 1 0 3、5V电源 5V VCC电源如图3所示。 图3 5V电源

06 12864LCD显示计算器键盘按键实验

目录 1 课程设计概述和要求 (1) 1.1 课程设计要求与任务 (2) 1.2 课程设计思路 (2) 1.3 课程设计需要配置的环境 (3) 2 系统设计 (3) 2.1 设计框图 (3) 2.2 元件解析 (3) 2.2.1 LCD12864芯片……………………………………………………………4 2.2.2 AT89C51芯片 (5) 2.2.3 其他部件 (6) 2.2.4 电路分析 (7) 3 软件设计 (12) 3.1 程序流程图 (12) 3.2 程序代码 (12) 4 系统的仿真与调试 (13) 4.1 硬件调试 (13) 4.2 软件调试 (14) 4.3 软硬件调试 (14) 5 总结 (14) 附录1:程序代码 附录2:12864LCD显示计算器键盘按键实验Proteus仿真图

1 课程设计概述和要求 1.1 课程设计任务与要求 设计任务:利用AT89C51单片机结合12864LCD显示器设计计算器键盘按键。 设计要求1:本设计实现一个12864LCD显示12864LCD显示器设计计算器键盘按键 2.利用AT89C51控制整个电路来实现. 显示12864LCD显示器 设计计算器键盘按键,系统主要包括硬件和软件两部分。重点就 是各部分硬件的连接设计以及程序的编写。本章讲述的就是系统 硬件的设计,其中包括各模块的器件选择和电路设计。将计算器 按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显 示于12864LCD液晶显示屏上。 1.2 课程设计目的思路 1、先把与题目有关的芯片资料找到,熟悉一下芯片资料 2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。 3、分析一下此程序的各部分的功能,各零件的工作原理。 4、对程序进行调试,分析调试结果,观察并得出结论。 1.3 课程设计需要配置的环境 1、一台主机,一台显示器 2、Keil uVision3/Keil uVision4 应用程序软件 3、ISIS 7 Professional 仿真软件 4、老师交给的仿真电路图,及案例 5、纸张,以及一些参考资料 2 系统设计 2.1.设计框图 框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。通过框图设计,让设计者从整体上把握系统的开发。 12864LCD显示计算器键盘按键实验设计框图如下所示

基于51单片机的红外数码管计算器

基于51单片机的数码管应用 一、设计要求 1、基本要求 (1)焊接一个单片机最小系统,接通电源后,至少能在四位数码管上同时显示四个非0的相同的数字。 (2)至少四位数码管能动态显示出[0,1,2,3],达到一定的效果。 (3)能用按键改变显示的数字。 2、发挥部分 (1)增加数码管至8位。 (2)增加4*4矩阵按键,实现简易的8位计算器功能。 (3)增加红外接收模块,实现遥控功能。 (4)增加蜂鸣器,当有按键按下时发声。 (5)利用遥控器实现倒计时功能。

二、系统硬件配置 本系统采用STC89C52RC单片机作为微控制器,分为6个模块(如下图所示):按键电路,红外感应电路,蜂鸣器响应电路,数码管显示电路,晶振以及复位电路。 下面是电路图部分 :

三、系统软件设计 1、主程序模块 主程序需要调用5 个子程序,各模块程序功能如下: ●数码管显示程序:向数码的显示送数,控制系统的显示部分。 ●按键消抖程序:采用检验连续四次按键状态的方式软件消抖。 ●矩阵按键扫描程序:每4*4 ms扫描一次按键。 ●中断设定程序:实现定时功能。 ●数值计算程序:实现8位计算四则运算功能。 主程序流程见图如下:

四、系统源代码 Main.c部分代码如下: #include sbit BUZZ = P3^3; sbit KEY_IN_1 = P2^3; sbit KEY_IN_2 = P2^2; sbit KEY_IN_3 = P2^1; sbit KEY_IN_4 = P2^0; sbit KEY_OUT_1 = P2^4; sbit KEY_OUT_2 = P2^5; sbit KEY_OUT_3 = P2^6; sbit KEY_OUT_4 = P2^7; unsigned char code LedChar[]={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E }; unsigned char code KeyCodeMap[4][4]={ {0x31,0x32,0x33,0x25}, {0x34,0x35,0x36,0x26}, {0x37,0x38,0x39,0x27}, {0x1B,0x30,0x0D,0x28} }; unsigned char KeySta[4][4]={ {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1} };

单片机数码管计数器

MAIN: NOP CALL DISPLAY0;LED动态显示刷新 CALL DELAY100 JNB B_T1IF,MAIN;每50ms处理一次。 ;====================================== CLR B_T1IF MOV A,TIMES_50MS CJNE A,#20,NO_1S JMP YES_1S; 满20次即为一秒钟 ;===================================== NO_1S: MOV A,TIMES_50MS CJNE A,#1,NO_1S_END ;TIMES_50MS不为1,返回 ;当TIMES_50MS为1时,判断当前所选档位是否过高或者过低 ;若计数器BUF大于100,则说明满1秒时必然大于2000,则提前调高频率衰减档位, ;并清零各计数值,重新在新档位测量 MOV A,COUNTER_BUF_H JNZ NO_1S_1;计数器高位不为0,说明超100 MOV A,COUNTER_BUF_L CJNE A,#100,NO_1S_0 NO_1S_0:JC NO_1S_LOW;计数器BUF小于100,继续跳转到NO_1S_LOW判断是否需要调低档位 NO_1S_1: MOV A,FREQ_LOSS;超量程,判断当前频率衰减档位,若小于3则加一档 CJNE A,#3,NO_1S_2 JMP NO_1S_END NO_1S_2:JC NO_1S_3 MOV A,#3 MOV FREQ_LOSS,A;档位大于3,则修正为3 NO_1S_3: INC FREQ_LOSS;频率衰减档位加1 MOV A,FREQ_LOSS CJNE A,#1,NO_1S_4 SETB P153_B;FREQ_LOSS=1 CLR P153_A JMP NO_1S_20 NO_1S_4:CJNE A,#2,NO_1S_5 CLR P153_B;FREQ_LOSS=2 SETB P153_A

计算器按键的使用说明

计算器按键的使用说明 . 1、电源开关键: ON、 OFF 2、输入键: 0— 9、. +/ —:正负转换键 3、运算功能键: + - * / ( 注意 : 加、减、乘、除键在计算时都可能代替等号键 ) √:开平方键,用来进行开平方运算。先输入数字,再按下此键,不必按等号键即可得 出结果。 4、等号键:= 5、清除键: ①C:清除键。在数字输入期间 , 第一次按下此键将清除除存储器内容外的所 有数值 . 如果是太阳能计算器,在计算器关闭状态下,按此键则开启电源,显示 屏显示出“ 0”。 ②AC或 CA键:全部清除键,也叫总清除键,作用是将显示屏所显示的数 字全部清除。 ③→:右移键。其功能是荧屏值向右位移,删除最右边的尾数。 ④CE:部分清除键,也叫更正键。其功能是清除当前输入的数字,而不是清除 以前输入的数。如刚输入的数字有误,立即按此键可清除,待输入正确的数字后,原运算继续进行。如 5+13,这时发现“ 13”输入错了,则按“ CE”键就可以清除 刚才的“ 13”,但还保留“ 5”这个数。值得注意的是,在输入数字后,按“ +”、“- ”、“/ ”、“* ”键的,再按“ CE”键,数字不能清除。 ⑤MC:累计清除键,也叫记忆式清除键。其功能是清除储存数据,清除存储 器内容,只清除存储器中的数字,内存数据清除,而不是清除显示器上的数字。 6、累计显示键: (1)M+:记忆加法键,也叫累加键。是计算结果并加上已经储存的数;用 作记忆功能,它可以连续追加,把目前显示的值放在存储器中(也就是将显示的 数字与内存中已有的任何数字相加,结果存入存储器,但不显示这些数字的和)。 如先输入“ 5×1.6 ”→按“ M+”键(把“ 5×1.6 ”的结果计算出来并储存起来)→然后输入“10×0.8 ”→按“M+”键(把“10×0.8 ”的结果计算出来并和前面储存的数相加)→接着输入“15×0.4 ”→按“M+”键(把“15×0.4 ”的结果计算出来并和前面储存的数相加)→最后按“MR”键(把储存的数全部取出来)→则出结果“ 22” (2)M-:记忆减法键,也叫累减键。是计算结果并用已储存的数字减去目前 的结果;从存储器内容中减去当前显示值(也就是将显示的数字与内存中已有 的任何数字相减,结果存入存储器,但不显示这些数字的差). 计算“ 50- (23+4)”时→先输入“ 50”→按“ M+”(把“ 50”储存起来)→再输入“ 23+4”→按“ M-”键(计算结果是“ 27”)→再按“ MR”(用储存的“ 50”减去目前的结果“ 27”)→则出结果“ 23” 7、存储读出键: MR MRC GT ①MR:存储读出键。表示用存储器中数值取代显示值。按下此键后,可使存储在“ M+”或“ M-”中的数字显示出来或同时参加运算,数字仍保存在存储器中,在未按“ MC”键以前有效。 MR调用存储器内容,读取储存的数据。如有三组数字不连续在一起相加的时候,则用这个“ MR”键。举例:如输入“ 3+2”时,按“ M+”键,再输入“ 6+7”时,按“ M+”键,再输入“8+9”时按“ M+”键,然后再按“MR”,则三组数字的总和“ 35”就出来了。 ②MRC:MR和 MC功能的组合,即存储读出和清除键。按一次为 MR功能, 即显示存储数,按第二次为 MC功能,即清除存储数。

数字电路设计——加法计算器

姓名罗银贵班级1208105 学号1120810501 实验日期节次教师签字成绩 加法计算器 1.实验目的 通过对加法计算器的设计,掌握组合逻辑电路、时序逻辑电路的分析和设计方法; 了解及掌握中规模集成电路以及各个芯片的管脚图及结构图。 掌握全加器、计数器等芯片的功能及实现方法; 锻炼动手实践能力,提高自身设计能力。 2.总体设计方案或技术路线 设计一个简单的加法计算器,能实现简单的加法运算,计算结果为0—16的和数,并输出到数码管。加法运算的实现要求:用四个开关代表四位二进制数,操纵开关,输入二进制数码,则在相应的数码管上显示出相应的十进制数,即代表被加数;用同样的方法在另外的四个开关上输入二进制数,则在相应的数码管上显示相应的十进制数,即代表加数;当加数与被加数都输入后,在另外的两个数码管上出现两数的和。

3.实验电路图 4.仪器设备名称、型号和技术指标 直流稳压电源、试验箱、万用表; 2个74LS00D、1个74LS283D、1个74LS04D、2个74LS08D、1个74LS20D; 单刀双掷开关9个、导线若干。

5.理论分析或仿真分析结果 开关9置0,闭合J1、J2、J3、J4相应开关输入被加数: 开关9置0,闭合J5、J6、J7、J8相应开关输入加数:

开关9置1,输入相应的被加数和加数,并求和,输出到另外两个数码管上: 6.详细实验步骤及实验测量数据记录 根据实验电路图连接好电路; 检查实验电路无误后,开关9置0; 闭合J1、J2、J3、J4相应开关输入被加数; 闭合J5、J6、J7、J8相应开关输入加数; 开关9置1,输出相应被加数与加数的和。

2位数码管显示00-99计数器

2位数码管显示00-99 计数器样图: C源码: #include #define out P0 unsigned char disp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit SW2=P1^0; sbit SWXS=P3^0; sbit GWXS=P3^1; unsigned char buff; unsigned int m; void delayms(unsigned int k){ unsigned int i,j; for(i=k;i>0;i--) for(j=141;j>0;j--); } bit key_test(){ bit temp; if(!SW2){

delayms(10); if(!SW2){ delayms(10); while(!SW2); temp=1; } } else temp=0; return temp; } void display(unsigned dat){ unsigned char sw,gw; sw=dat/10%10; gw=dat%10; out=0x00; SWXS=0; GWXS=1; out = disp[sw]; delayms(5); SWXS=1; GWXS=0; out=disp[gw]; delayms(5); } main(){ while(1){ if(key_test()){ buff++; if(buff>=100){ buff=0; } } display(buff); } } 原件: AT89C52 X 1 7SEG-MPX2-CC X 1 BUTTON X 1 RES (10K) X 3 RESPACK-8 (10k) x 1

4位数计算器的设计

摘要 0 1 总体任务 (1) 1.1设计目的 (1) 1.2设计内容和要求 (1) 1.3 设计思路 (1) 2 设计原理分析 (2) 2.1 计算器的工作原理 (2) 2.1.1 计算器的工作流程 (2) 2.1.2 编程实现控制 (2) 2.1.3 功能拓展 (2) 2.2 单片机计算器的基本构成及原理 (2) 3硬件电路的设计 (4) 3.1系统硬件总电路构成及原理 (4) 3.2硬件电路的部分组成元器件的简介 (4) 3.2.1AT89C51单片机 (4) 3.2.2 八段LED数码管 (4) 3.2.3 矩阵键盘 (6) 3.3 元器件清单 (7) 3.4 电路原理图 (7) 4 系统程序的简单设计 (8) 4.1 程序方框图 (8) 4.2 计算器程序 (8) 5 系统的仿真调试 (15) 6 课程设计总结 (16) 参考文献 (17)

本文论述了单片机4位数加法计算器的设计,从对设计任务的分析到画电原理图到编程和最后的仿真调试,都进行了一个简单的描述。 在设计过程中,采用Keil软件编写源程序,用Protues 7 professional的ISIS 7 professional软件画电原理图并且仿真,通过对编程时的编译和对仿真结果现象的观察,不断地对源程序以及电原理图的修改,最后成功设计出了一个能够进行4位数加法运算的计算器。该计算器通过4×4的矩阵键盘输入数字及运算符,若运算结果超过4位十进制数,则显示为E;另外,也能进行减法、乘法以及除法的运算,在进行减法运算时,若运算结果小于零,则显示其绝对值;进行除法运算时,若除数等于零,则显示E。 关键词:计算器;单片机;数码管;矩阵键盘

简易加减法计算器

电子技术课程设计 题目:简易加减法计算器 一、设计课题:简易加减法计算器 二、设计任务和要求: 1、用于两位以下十进制数的加减运算。 2、以合适方式显示输入数据及计算结果。 三、原理电路设计 1、方案的比较 对于简单加减计算器可有三种不同的方案 ①用数/模转换,与模拟电路中的加减计算器进行简单的加减计 算。先用74LS147二-十进制优先编码器转化为二进制进行输A,然后数模转化模拟信号,进行加减计算后,转化为数字信号输 出。 此方案思路较明确,但经过二次数模相互转换,精确率较低; 具体输出时的负数效应,与单输入的二进制转化为十进制时电 路较复杂,无成块的集成电路,致使误差率较大。 ②可用数字电路中4位超前进位加法器74LS283与方案一输入相 同;后用三态输出CMOS门电路进行选择输入,进行加法运算

后输出,输出时,注意负数的问题与在输出中2进制与10进制关系的问题。还有寄存器的问题。 此方案思路明确,比较精确,此中的2进制与10进制问题需复杂门电路解决无现成集成元件,存在太多的散元件。减法运算需要反码进行运算,况且在其触发过程中需要考虑同步问题。 ③可运用数字电路中的单时钟同步十进制加/减计数器74LS190 进行加减计算。方案以上升沿进行输入,触发加减计算。本方案输入方式不同于一般输入方式,需要有所改进。但思路明了,不十分复杂,对于负数运算较复杂,可集成程度较高。 终上所述,最好是相互结合,以③为本。 2、单元电路设计

3、元件的选择

对于计数器来说需要选同时可以进行加减计数的计数器进行 加减,因此选用单时钟十进制加/减计数器74LS190. 其电路图及功能表如下: 中间由于1/0的输出不能够持久的进行保持,因此可用RS触 发器进行保持。对于加/减,等于触发需要74LS194进行触发 保持 4、整体电路(见附图) 5、工作原理 主要运用十进制加/减计数器74LS190加/减计数功能与74LS194的触发 功能。 六、设计总结 我们以为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教别人,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远还会结束,

相关文档
最新文档