微机原理课程设计(用8255A实现4位十进制计算器)

微机原理课程设计(用8255A实现4位十进制计算器)
微机原理课程设计(用8255A实现4位十进制计算器)

课程设计报告

( 2012-- 2013年度第 1 学期)

名称:微型计算机原理及应用

题目:用8255A实现四位十进制数简单计算器院系:控制与计算机工程学院

班级:自动化1003班

学号:1101190302

学生姓名:范昌

指导教师:王震宇

设计周数:一周

成绩:

同组人:贾旭郭欢刘玉婷

日期:2013 年1 月 5 日

一、课程设计的目的与要求

课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。

通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。

我组根据微机原理课程所学相关知识及实验教程相关内容,在基于proteus平台,使用汇编语言,以8086为核心的情况下,配合可编程并行接口器件8255A,LED数码管等器件实现可进行简单四位数加减乘除法功能的十进制计算器。在课程设计实践中,我们不仅锻炼了实际动手能力,培养了团队精神和严肃认真的工作态度,更增强了自己在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。

二、课程设计进度及任务分工

课设进度:1.选择课程设计题目,查阅相关资料。(全体组员)

2.需求分析及总体设计。(全体组员)

3.软硬件设计。(范昌负责主程序的框架与整体调试、LED数码显示部分及硬件构架,贾旭负

责键盘管理部分,郭欢、刘玉婷负责算法及相关程序)

4.仿真调试。(范昌、贾旭)

5.总结及撰写设计报告。(郭欢、刘玉婷)

6.个人总结(全体组员)

三、设计正文

1.需求分析

●操控核心微处理器8086芯片

●可编程并行接口芯片8255A

●可编程定时/计数器8253A

●对输入扫描的矩阵键盘

●显示模块LED数码管

●辅助器件如74LS138译码器、74LS373等

2.总体设计

●确定键盘是否有输入(使用程序不断进行扫描)

●若有输入就调用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用

相应的子程序进行操作

●继续扫描键盘是否有输入,从而实现4位十进制数以内的加减乘除法或者扩展功能运算

●运算完成后将运算的结果储存并显示到LED显示器上

3.硬件设计

见附录。

4.软件设计

见附录。

四、课程设计总结或结论

(1)个人总结

本次课程设计我们做的课题是用8255A实现4位十进制数简易计算器,四人一组,我负责主程序的框架与整体调试、LED数码显示部分及硬件构架。对于主程序的框架,是整个计算器

的核心,通过与其他组员的商量我们最终确定了我们的主要算法:通过一个4*4键盘,输入数据,实现加减乘除操作,将输入的数据和运算符分别存储,接收到“=”时进行运算,并将结果输出。

看起来简单的算法,由于涉及到十进制和十六进制的转换,其中就需要很多中间的转换程序。经

过反复修改与查阅资料,我们的程序最终能够完成部分预期功能。

我还负责LED数码管显示部分的程序,四位七段数码管的显示,原理看起来简单,但是实际操作时却有各种各样的毛病,按照原理写好程序,往往不能达到预期效果,数码管又是不显示,有时会显示乱码,有时会闪烁,所有这些,都要一步一步调试,加入合适的延时程序是关键,延

时过长、过短都不好。显示乱码是程序方面出了问题,经过一次次调试,终于得到了稳定的显示,我对数码管的应用也更熟练了。

由于我之前有接触过proteus仿真软件,所以我负责硬件的搭建,熟悉使用proteus软件对我们专业来说是一项基本技能,通过一次次摸索与百度,我对这个软件的使用也越来越熟悉,学会了怎么连总线,怎么仿真,怎么快速连线,以及常用元件的搜索。其中最让我满足的是键盘的设

计,如果用16个按钮排列当然可以实现我们的要求,但是每次按按钮有很不方便,所以我在网

上查询资料,学会了用proteus自身的模型制作自己的元件,上图左边是普通矩阵键盘,右图是

我利用proteus自身模型制作的的键盘,感觉很满意。整个硬件仿真的搭建,由于对软件的不熟

悉,本身设计的问题,花了我很长时间,而且重复连接了很多次,最后我们成功仿真出了我们的计算器。

通过本次课程设计,就我本身来说我学会了很多东西,无论是软件上汇编语言程序的编写与调试,还是硬件的搭建技巧与相关软件的应用的能力都得到了很大提高,同时也锻炼了我的自我学习能力与交流合作能力,相关软件的学习使用,相关芯片与元件的使用与选择能力都在一定程度上有了很大进步。同时,软硬件的结合,也体现了我们自动化专业的特点。

最后,有一点遗憾的就是做好了四位的简易计算器,我们想进一步扩展做成八位的计算器,但是难度有所加大,不是想象中的那么简单,数码管显示部分就花了很大精力去调试。最后由于时间关系没有完成8位计算器的制作。

(2)团队总结

本次课程设计,我们是四人一组,团队合作的要求就比较高。因为选题的关系,需要更多的人合作,所以决定四人组队,各自发挥特长。

在设计过程中,我们配合得很好,初期的查阅资料共享,极大地体现了我们人数上的优势。

对于整个设计的交流更让我们在大方向上走上了正确的道路,少走了很多弯路。我们的课题看起来简单,其实不然,仔细分析,涉及的知识面很广,很考验我们的基本功和自学能力。软件方面的算法由于是大家一起讨论后决定的,一般都是可行的,也有很多难点,比如说十进制与十六进制的转换,数据的输出与存储等,但是在我们的通力合作下一一解决了我们面临的很多难题。硬件方面用的是proteus软件仿真,硬件电路的设计也是一个难点,但是通过查阅资料与相互交流,我们的电路最终是可行的,虽然之前失败了好几次。软件和硬件的结合再一次考验了我们的合作精神,软件是建立在硬件上的,硬件体现软件的功能,主要负责硬件和组要负责软件的同学建立了很好的默契,相互学习,圆满的完成了任务。

本次课程设计我们对自己的成果相对比较满意,在设计的过程中,大家相互学习,相互帮助,都收获很多。但是我们也有很多不足的地方,比如四位的计算器位数太少,不能进行小数运算等,这些都是对我们能力的极大挑战,为了解决这些问题我们也进行了积极探索,设计了一个八位的简单计算器,但是由于时间有限,没能完成设计。

五、参考文献

[1]《清华大学TPC—2003A实验指导书》,2006版

[2]《新编16/32位微型计算机原理及应用》,李继灿主编,清华大学出版社,2008版,第四版

[3] 陈继红.微机原理及应用[M].北京:高等教育出版社,2011年,276-283页

[4] 周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2007年

附录

一、软件设计

1.总程序流程图

2.扫描程序流程图Array

3.程序代码

;8255A端口地址:A口:40H,B口:44H,C口:42H,控制端口:46H DATA SEGMENT

X DB ? , ? , ? , ? ;存放数据的每一位

X1 DW ? ;存放第一个数据值

X2 DW ? ;存放第二个数据值

Y DW ? ;存放运算结果

S DB ? ;存放运算符号值

E DB ? ;按下等号键标记

CC DB ? ;存放运算数据位数

H DB 0 ;存放按键行号

L DB 0 ;存放按键列号

DISCODE DB 3FH,06H,5BH,4FH,

66H,6DH,7DH,07H,

7FH,6FH,77H,7CH,

39H,5EH,79H,71H ;段码表

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE

DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AL,90H ;设置为A口输入,B口输出,C口输出

OUT 46H,AL

MOV DI,OFFSET X+3 ;DI指向X的高位

KKK: CALL KEY ;扫描按键

JMP KKK

;以下为按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号

KEY PROC

CHECK: CALL DISP ;等待按键按下的同时进行显示

MOV AL,0F0H ;所有行输出低电平

OUT 44H,AL

IN AL,40H

CMP AL,0FFH ;读列值

JZ CHECK ;若都为高电平则无键按下,等待

MOV CX,50

LOOP $ ;延时消抖

IN AL,DX ;重读列值

CMP AL,0FFH

JZ CHECK ;无键按下一直等待

MOV H,0 ;有键按下,先把行列号变量清0

MOV L,0

MOV BL,01H

MOV BH,0FEH ;扫描法读键值:从第一行开始测试,即PC0输出低电平NEXT: MOV AL,BH

OUT 44H,AL

NEXTH: IN AL,40H ;读列值,判断是第几列有键按下

TEST AL,BL ;从第一列开始判断

JZ WAIT0

ROL BL,1

CMP BL,10H ;当前行状态下没有列有键按下,则转为对下一行的测试

JZ NEXTL

INC H ;每判断一列,列号加1

JMP NEXTH ;再对下一列进行判断

NEXTL: MOV H,0

MOV BL,01H

ROL BH,1 ;对下一行测试,让下一个PC口输出低电平

CMP BH,0EFH

JZ EXIT

INC L

JMP NEXT

WAIT0: IN AL,40H ;若有键按下,则等该按键松开后再计算键值

CMP AL,0FFH

JNZ WAIT0

MOV CX,50

LOOP $ ;延时消抖

IN AL,40H

CMP AL,0FFH

JNZ WAIT0

CALL KEYVALUE ;调计算键值子程序

EXIT: RET

KEY ENDP

;以下为计算键值子程序,通过行列号计算键值(键值=行号*4+列号)键值存放在DL寄存器中KEYVALUE PROC

MOV DL,L

MOV DH,H

SHL DL,1

SHL DL,1 ;列号乘4

ADD DL,DH

CMP DL,9 ;按下的是数字键

JNG NUM_CALL

CMP DL,14

JL CONT_CALL ;按下的是运算键

CMP DL,14

JZ OUTP_CALL ;按下的是等于键

CMP DL,15

JZ CLR_CALL ;按下的是清除键

NUM_CALL: CALL NUMBER ;调数字键处理子程序

JMP EXIT1

CONT_CALL: MOV S,DL ;存放运算键的键值

MOV E,0

CALL COUNT 调运算键处理子程序,计算第一个加数

JMP EXIT1

OUTP_CALL: CALL OUTP ;调等号键处理子程序

JMP EXIT1

CLR_CALL: CALL CLEAR ;调清除键处理子程序

EXIT1: RET

KEYVALUE ENDP

;以下为清除键处理子程序,按下清除键后,X变量全部清0

CLEAR PROC

MOV X[3],0

MOV X[2],0

MOV X[1],0

MOV X[0],0

CALL BITP

RET

CLEAR ENDP

;以下为等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入X2变量;并根据运算符号,调用相应的运算子程序

OUTP PROC

PUSH AX

PUSH DX

PUSH BX

INC E

CALL COUNT ;调运算键处理子程序,计算第二个运算数据

CMP S,10

JZ ADD_CALL ;运算符为加号,则调用加法子程序

CMP S,11

JZ SUB_CALL ;运算符为减号,则调用减法子程序

CMP S,12

JZ MUL_CALL ;运算符为乘号,则调用乘法子程序

CMP S,13

CALL DIVP ;运算符为除号,则调用除法子程序

JMP STORE1

ADD_CALL: CALL ADDP

JMP STORE1

SUB_CALL: CALL SUBP

JMP STORE1

MUL_CALL: CALL MULP

STORE1: MOV AX,Y

;以下程序将各运算子程序返回的运算结果,按位分解,送入X变量

MOV DX,0

MOV BX,1000

DIV BX

MOV X[0], AL

MOV AX,DX

MOV BL,100

DIV BL

MOV X[1],AL

MOV AL,AH

MOV AH,0

MOV BL,10

DIV BL

MOV X[2],AL

MOV X[3],AH

POP BX

POP DX

POP AX

RET

OUTP ENDP

;以下为运算键处理子程序,该程序将第一个运算数据的数值计算出来并存入X1变量

;或者将第二个运算数据的数值计算出来并存入X2变量

;将运算符的值存入S变量

COUNT PROC

PUSH AX

PUSH BX

PUSH DX

MOV DX,0

CALL BITP ;测试X中的数据是多少位

CMP CC,4 ;输入的数据是4位数?

JZ C4

CMP CC,3 ;输入的数据是3位数?

JZ C3

CMP CC,2 ;输入的数据是2位数?

JZ C2

JMP C1 ;输入的数据是1位数?

C4: MOV AX,0

MOV AL,X[0]

MOV BX,1000

MUL BX

MOV DX,AX

C3: MOV AL,X[1]

MOV BL,100

MUL BL

ADD DX,AX

C2: MOV AL,X[2]

MOV BL,10

MUL BL

ADD DX,AX

C1: MOV AL,X[3]

MOV AH,0

ADD DX,AX

CMP E,1

JNZ X1_S

MOV X2,DX ;按下的是等号,则将第二个运算数据的值存入X2变量

JMP EXIT3

X1_S: MOV X1,DX ;按下的是运算符号,则将第一个运算数据的值存X1变量MOV X[3],0 ;清空X变量

MOV X[2],0

MOV X[1],0

MOV X[0],0

EXIT3: POP DX

POP BX

POP AX

RET

COUNT ENDP

;以下为数字键处理子程序

;该程序,将输入的数据按位存放在X变量中,并由CC记录数据的位数NUMBER PROC

CMP E,1

JNZ CONTINUE

MOV E,0

CALL CLEAR

CONTINUE:CMP CC,0 ;目前数据为0位,即没有数据,则转到SSS JZ SSS

PUSH AX

PUSH DX

MOV AL,X[3]

MOV AH,X[2]

MOV DL,X[1]

MOV DH,X[0]

MOV CX,8

LL: SHL AX, 1

RCL DX,1

LOOP LL

MOV X[3],AL

MOV X[2],AH

MOV X[1],DL

MOV X[0],DH

POP DX

POP AX

SSS: MOV [DI],DL ;将当前键入的数据存放到X的最低位INC CC ;数据位数加1

CMP CC,4 ;判断数据位数

JNG EXIT2

MOV CC,0 ;如果数据超过4位,重新从最低位开始存放

MOV X[2],0

MOV X[1],0

MOV X[0],0

EXIT2: CALL DISP ;调显示子程序,显示输入的数据

RET

NUMBER ENDP

;加法子程序

ADDP PROC

PUSH AX

MOV AX,X1

ADD AX,X2

MOV Y,AX

POP AX

RET

ADDP ENDP

;减法子程序

SUBP PROC

PUSH AX

MOV AX,X1

SUB AX,X2

MOV Y,AX

POP AX

RET

SUBP ENDP

;乘法子程序

MULP PROC

PUSH AX

PUSH DX

MOV AX,X1

MOV DX,X2

MUL DX

MOV Y,AX

POP DX

POP AX

RET

MULP ENDP

;除法子程序

DIVP PROC

PUSH AX

PUSH BX

PUSH DX

MOV DX,0

MOV AX,X1

MOV BX,X2

DIV BX

MOV Y,AX

POP DX

POP BX

POP AX

RET

DIVP ENDP

;显示子程序,将X中的数值按位显示出来

DISP PROC

PUSH BX

PUSH AX

MOV BH,0

LEA SI,DISCODE

CALL BITP ;测试X位数

CMP CC,4

JZ QIAN

CMP CC,3

JZ BAI

CMP CC,2

JZ SHI

CMP CC,1

JMP G

JMP NONE

QIAN: MOV AH,11100000B ;从第4位开始显示

MOV AL,AH

OUT 44H,AL

MOV BL,X[0]

MOV AL,[SI+BX]

OUT 42H,AL

CALL DELY

MOV AL,0

OUT 42H,AL

BAI: MOV AH,11010000B ;从第3位开始显示

MOV AL,AH

OUT 44H,AL

MOV BL,X[1]

MOV AL,[SI+BX]

OUT 42H,AL

CALL DELY

MOV AL,0

OUT 42H,AL

SHI: MOV AH,10110000B ;从第2位开始显示MOV AL,AH

OUT 44H,AL

MOV BL,X[2]

MOV AL,[SI+BX]

OUT 42H,AL

CALL DELY

MOV AL,0

OUT 42H,AL

G: MOV AH,01110000B ;从第1位开始显示MOV AL,AH

OUT 44H,AL

MOV BL,X[3]

MOV AL,[SI+BX]

OUT 42H,AL

CALL DELY

JMP EXIT4

NONE: MOV AL,0 ;X中没有数据,不显示

OUT 42H,AL

EXIT4: POP AX

POP BX

RET

DISP ENDP

;分析数据位数子程序

BITP PROC

CMP X[0],0 ;如果X[0]不为0,则数据为4位数

JNZ FOURBIT

CMP X[1],0 ;如果X[1]不为0,则数据为3位数

JNZ THREEBIT

CMP X[2],0 ;如果X[2]不为0,则数据为2位数

JNZ TOWBIT

CMP X[3],0 ;如果X[3]不为0,则数据为1位数

JNZ ONEBIT

JMP ZER0BIT ;否则,没有数据

FOURBIT: MOV CC,4

JMP EXIT5

THREEBIT: MOV CC,3

JMP EXIT5

TOWBIT: MOV CC,2

JMP EXIT5

ONEBIT: MOV CC,1

JMP EXIT5

ZER0BIT: MOV CC,0

EXIT5: RET

BITP ENDP

;延时子程序

DELY PROC

PUSH CX

MOV CX,100

LOOP $

POP CX

RET

DELY ENDP

CODE ENDS

END START

二、硬件设计

1.微处理器8086

当引脚接高电平时,CPU工作于最小模式。

此时,引脚信号24~31的含义及其功能如

下:

(1)INTA/(interrupt acknowledge):可屏

蔽中断响应信号,输出,低电平有效。 CPU

通过信号对外设提出的可屏蔽中断请求做出

响应。为低电平时,表示CPU已经响应外设

的中断请求,即将执行中断服务程序。

(2)ALE(address lock enable):地址锁

存允许信号,输出,高电平有效。 CPU利用ALE信号可以把AD15 ~AD0地址/数据、A19/S6~

A16/S3地址/状态线上的地址信息锁存在地址锁存器中。

(3)DEN/(data enable):数据允许控制信号,输出,三态,低电平有效。信号用作总线收

发器的选通控制信号。当为低电平时,表明CPU进行数据的读/写操作。

(4)DT/(data transmit or receive):数据发送/接收信号,输出,三态。 DT/信号用来

控制数据传送的方向。DT/为高电平时,CPU发送数据到存储器或I/O端口;DT/为低电平时,

CPU接收来自存储器或I/O端口的数据。

(5)IO/M/(memory I/O select):存储器、I/O端口选择控制信号。信号指明当前CPU是

选择访问存储器还是访问I/O端口。为高电平时访问存储器,表示当前要进行CPU与存储器

之间的数据传送。为低电平时,访问I/O端口,表示当前要进行CPU与I/O端口之间的数据

传送。

(6)WR/(write):写信号,输出,低电平有效。信号有效时,表明CPU正在执行写总线周

期,同时由信号决定是对存储器还是对I/O端口执行写操作。

(7)HLDA(hold acknowledge):总线保持响应信号,输出,高电平有效。HLDA是与HOLD配

合使用的联络信号。在HLDA有效期间,HLDA引脚输出一个高电平有效的响应信号,同时总线

将处于浮空状态,CPU让出对总线的控制权,将其交付给申请使用总线的8237A控制器使用,

总线使用完后,会使HOLD信号变为低电平,CPU又重新获得对总线的控制权。

(8)HOLD(bus hold request):总线保持请求信号,输入,高电平有效。在DMA数据传送

方式中,由总线控制器8237A发出一个高电平有效的总线请求信号,通过HOLD引脚输入到CPU,

请求CPU让出总线控制权。

2. 可编程并行接口芯片8255A

RESET:复位输入线,当该输入端外于高电平时,所

有内部寄存器(包括控制寄存器)均被清除,所有

I/O 口均被置成输入方式。

PA0~PA7:端口A 输入输出线,一个8 位的数据输

出锁存器/缓冲器,一个 8 位的数据输入锁存器。

PB0~PB7:端口B 输入输出线,一个8 位的I/O 锁

存器,一个 8 位的输入输出缓冲器。

PC0~PC7:端口C 输入输出线,一个8 位的数据输

出锁存器/缓冲器,一个 8 位的数据输入缓冲器。

端口C 可以通过工作方式设定而分成2 个4 位的

端口,每个 4 位的端口包含一个4 位的锁存器,

分别与端口A 和端口B 配合使用,可作为控制信号输出或状态信号输入端口。

CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255 与CPU 进行通讯。RD:读信号线,当这个输入引脚为低电平时,允许8255 通过数据总线向CPU 发送数据或状态信息,即CPU 从8255 读取信息或数据。

WR:写入信号,当这个输入引脚为低电平时,允许CPU 将数据或控制字写8255。

D0~D7:三态双向数据总线,8255 与CPU 数据传送的通道,当CPU 执行输入输出指令时,通过它实现8 位数据的读/写操作,控制字和状态信息也通过数据总线传送。

8255 的读写控制:

8255 的读/写控制逻辑电路接受CPU 发来的控制口号RD、WR、RESET 和地址信号A1~A0。然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU 或者将CPU送来的数据写入端口,各端口的工作状态。通过用输出指令对8255A 的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作,端口A 可工作于3 种方式的任一种,端口B 只能工作于方式0 和方式1,端口C 除了用于输入输出端口外,还能配合A 口和B 口工作,为这两个端口的输入输出操作提供联系信号。

3.可编程定时/计数器8253A

8253A的引脚可以分为两部分:与CPU的接口引脚和

与外设的接口引脚。

(1) 与CPU的接口引脚

D0~D7:三态双向数据线,和CPU数据总线相连,用

于传输CPU与8253之间的数据信息、控制信息和状

态信息。

CS:片选信息,输入、低电平有效。

A1、A0:用来对8253A片内三个计数通道和控制字寄

存器进行寻址。

RD:读信号,输入,低电平有效。

WR:写信号,输入,低电平有效。

(2) 与外设的接口引脚

CLK:时钟输入引脚,用于输入定时脉冲或计数脉冲信号。计数器对这个引脚输入的脉冲进行计数。

GATE:门控输入端。用于外部控制计数器的启动计数和停止计数的操作。两个或两个以上计数器连用时,可以用此信号来同步,也可用于与外部某信号的同步。

OUT:计数输出端。不管8253以何种方式工作,当计数器计数到0时,在OUT引脚上必定有输出。在不同模式下,可输出不同形式的信号。

4.LED数码管

LED为发光二极管构

成的显示器件,亦称数码

管。由7个字符段和一个

小数点段组成,每段对应

一个发光二极管,当发光

二极管点亮时,相应的字

符段点亮。LED有共阴极

和共阳极两种供应状态。

共阴极显示时,将LED显示的COM接地,将八个字符段端a、b、c、d、e、f、g、dp依次与一个8位I/O口的最低到最高位连接,当I/O给LED的哪个字符段送入一个高电平时,该段

就被点亮,从而可从这7个字符段中被点亮的构成相应的字符显示出来。同理,COM阳极即将COM端接Vcc,其显示原理与COM阴极的基本相同,但I/O口送入低电平是相应的段才被点亮。

5.4×4矩阵按键

键盘

是信息输

入元件,

由一个个

按钮组

成,如果

是独立按

钮的话必

须要需要

一个I/O口对它进行检测。因为4×4矩阵键盘有8个管脚,于是将键盘接8255A的PC口。因为进行键盘扫描一般要求有一部分的I/O口的工作方式是输入,另一部分I/O是输出,具体到4×4键盘则要求4个I/O口输入,另外4个输出,这一点PC口刚好符合,而PA、PB口要么全部输入或输出,所以只能是PC口接键盘。

4x4矩阵按键面板

6.74L138译码器

①当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。

②利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。

③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。

④可用在8086的译码电路中,扩展内存。

7.74LS373D 锁存器

373为三态输出的八 D 透明锁存器,共有 54S373 和74LS373 两种线路。

①当三态允许控制端 OE 为低电平时,Q0~Q7为正常逻辑状态,可用来驱动负载或总线。当 OE 为高电平时,Q0~Q7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。

②当锁存允许端 LE 为高电平时,Q 随数据 D 而变。当 LE 为低电平时,D 被锁存在已建立的数据电平。当LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。

③引出端符号:

D0~D7 数据输入端

OE 三态允许控制端(低电平有效)

LE 锁存允许端

Q0~Q7 输出端

60进制计数器课程设计报告

电子技术基础实验 课程设计 60进制计数器

一、实验目的 (一)掌握中规模集成计数器74LS161的引脚图和逻辑功能。 (二)熟悉555集成定数器芯片的引脚图。 (三)利用74LS161和555定时器构成60进制计数器。 (四)在Multisim软件中仿真60进制计数器。 二、实验容 (一)集成计数器74LS161逻辑功能验证。 (二)用555定时器构成多谐振荡器。 (三)用两片74LS161和555定时器构成60进制计数器。 三、集成计数器介绍 (一)集成计数器74LS161管脚介绍 74LS161是4位二进制同步加法计时器。图1为它的管脚排列图,集成芯片74LS161的CLR是异步清零端(低电平有效),LOAD是异步预置数控制端(低电平有效)。CLK是时钟脉冲输入端,RCO是进位输出端,ENP、ENT是计数器使能端,高电平有效。A、B、C、D是数据输入端; QA、QB、QC、QD是数据输出端。

图1 74LS161管脚排列图 (二)集成计数器74LS161功能介绍 由表1可知,74LS161具有以下功能: 1.异步清零。当CLR=0时,无论其他各输入端的状态如何,计数器均被直接置“0”。 2.同步预置数。当CLR=1、LOAD=0且在CP上升沿作用时,计数器将ABCD同时置入QA、QB、QC、QD,使QA、QB、QC、QD=ABCD。 3.保持(禁止)。CLR=LOAD=1且ENP、ENT=0时,无论有无CP脉冲作用,计数器都将保持原有的状态不变(停止计数)。 4.计数。CLR=LOAD=ENP=ENT=1时,74LS161处于计数状态。 表1 74LS161功能表

设计60进制计数器 数电课程设计

电子技术基础实验 课程设计 用74LS161设计六十进制计数器 学院:班级:姓名:学号:电气工程学院电自1418 刘科 20

用74LS161设计六十进制计数器 摘要 计数器是一个用以实现计数功能的时序部件,它不仅可用来及脉冲数,还常用作数子系统的定时、分频和执行数字运算以及其它特定的逻辑功能。目前,无论是TTL还是CMOS集成电路,都有品种较齐全的中规模集成计数器。使用者只要借助于器件手册提供的功能和工作波形图以及引出端的排列,就能正确运用这些器件。计数器在现代社会中用途中十分广泛,在工业生产、各种和记数有关电子产品。如定时器,报警器、时钟电路中都有广泛用途。在配合各种显示器件的情况下实现实时监控,扩展更多功能。 利用两片74LS161分别作为六十进制计数器的高位和低位,分别与数码管连接。把其中的一个通过一个与门器件构成一个十进制计数器,另一个芯片构成六进制计数器。十进制计数器(个位)和六进制计数器(十位)均采用反馈清零法利用两个74LS161构成。当个位计数器从1001计数到0000时,十位计数器要计数一次,可通过两芯片之间级联实现。使用200HZ时钟信号作为计数器的时钟脉冲。根据设计基理可知,计数器初值为00,按递增方式计数,增到59时,再自动返回到00。 关键字:60进制,计数器,74LS161,级联 目录 第1章概述 (1) 计数器设计目的 (1) 计数器设计组成 (1) 第2章六十进制计数器设计描述 (2) 74LS161的功能 (2)

方案框架 (3) 第3章六十进制计数器的设计与仿真 (4) 基本电路分析设计 (4) 计数器电路的仿真 (6) 第4章总结 (8)

简单计算器c++课程设计

简单计算器 1 基本功能描述 简单计算器包括双目运算符和单目运算符。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦、阶乘、对数、开方、倒数等运算。可对输入任意操作数包含小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出提示,同时包含清除、退格、退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图1,是输入数据子函数的流程图。打开计算器程序,输入数据,判断此次输入之前是否有数字输入,如果有,则在之前输入的数字字符后加上现有的数字字符;如果没有,则直接使编辑框显示所输入的数字字符。判断是否继续键入数字,如果是,则继续进行前面的判断,如果否,则用UpdateData(FALSE)刷新显示。 如图2,是整个计算器的流程图。对于输入的算式,判断运算符是双目运算符还是单目运算符。如果是双目运算符,则把操作数存入数组a[z+2]中,把运算符存入b[z+1]中;如果是单目运算符,则把字符串转化为可计算的数字,再进行计算。下面判断运算符是否合法,如果合法,则将结果存入a[0],不合法,则弹出对话框,提示错误。结束程序。

输入一个数字 在之前输入的数字字符后面加上现在的数字字符。 Eg :m_str+=”9”。 直接使编辑框显示所输入的数字字符。 Eg :m_str=”9”。 pass3=1表示已有数字输入 开始 之前是否有数字输入? pass3==1? 继续键入数字? 用UpdateData(FALSE)刷新显示 图1 输入数据子函数流程图 Y N Y N

输入开始 双目运算符 是否每一个操作数都存入a[]数组? 把操作数存入a[z+2],把运算符存入b[z+1]。 单目运算符 将字符串转换 为可计算的数进行运算 运算是否合法? 将结果存入a[0] 弹出对话框提示错误 结束Y Y N N 图2 简单计算器总流程图

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 1301 姓名 学号: 指导老师: 日期:

目录 1、设计目的 (3) 2、概要设计 (3) 2.1 系统总体分析 (3) 2.2 主模块框图及说明 (3) 3、详细设计 (4) 3.1 主模块及子模块概述 (4) 3.2各模块详运算 (4) 4、程序调试 (7) 4.1 运行界面分析 (7) 算法分析 (7) 4.2 调试过程与分析 (9) 5、心得体会 (11) 5.1 设计体会 (11) 5.2 系统改进 (11) 附录: (11)

1、设计目的 本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。 2、概要设计 用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析 在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。 2.2 主模块框图及说明 此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

10进制加法计数器课程设计

西北师范大学知行学院 数字电子实践论文 课题:74ls161组成的十进制加法计数器 (置数法) 班级:14电本 学号:14040101114 姓名:于能海

指导老师:崔用明 目录 第1章前言 (1) 1.1 摘要 (1) 1.2 设计目的 (2) 1.3 设计内容及要求 (2) 第2章设计方案 (3) ....................................................................................................................... 错误!未定义书签。 2.1主要芯片功能介绍 (3) 2.2.1 四位二进制计数器74161介绍 (3) ............................................................................................................... 错误!未定义书签。 2.2 工作原理 (4) 第3章硬件设计 (4) 3.1 单元电路设计 (4) 3.2 总硬件电路图 (5) 第4章仿真与试验 (6) 4.1 仿真结果 (6) 4.2 调试中遇到的问题 (7) 第5章结论和体会 (8)

第1章前言 1.1 摘要在数字电路技术的课程中,计数器的功能是记忆脉冲的个数,它是数字系统中应用最广泛的基本时序逻辑构件。计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。计数器:CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。 本十进制加法计数器是基于74161芯片而设计的, 该十进制加法计数器设计理念是用于工厂流水线上产品计数,自动计数,方便简单。 关键词:74ls161计数器 Introduction In the course of digital circuit technology, the counter memory function is the number of pulses, it is a digital system, the most widely used basic sequential logic components. The main role of the counter in the micro-computer system is to provide real-time clock for the CPU and I / O devices to achieve the timer interrupt, timing detection, scheduled scanning, the timing display timing control, or to count external events. General computer systems and computer application systems are equipped with a timer / counter circuit, it can as a counter action, but also as a timer, the basic working principle is "minus 1" count. Counter: CLK input pulse is a non-periodic event count pulses to zero when calculating unit, OUT outputs a pulse signal, to show the count is completed. The decimal addition counter is designed based on the 74161 chip, the low potential sensor senses when to rely on external signals, sensors in an object within the sensing range, otherwise it is a high potential. Within the sensing range of the sensor when an object is moved out of date, sensor potential from high to low and then high, appears on the edge. Counter is automatically incremented and displayed on a digital control. The decimal addition counters have two seven-segment LED. It can count from 0 to 99 objects, and easy to expand. The design concept of decimal addition counter is used to count on a factory assembly line products, automatic counting, convenient and simple. Keywords:74ls161counter

数电课程设计38进制计数器

1.课程设计的目的 数字电子技术课程是电类专业的主要技术基础课。通过本课程的学习,能够使学生掌握近代数电理论的基础知识、电路分析与计算的基本方法,具备进行试验的初步技能,并为后续课程的学习打下必要的基础。 数字电子技术基础课程设计是学习数字电子技术基础课程之后的实践教学环节,是对课程理论和课程实验的综合和补充,其目的是训练学生综合运用学过的数字电子技术的基础知识。学会并利用一种电路分析软件,对电路进行分析、计算和仿真,通过查找资料,选择方案,设计电路,撰写报告,完成一个较完整的设计过程,将抽象的理论知识与实际电路设计联系在一起,使学生在掌握电路基本设计方法的同时,加深对数字电子技术课程知识的理解和综合应用,培养学生综合运用基础理论知识和专业知识解决实际工程设计问题的能力,以及工程意识和创新能力。 2.设计方案论证 2.1 Multisim软件介绍 Multisim是加拿大Interactive Image Technologies (Electronics Workbench)公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。可以使用Multisim交互式地搭建电路原理图,并对电路行为进行仿真。Multisim提炼了SPICE仿真的复杂内容,这样无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,这也使其更适合电子学教育。通过Multisim和虚拟仪器技术,可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程。 功能: (1).直观的图形界面 整个操作界面就像一个电子实验室工作台,绘制电路所需的元器件和仿真所需的测试仪器均可直接拖放屏幕上,轻点鼠标可用导线将它们连接起来,软件仪器的控制面板和操作方式都与实物相似,测量数据、波形和特性曲线如何在真实一起上看到的。 (2).丰富的元器件

数电脉搏计数器电路课程设计

烟台南山学院 数字电子技术课程设计题目脉搏计数电路设计 姓名:___ XXXXXX ___ 所在学院:_工学院电气与电子工程系 所学专业:_ 自动化 班级:___电气工程XXXX 学号:___XXXXXXXXXXXXXX 指导教师:_____ XXXXXXXX ___ 完成时间:____ XXXXXXXXXXXXX

数电课程设计任务书 一、基本情况 学时:40学时学分:1学分适应班级:12电气工程 二、进度安排 本设计共安排1周,合计40学时,具体分配如下: 实习动员及准备工作:2学时 总体方案设计:4学时 查阅资料,讨论设计:24学时 撰写设计报告:8学时 总结:2学时 教师辅导:随时 三、基本要求 1、课程设计的基本要求 数字电子技术课程设计是在学习完数字电子课程之后,按照课程教学要求,对学生进行综合性训练的一个实践教学环节。主要是培养学生综合运用理论知识的能力,分析问题和解决问题的能力,以及根据实际要求进行独立设计的能力。初步掌握数字电子线路的安装、布线、焊接、调试等基本技能;熟练掌握电子电路基本元器件的使用方法,训练、提高读图能力;掌握组装调试方法。其中理论设计包括总体方案选择,具体电路设计,选择元器件及计算参数等,课程设计的最后要求是写出设计总结报告,把设计内容进行全面的总结,若有实践条件,把实践内容上升到理论高度。 2、课程设计的教学要求 数字电子技术课程设计的教学采用相对集中的方式进行,以班为单位全班学生集中到设计室进行。做到实训教学课堂化,严格考勤制度,在实训期间累计旷课达到6节以上,或者迟到、早退累计达到8次以上的学生,该课程考核按不及格处理。在实训期间需要外出查找资料,必须在指定的时间内方可外出。 课程设计的任务相对分散,每3名学生组成一个小组,完成一个课题的设计。小组成员既有分工、又要协作,同一小组的成员之间可以相互探讨、协商,可以互相借鉴或参考别人

课程设计:六十进制计数器的设计

一、实验目的 1.进一步掌握VHDL语言中元件例化语句的使用 2.通过本实验,巩固利用VHDL语言进行EDA设计的流程 二、实验原理 1.先分别设计一个六进制和十进制的计数器,并生成符号文件2.利用生成的底层元件符号,设计六十进制计数器顶层文件 三、实验步骤 (略) 四、实验结果

六进制计数器源程序cnt6.vhd: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE. STD_LOGIC_UNSIGNED.ALL; ENTITY CNT6 IS PORT (CLK, CLRN, ENA, LDN: IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT: OUT STD_LOGIC); END CNT6; ARCHITECTURE ONE OF CNT6 IS SIGNAL CI: STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; BEGIN PROCESS(CLK, CLRN, ENA, LDN) BEGIN IF CLRN='0' THEN CI<="0000"; ELSIF CLK'EVENT AND CLK='1' THEN IF LDN='0' THEN CI<=D; ELSIF ENA='1' THEN IF CI<5 THEN CI<=CI+1; ELSE CI<="0000"; END IF; END IF; END IF; Q<=CI; END PROCESS; COUT<= NOT(CI(0) AND CI(2)); END ONE;

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

24进制计数器设计报告.doc

24进制计数器设计报告 单时钟同步24进制计数器课程设计报告1.设计任务1.1设计目的1.了解计数器的组成及工作原理。 2.进一步掌握计数器的设计方法和计数器相互级联的方法。 3.进一步掌握各芯片的逻辑功能及使用方法。 4.进一步掌握数字系统的制作和布线方法。 5.熟悉集成电路的引脚安排。 1.2设计指标1.以24为一个周期,且具有自动清零功能。 2.能显示当前计数状态。 1.3设计要求1.画出总体设计框图,以说明计数器由哪些相对独立的功能模块组成,标出各个模块之间互相联系,时钟信号传输路径、方向。 并以文字对原理作辅助说明。 2.设计各个功能模块的电路图,加上原理说明。 3.选择合适的元器件,利用multisim仿真软件验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。 4.在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局。 5.打印PCB板,腐蚀,钻孔,插元器件,焊接再就对整个计数器电路进行调试。

2.设计思路与总体框图.计数器由计数器、译码器、显示器三部分电路组成,再由555定时器组成的多谐振荡器来产生方波,充当计数脉冲来作为计数器的时钟信号,计数结果通过译码器显示。 图1所示为计数器的一般结构框图。 十位数码显示管译码驱动异步清零计数器计数脉冲(由555电路产生)个位位数码示像管译码驱动异步清零计数器强制清零▲图1计数器结构框图3.系统硬件电路的设计3.1555多谐荡电路555多谐振荡电路由NE555P芯片、电阻和电容组成。 由NE555P的3脚输出方波。 ▲图2555电路3.2计数器电路集成计数芯片一般都设置有清零输入端和置数输入端,而且无论是清零还是置数都有同步和异步之分。 有的集成计数器采用同步方式,即当CP触发沿到来时才能完成清零或置数任务;有的集成计数器则采用异步方式,即通过触发器的异步输入端来直接实现清零或置数,与CP信号无关。 本设计采用异步清零。 由2片十进制同步加法计数器74LS160(图2-1-1)、一片与非门74LS00(图2-1-2)和相应的电阻、开关。 由外加送来的计数脉冲(由555电路产生)送入两个计数器的CLK端,电路在计数脉冲的作用下按二进制自然序依次递增1,当个位计数到9时,输出进位信号给十位充当使能信号进位。

对外部脉冲计数系统的设计计数器课程设计(单片机)

湖南工业大学 课程设计 资料袋 理学学院(系、部)2012 ~ 2013 学年第 1 学期 课程名称单片机应用系统指导教师周玉职称副教授学生姓名张思远专业班级电子科学102 学号10411400223 题目对外部脉冲计数系统的设计 成绩起止日期2013 年01 月06 日~2013 年01 月10 日 目录清单

湖南工业大学 课程设计任务书 2012 —2013 学年第1 学期 理学院学院(系、部)电子科学专业102 班级 课程名称:单片机应用系统 设计题目:对外部脉冲计数系统的设计 完成期限:自2013 年01 月06 日至2013 年01 月10 日共 1 周

指导教师(签字):年月日系(教研室)主任(签字):年月日

附件三 (单片机应用系统) 设计说明书 (题目) 对外部脉冲计数系统的设计 起止日期:2013 年01 月06 日至2013 年01 月10 日 学生姓名张思远 班级电子科学102 学号10411400223 成绩 指导教师(签字) 电气与信息工程学院 2012年12 月10 日

一、设计任务: 1.1 外部脉冲自动计数,自动显示。 1.1.1设计一个255计数器:0-255计数,计满后自动清0,重 新计数(在数码管中显示)。 1.1.2设计一个50000计数器:0-50000计数,计满后自动清0, 重新计数(在数码管中显示)。 注:要求首先采用PROTEUS完成单片机最小系统的硬件电路 设计及仿真;程序仿真测试通过后,再下载到单片机实训 板上执行。 二、硬件设计介绍: ※STC89C52单片机; ※6位共阴或者共阴极数码管; ※外部晶振电路; ※ISP下载接口(In system program,在系统编程); ※DC+5V电源试配器(选配); ※ISP下载线(选配) ※6个PNP(NPN)三极管 ※12个碳膜电阻 三、硬件设计思路 方案一:五个1位7段数码管,无译码器 方案二:五个1位7段数码管,译码器 方案三:1个6位7段数码管,译码器 方案四:1个6位7段数码管,无译码器 考虑实际中外围设备、资金、单片机资源利用率、节省端口数量,可实行性以及连接方便等问题,采用6为数码管(共阳或者共阴极)由于实际中没买到6位的,采用2个三位数码管并接组合一个6位数码管形式;由于实际P口驱动能力有限,故采用6位三极管增大驱动能力,已便足以使得6位数码管亮度明显正常工作,增加6个电阻限流保护数码管不被烧坏。让数码管a-g7段分别接P1.6—P1.0,6位位选分别接P2.5—P2.0。 方法一:共阴极数码管 硬件图1.0所示:通过npn管放大后,段选高电平有效,位选低电平有效

简易计算器课程设计

评阅教师评语:课程设计成绩 考勤成绩 实做成绩 报告成绩 总评成绩指导教师签名: 课程设计报告 论文题目基于ARM的简易计算器设计 学院(系):电子信息与自动化学院 班级:测控技术与仪器 学生姓名:同组同学: 学号:学号: 指导教师:杨泽林王先全杨继森鲁进时间:从2013年 6 月10 日到2013年 6 月28 日 1

目录 1、封面—————————————————————P1 2、目录—————————————————————P2 3、前言—————————————————————P3 4、关键字————————————————————P3 5、原理与总体方案————————————————P3 6、硬件设计———————————————————P6 7、调试—————————————————————P10 8、测试与分析——————————————————P11 9、总结—————————————————————P13

10、附件—————————————————————P14 前言 近几年,随着大规模集成电路的发展,各种便携式嵌入式设备,具有十分广阔的市场前景。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上。 本文通过周立功的LPC2106芯片完成的简易计算器,正是对嵌入式应用的学习和探索。 一、摘要: 计算器一般是指“电子计算器”,是能进行数学运算的手持机器,拥有集成电路芯片。对于嵌入式系统,以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。本设计就是先通过C语言进行相应程序的编写然后在ADS中进行运行最后导入PROTUES进行仿真。最后利用ARM中的LPC2106芯片来控制液晶显示器和4X4矩阵式键盘,从而实现简单的加、减、乘、除等四则运算功能。 关键字:中断,扫描,仿真,计算 二、原理与总体方案: 主程序在初始化后调用键盘程序,再判断返回的值。若为数字0—9,则根据按键的次数进行保存和显示处理。若为功能键,则先判断上次的功能键,根据代号执行不同功能,并将按键次数清零。程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。最后将计算结果拆分成个、十、百位,再返回主程序继续检测键盘并显示;若为清零键,则返回主程序的最开始。 电路设计与原理:通过LPC2106芯片进行相应的设置来控制LCD显示器。 而通过对键盘上的值进行扫描,把相应的键值通过MM74C922芯片进行运算从而

基于单片机的光电计数器课程设计

计控学院 College of computer and control engineering Qiqihar university 电气工程课程设计报告题目:基于单片机的光电计数器 系别电气工程系 专业班级电气123班 学生姓名宋恺 学号2012024073 指导教师李艳东 提交日期 2015年6月 24日 成绩

电气工程课程设计报告 摘要 光电计数器是利用光电元件制成的自动计数装置。其工作原理是从光源发出的一束平行光照射在光电元件(如光电管、光敏电阻等)上,每当这束光被遮挡一次时,光电元件的工作状态就改变一次,通过放大器可使计数器记下被遮挡的次数。光电计数器的应用范围非常广泛,常用于记录成品数量,例如绕线机线圈匝数的检测、点钞机纸币张数的检测、复印机纸张数量的检测,或展览会参观者人数。 光电计数器与机械计数器相比,具有可靠性高、体积小、技术频率高、能和计算机链接实现自动控制等优点。本文即介绍基于MCS-51单片机的光电技术器。 关键词:单片机;光电计数器;数码显示;自动报警

齐齐哈尔大学计控学院电气工程系课程设计报告 目录 1 设计目的及意义 (1) 2 设计内容 (1) 2.1 系统整体设计 (1) 2.1.1 实验方案 (1) 2.1.2 光电计数器结构框图 (2) 图1 光电计数器结构框图 (2) 2.2系统硬件设计 (2) 2.2.1稳压直流电源电路 (2) 2.2.2发射接收电路 (3) 2.2.3显示电路 (3) 2.2.4报警电路 (4) 2.2.5硬件系统 (4) 2.3系统软件设计 (6) 3 结论7 4 参考文献 (8)

最新单片机简易计算器课程设计

单片机简易计算器课 程设计

引言 说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本任务是个简易的两位数的四则运算,程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。本任务重在设计构思与团队合作,使得我们用专业知识、专业技能分析和解决问题全面系统的锻炼。 随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。80C51单片机已成为单片机发展的主流。专家认为,虽然世界上的MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形成事实上的标准MCU芯片。 事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台

自动计数器课程设计..

西安电子科技大学 长安学院课程设计实验报告 姓名: 学号: 指导老师:

自动计数器课程设计 摘要:自动计数器在日常生活中屡见不鲜,它是根据不同的情况设定的,能够通过技术功能实现一些相应的程序,如通过自动计数器来实现自动打开和关闭各种电器设备的电源。广泛用于路灯,广告灯,电饭煲等领域。 自动计数器给人们生产生活带来了极大的方便,而且大大地扩展了自动计数器的功能。诸如自动定时报警器、按时自动打铃、时间程序自动控制、定时广播、自动启闭电路,定时开关烤箱、甚至各种定时电器的自动启用等,所有这些,都是以自动计数器为基础的。由于它的功能强劲,用途广泛,方便利用,所以在这个电子科技发展的时代,它是一个很好的电子产品。如在洗衣机的定时控制以及路灯等一些人们不能再现场控制的操控。都可以利用自动计数器来完成这样的功用。可见此系统所能带来的方便和经济效益是相当远大的。因此,研究自动计数器及扩大其应用,有着非常现实的意义。 本次课设设计是检验理论学习水平、实践动手能力及理论结合实际的能力,要求具有一定的分析处理问题能力和自学能力的一个比较重要得实践课程。通过这样的过程,使我们的论文及实践水平有一次较为全面的检查,同时也使我们硬件方面的能力有所提高,对以后的学习有这非常重要的意义。 关键词:电器设备;自动计数器;电源 指导老师签名:

1. 设计任务及方案 1.1设计任务 设计并制作一个自动计数器,NE555构成时钟信号发生器,CD4518为二,十进制加计数器,CD4543为译码驱动器,调节R17课调节555的震荡频率,C1为充放电电容,电容越大,充点时间越长,振荡频率越低。 介绍了一种新型的自动计数器设计方法,以NE555构成计数脉冲信号发生器,CD4518为二/十进制加法计数器,CD4543为译码驱动器,与按键、数码管等较少的辅助硬件电路相结合,实现对LED数码管进行控制。本系统具有体积小、硬件少、电路结构简单及容易操作等优点。 本计数器可将机械或人工计数方式变为电子计数,并且采用LED数码显示,简单直观,可适用于诸多行业,以满足现代生产、生活等方面的需求。随着生产技术的不断改善和提高,在现代化生产的许多场合都可以看到计数器的使用。本计数器具有低廉的造价以及控制简单等特点。通过对计数脉冲的转换可使本计数器应用更为广泛。 2.电路原理 2.1 元器件的设计与参数 本小组设计的电路原理图所涉及的元器件有:电压为+5V的直流稳压电源;最大电阻为100K的滑动变阻器R17一个;有极性电容C1一个;无极性电容C2和C3; 开关SW一个;电阻R1~~R16总共16个;芯片有:NE555,CD4518,CD4543;以及共阴极7段数码显示器两个。

2位10进制加法计数器课程设计

目录 第1章前言 (1) 1.1 摘要 (1) 1.2 设计目的 (1) 1.3 设计内容及要求 (1) 第2章设计方案 (2) 2.1 系统框图 (2) 2.2主要芯片功能介绍 (2) 2.2.1 四位二进制计数器74161介绍 (2) 2.2.2七段显示译码器7448介绍 (3) 2.3 工作原理 (4) 第3章硬件设计 (5) 3.1 单元电路设计 (5) 3.2 总硬件电路图 (7) 第4章仿真与试验 (8) 4.1 仿真结果 (8) 4.2 调试中遇到的问题 (8) 第5章结论和体会 (9) 第6章参考文献 (10)

第1章前言 1.1 摘要 在数字电路技术的课程中,计数器的功能是记忆脉冲的个数,它是数字系统中应用最广泛的基本时序逻辑构件。计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。计数器:CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。 本十进制加法计数器是基于74161芯片而设计的,依靠传感器感应外界信号,传感器在感应范围内有物体时输出低电位,反之则是高电位。当传感器的感应范围内有物体移过时,传感器电位由高到低再到高,出现上跳沿。计数器会自动加一,并将在数码管上显示。本十进制加法计数器有两位七段数码管。可计数0~99个物体,并易于扩展。 该十进制加法计数器设计理念是用于工厂流水线上产品计数,自动计数,方便简单。 1.2 设计目的 1、综合运用相关课程中所学到的理论知识去独立完成某一设计课题; 2、学习用集成触发器构成计数器的方法; 3、进一步熟悉常用芯片和电子器件的类型及特性,并掌握合理选用器件的原则; 5、初步了解电路设计、仿真的过程和方法; 4、锻炼分析问题解决问题的能力; 1.3 设计内容及要求 1、具有2位10进制计数功能; 2、利用传感器,不接触计数; 3、每一个物体经过,计数器自动加1; 4、具有显示功能; 5、并用相关仿真软件对电路进行仿真。

电子计算器课程设计

目录 1 设计任务和性能指标 (1) 1.1 设计任务 (1) 1.2 性能指标 (1) 2 设计方案 (1) 2.1 需求分析 (1) 2.2 方案论证 (1) 3 系统硬件设计 (2) 3.1 总体框图设计 (2) 3.2 单片机选型 (2) 3.3 单片机附属电路设计 (3) 3.4 LCD液晶显示 (4) 4 系统软件设计 (5) 4.1 设计思路 (5) 4.2 总体流程图 (5) 4.3 子程序设计 (5) 4.4 总程序清单 (6) 5 仿真与调试 (6) 5.1 调试步骤 (6) 5.2 仿真结果及性能分析 (8) 6 总结 (8) 参考文献 (8) 附录1 系统硬件电路图 (10) 附录2 程序清单 (11)

1 设计任务和性能指标 1.1 设计任务 电子计算器设计 1、能实现4位整数的加减法和2位整数的乘法; 2、结果通过5个LED数码管显示(4位整数加法会有进位)或通过液晶显示屏显示。 1.2 性能指标 1.用数字键盘输入4位整数,通过LED数码显示管或液晶显示屏显示。 2.完成四位数的加减法应算。当四位数想加时产生的进位时,显示进位。 3.显示2位,并进行2位整数的乘法。 4.设计4*4矩阵键盘输入线的连接。 2 设计方案 2.1 需求分析 我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。所以,我们想到可不可以用自己所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。 2.2 方案论证 使用单片机为ATMEL公司生产AT89C51,AT89C51提供以下标准功能:4K字节FLASH 闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个向量两级中断结构,一个全双工串行通讯口,内置一个精密比较器,片内振荡器及时钟电路,同时AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的工作模式,空闲方式停止CPU 的工作,但允许RAM,定时计数器,串行通信及中断系统继续工作。 显示用LCD液晶显示屏,减少线路连接。 用C言编写程序,易进行调试修改。 采用4*4矩阵键盘作为输入。

数电课程设计报告

数电课程设计报告 第一章设计背景与要求 设计要求 第二章系统概述 设计思想与方案选择 各功能块的组成 工作原理 第三章单元电路设计与分析 各单元电路的选择 设计及工作原理分析 第四章电路的组构与调试 遇到的主要问题 现象记录及原因分析 解决措施及效果 功能的测试方法,步骤,记录的数据 第五章结束语 对设计题目的结论性意见及进一步改进的意向说明总结设计的收获与体会 附图(电路总图及各个模块详图) 参考文献 第一章设计背景与要求 一.设计背景与要求

在公共场所,例如车站、码头,准确的时间显得特别重要,否则很有可能给外出办事即旅行袋来麻烦。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确度和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。数字钟是一种典型的数字电路,包括了组合逻辑电路和时序电路。 设计一个简易数字钟,具有整点报时和校时功能。 (1)以四位LED数码管显示时、分,时为二十四进制。 (2)时、分显示数字之间以小数点间隔,小数点以1Hz频率、50%占空比的亮、灭规律表示秒计时。 (3)整点报时采用蜂鸣器实现。每当整点前控制蜂鸣器以低频鸣响4次,响1s、停1s,直到整点前一秒以高频响1s,整点时结束。 (4)才用两个按键分别控制“校时”或“校分”。按下校时键时,是显示值以0~23循环变化;按下“校分”键时,分显示值以0~59循环变化,但时显示值不能变化。 二.设计要求 电子技术是一门实践性很强的课程,加强工程训练,特别是技能的培养,对于培养学生的素质和能力具有十分重要的作用。在电子信息类本科教学中,课程设计是一个重要的实践环节,它包括选择课题、电子电路设计、组装、调试和编写总结报告等实践内容。通过本次简易数字钟的设计,初步掌握电子线路的设计、组装及调试方法。即根据设计要求,查阅文献资料,收集、分析类似电路的性能,并通过组装调试等实践活动,使电路达到性能要求。 第二章系统概述 设计思想与方案选择 方案一,利用数字电路中学习的六十进制和二十四进制计数器和三八译码器来实现数字中的时间显示。 方案二,利用AT89S51单片机和74HC573八位锁存器以及利用C语言对AT89S51进行编程来实现数字钟的时间显示。 由于方案一通过数电的学习我们都比较熟悉,而方案二比较复杂,涉及到比较多我们没学过的内容,所以选择方案一来实施。 简易数字钟电路主体部分是三个计数器,秒、分计数器采用六十进制计 数器,而时计数器采用二十四进制计数器,其中分、时计数器的计数脉 冲由

相关文档
最新文档