八位DA转换器设计(DOC)

八位DA转换器设计(DOC)
八位DA转换器设计(DOC)

大数据结构课程设计——进制转换

数据结构课程设计 设计说明书 进制转换的实现 学生JUGG 学号¥#·· 班级Dota all star——成绩优秀 指导教师Puck dota科学与技术 天灾元年 3 月 14 日

Dota all star

课程设计任务书 天灾元年—近卫戊年第二学期 专业:ganker 学号:sadofaiofo : 课程设计名称:数据结构课程设计 设计题目:进制转换的实现 完成期限:自天灾元年年 3 月 1 日至近卫戊年年 3 月14 日共 2 周 设计依据、要求及主要容(可另加附页): 进制数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进 制,二进制、八进制和十六进制。十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D, E,F组成(它们分别表示十进制数0~15),十六进制数运算规律是逢十六进一,例如:十六进制数4AC8 可写成(4AC8)16,或写成4AC8H。 要求: (1)输入一个十进制数N,将它转换成R进制数输出,并可以进行逆转换。 (2)输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。 (3)为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考 16进制(比如,10用A表示,等等)。 (4)界面友好。 指导教师(签字):教研室主任(签字): 批准日期:年月日 摘要

由于数制计算和不同数制之间转换的需要,设计了一个10进制转换其它进制(36进制以)及逆转换的软件,该软件具有简单的将10进制数转换成2、8、16进制数以及较复杂的高进制数的转换和逆转功能。本软件采用C语言编写以VC++作为软件开发环境,采用顺序栈存储方式来存储运算中的数位,借助栈后进先出的特点,易于结果输出。操作简单,界面清晰,易于为用户所接受。 关键词:进制转换;顺序栈;逆转换

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

二进制转换成BCD码 实验报告

一、实验目的 (1)进一步熟练掌握8086汇编语言编译调试工具和环境的操作; (2)掌握完整8086汇编的程序设计编写方法; (3)掌握简单的数值码制转换方法; (4)掌握键盘输出的DOS功能调用方法。 二、实验要求: 将AX中的一个二进制数(对应的十进制数范围是0-65535),转换成压缩性BCD 码表示的十进制,并从屏幕输出转换结果。要求用减法实现,并比较与除法方法进行运行速度比较。 三、实验及报告要求: 3.1、简要说明算法,并画出正确的程序流程图; 3.2、给出完整正确的源程序代码,要求给每一句伪指令或指令加上注释; 3.3、分别在DOS和Windows下编译、连接源程序生成可执行文件并调试,比较两个环境下生成的机器码的长度、寄存器内容、计算结果的异同。 3.4、如何观察转换过程中标志寄存器中各标志位的结果?如何观察转换结果的变化?试改变被转换数值,对结果与编制为的变化加以说明和解释。 3.5、写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。 3.6、实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法和微机原理学习方法作出总结。 四、程序流程图 减法。即五位数先循环减10000,直到不够减了,做减法的次数就是万分位的结果;将不够减之前一次的余数恢复,再循环减去1000,直到不够减了,做减法的次数就是千分位的结果;以此类推,最后恢复的正余数就是个位的结果. 除法。即五位数先除以10000,得到的商存放万位数的变量上;再将余数除以1000,得到的商存放千位数的变量上;之后将余数除以100,得到的商存放百分位的变量上;以此类推,最后的余数存放在个位的变量上。

AD和DA转换器的分类及其主要技术指标

1. AD转换器的分类 下面简要介绍常用的几种类型的基本原理及特点:积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。 1)积分型(如TLC7135) 积分型AD工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率, 但缺点是由于转换精度依赖于积分时间,因此转换速率极低。初期的单片AD转换器大多采用积分型,现在逐次比较型已逐步成为主流。 2)逐次比较型(如TLC0831) 逐次比较型AD由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB开始,顺序地对每一位将输入电压与内臵DA转换器输出进行比较,经n次比较而输出数字值。其电路规模属于中等。其优点是速度较高、功耗低,在低分辩率(<12位)时价格便宜,但高精度(>12位)时价格很高。 3)并行比较型/串并行比较型(如TLC5510) 并行比较型AD采用多个比较器,仅作一次比较而实行转换,又称FLash(快速)型。由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也极大,价格也高,只适用于视频AD转换器等速度特别高的领域。 串并行比较型AD结构上介于并行型和逐次比较型之间,最典型

的是由2个n/2位的并行型AD转换器配合DA转换器组成,用两次比较实行转换,所以称为Half flash(半快速)型。还有分成三步或多步实现AD转换的叫做分级(Multistep/Subrangling)型AD,而从转换时序角度又可称为流水线(Pipelined)型AD,现代的分级型AD中还加入了对多次转换结果作数字运算而修正特性等功能。这类AD速度比逐次比较型高,电路规模比并行型小。 4)Σ-Δ(Sigma/FONT>delta)调制型(如AD7705) Σ-Δ型AD由积分器、比较器、1位DA转换器和数字滤波器等组成。原理上近似于积分型,将输入电压转换成时间(脉冲宽度)信号,用数字滤波器处理后得到数字值。电路的数字部分基本上容易单片化,因此容易做到高分辨率。主要用于音频和测量。 5)电容阵列逐次比较型 电容阵列逐次比较型AD在内臵DA转换器中采用电容矩阵方式,也可称为电荷再分配型。一般的电阻阵列DA转换器中多数电阻的值必须一致,在单芯片上生成高精度的电阻并不容易。如果用电容阵列取代电阻阵列,可以用低廉成本制成高精度单片AD转换器。最近的逐次比较型AD转换器大多为电容阵列式的。 6)压频变换型(如AD650) 压频变换型(Voltage-Frequency Converter)是通过间接转换方式实现模数转换的。其原理是首先将输入的模拟信号转换成频率,然后用计数器将频率转换成数字量。从理论上讲这种AD 的分辨率几乎可以无限增加,只要采样的时间能够满足输出频率分辨率要求的累积

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

数制转换数据结构课程设计报告

《数据结构》 课程设计报告书 题目:数制转换 系别:计算机科学与应用系学号: 学生姓名: 指导教师: 完成日期:2013—6—1

数制转换 1.需求分析 任意给定一个M进制的数x ,实现如下要求 1)求出此数x的10进制值(用MD表示) 2)实现对x向任意的一个非M进制的数的转换。 3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。 2.概要设计 程序流程可以用以下流程图来刻画: A用数组实现 B用栈实现 3.详细设计 A.用数组实现该问题 D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其他进制的函数,它是将输入的十进制数x首先对需要转换的进制M取余,然后在对其取整,接着通过递归调用D2M()函数一次将得到的整数部分一次先取余后取整,并将所得的余数依次存入下一数组,然后逆向去除数组中的元素,即得到转换后的结果。而M2D()函数是实现其他进制M转换为十进制,并将其转换为非M进制。M进制转十进制则是从该M 进制数的

最后一位开始运算,依次列为第0、1、2、……..N位并分别乘以M的0、1、2、…..N次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。 B.用栈实现 栈具有后进先出的性质,具体实现方法和数组的方法有很大联系,不再过多解释。 4.调试分析 (1)构造栈的方法通过查阅书籍知道了。 (2)数组的递归调用查阅相关书籍了解了。 (3)为了让界面表达更清晰,多次调试完善了界面。 5.测试结果 下面是我的测试函数及运行结果: A.数组测试结果

第九章 AD转换器和DA转换器试题及答案

第九章 A/D 转换器和D/A 转换器 一、填空题 1.(11-1易)D/A 转换器是把输入的________转换成与之成比例的_________。 2.(11-1中)倒T 形电阻网络D/A 转换器由___________、__________、_________及 _____________组成。 3.(11-1易)最小输出电压和最大输出电压之比叫做__________,它取决于D/A 转换器的 ________。 4.(11-1中)精度指输出模拟电压的_________和_________之差,即最大静态误差。主要 是参考电压偏离__________、运算放大器____________、模拟开关的 ________、电阻值误差等引起的。 5.(11-1易)D/A 转换器输出方式有____________、__________和__________。 6.(11-2易)采样是将时间上___________(a.连续变化,b.断续变化)的模拟量,转换成 时间上_________(a.连续变化,b.断续变化)的模拟量。 7.(11-2) 参考答案: 1.数字量/数字信号,模拟量/模拟信号 2.译码网络,模拟开关,求和放大器,基准电源 1. 分辨率 位数 2. 实际值 理论值 标准值 零点漂移 压降 3. 单极性同相输出 单极性反相输出 双极性输出 4. a b 二、选择题 1.(11-2中)将采样所得的离散信号经低通滤波器恢复成输入的原始信号,要求采样频率 s f 和输入信号频谱中的最高信号max i f 的关系是( )。 A .max 2s i f f ≥ B .max s i f f ≥ C .max s i f f = D . max s i f f < 2.(11-2易)下列不属于直接型A/D 转换器的是( )。 A .并行A/D 转换器 B .双积分A/D 转换器 C .计数器A/ D 转换器 D .逐 次逼近型A/D 转换器 三、判断题(正确打√,错误的打×) 1.(11-2易)采样是将时间上断续变化的模拟量,转换成时间上连续变化的模拟量。 ( ) 2.(11-2中)在两次采样之间,应将采样的模拟信号暂存起来,并把该模拟信号保持到下 一个采样脉冲到来之前。 ( )

进制转换编程报告

进制转换编程报告 一.引言: 进制转换是人们利用符号来计数的方法,包含很多种数字转换。进制转换由一组数码符号和两个基本因素(“基”与“权”)构成。 二.方法原理介绍: 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 十进制整数转二进制 如:255=(11111111)B 255/2=127=====余1 127/2=63======余1 63/2=31=======余1 31/2=15=======余1 15/2=7========余1 7/2=3=========余1 3/2=1=========余1 1/2=0=========余1 789=1100010101 789/2=394.5 =1 第10位 394/2=197 =0 第9位 197/2=98.5 =1 第8位 98/2=49 =0 第7位 49/2=24.5 =1 第6位 24/2=12 =0 第5位 12/2=6 =0 第4位 6/2=3 =0 第3位 3/2=1.5 =1 第2位 1/2=0.5 =1 第1位 原理: 众所周知,二进制的基数为2,我们十进制化二进制时所除的2就是它的基数。谈到他的原理,就不得不说说关于位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为“位权” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

进制转换程序设计

课程设计 题目不同数制的数据相互转换程序的 设计 学院计算机科学与技术 专业计算机科学与技术 班级计算机0605班 姓名余欢欢 指导教师刘传文 2009 年 1 月15 日 附件2:

课程设计任务书 学生姓名:余欢欢专业班级:计算机0605班 指导教师:刘传文工作单位:计算机科学与技术学院 题目: 初始条件: 理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。 实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)输入二进制,十六进制,十进制的无符号数,将它们转换成不同进制的形式,并且输出出来。 (2)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。 (4)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该 程序进一步改进扩展的设想)。 时间安排: 设计时间一周:周1:查阅相关资料。 周2:系统分析,设计。 周3~4:编程并上机调试。 周5:撰写课程设计报告。 设计验收安排:20周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:20周的星期五下午5:00之前。 指导教师签名: 2009年1月9日 系主任(或责任教师)签名: 2009年1月 9日

简易计算器课程设计报告

《C++程序设计》(MFC)课程设计报告 设计题目:简易计算器 班级: 姓名: 学号: 指导教师: 时间:2010年6月30日

目录 1.设计目标…………………………………………………………… 2.设计内容…………………………………………………………… 3.设计思想…………………………………………………………… 4.设计说明…………………………………………………………… 5.设计步骤…………………………………………………………… 6.主要成员函数关系图……………………………………………… 7.程序主要代码……………………………………………………… 8. 难点分析…………………………………………………………… 9. 总结…………………………………………………………………

简易计算器(MFC) 1.设计目标 了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。 2.设计内容 以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。 3. 设计思想 基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。生成简单的应用软件。 4.设计说明 (1)包含的功能有:加、减、乘、除运算,开方、平方等功能。 (2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。 (3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (4)计算功能基本上是用系统内部函数。 (5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (6)“CE”按钮可以清除所有已输入的数据从头计算 5. 设计步骤 (1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。在弹出界面选择创建对话框,单击Finish按钮 (2)在生成的设计界面中加入控件,得到计算器应用界面。如图:

数据结构 设计进制转换计算器

天津职业技术师范大学Tianjin University of Technology and Education 《面向对象程序设计》 课程设计报告 设计进制转换计算器 学院:信息技术工程学院 专业:计算机科学与技术 班级学号:14 学生姓名:** 指导教师:***

2012年12月 一.课程设计名称:采用面向对象的程序设计方法设计实现二进制、八进制、十进制、十六进制之间的进制转换计算器。 二.实用工具软件:Microsoft Visual C++ 三.课程设计内容简介: #include #include #include//字符串头文件 #include class GY//各进制转换为十进制 { public: GY() {} int ten()//十转二 { int ss,aa; cout<<"请输入一个十进制数"<>ss; aa=ss; int tw[10],i(0),j(0); while(ss) { tw[i]=ss%2; ss/=2; i++; } cout<<"转换为8进制为\n"<=0;j--) //输出二进制结果 cout<

java课程设计报告_简单图形界面计算器的设计

Java 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

C51单片机课设报告(进制转换)

单片机原理课程设计报告题目:51单片机实现进制转换 专业:信息工程 班级:信息101 学号:1004020307 小组成员: 1004020103 指导教师:吴叶兰 北京工商大学计算机与信息工程学院

题目:51单片机实现进制转换 1、设计目的 1)熟悉51单片机的编程; 2)熟悉单片机开发的基本焊接; 3)熟悉单片机元件的使用方法; 4)熟悉C51的软件开发环境(编程软件Keil、烧录软件STC_ISP_v479) 2、设计要求 1)按键输入数据,具有确定和清零功能; 2)1602液晶屏幕显示,具有显示输入输出和提示功能; 3)2,、8、10、16进制数可任意互相转化; 3、硬件电路设计(包括电路图及说明) 1)控制模块: 控制模块是由1块STC89C52、1个12MHz无源晶振、1个复位电路22uF电容、1个1k欧姆电阻、1个8位1k欧姆排阻组成。 STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。芯片实际选用的STC89C52与 protues模拟电路图中的AT89C52功能基本相同,区别在于烧录程序的方式。 2)显示模块: 显示模块由1块1602液晶显示屏、16根数据线组成。 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。液晶显示屏际实际选用的是QC1602A与 protues模拟电路图中的LM016功能基本相同。

设计一个简单计算器的C语言课程设计报告

C语言课程设计报告题目:设计一个简单计算器 目录 1. 设计目的 2. 内容

3. 总体设计(有流程图) 4. 源程序编写(附上了运行图) 5. 执行结果 6. 心得体会 一、设计目的 设计一个简单计算器,在功能上功能尽量模拟windows 操作系统中的计算器,系统界面不做强制要求。 全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,为以后在专业

课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。 二、内容 1、程序设计的一般步骤 a、确定数据结构 b、确定算法 C、编程 d、调试 e、总结资料 2、基本要求 a .设计正确,方案合理,能实现相应功能。 b .界面友好,使用方便。 c .程序精炼,结构清晰。 d .设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。 e .上机演示。

三、总体设计(程序设计组成框图、流程图)

四、源程序编与 #in clude #in clude #in clude double jisua n( char a[]) { int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo[50],zha n2[50]; double x,n, l,z=0,zha n3[20]; typedef struct { double d1; int d2; }dd; typedef struct {

数据结构课程设计报告-进制转换

课程设计报告 设计题目:进制转换问题 学生姓名: 专业:信息安全 班级:信息安全10-02 学号: 指导教师: 完成日期:2011年12月 课程设计报告的内容及要求 一、问题描述: 任意给定一个M进制的数x ,请实现如下要求: 1、求出此数x的10进制值(用MD表示) 2、实现对x向任意的一个非M进制的数的转换 3、至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)软件环境:Vc6.0编程软件 二、实验环境 运行平台:Win32 硬件:普通个人pc机 软件环境:VC++6.0编程软件 三、解决办法: 1、用数组实现该问题: ten_else()函数是实现十进制转换为其它进制的函数,先设置一个while循环,当十进制数g等于零时停止,再将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。将其他进制M转换为十进制,并将其转换为非M进制数是在主函数中实现的。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M 的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用ten_else()函数将其转换为非M进制的数。实际上十进制起到了一个桥梁作用。 2、用栈实现该问题: 与数组方法核心思想相同,stack定义栈,初始化一个空栈,然后判断是否为空,接着是去栈顶元素(用z表示栈顶元素),数据入栈,出栈的操作。栈具有后进先出的性质,故其用s.pop()取数较数组的逆向取数较为方便,体现了栈的优越性。

四、设计和编码的回顾讨论和分析 (1)函数ten_else()的作用体现在将任意10进制数转换为非10进制数,程序能实现1~16进制的相互转换。在10进制以上的数需要用字母表示,由此设计了switch函数,当出现余数大与10的情况可以调用相应的字母。考虑到最终结果是所求余数的倒序,添加新的整型变量j,通过一个for循环实现倒序。 (2)编程初期设计了else_ten函数,后几经修改将其融入main函数中较为直观。 (3)当输入10进制以下的数向10进制转换时候较为简单,程序中设计char型数组s[maxnum]来统计所输入数据的位数,不需要用户输入。在求10进制的时候通过for循环求一个累和即可。 (4)当输入10进制以上的数设计字母较为复杂,通过对ASCⅡ表的理解设计程序。 (5)在用栈法实现非10进制向10进制转换的时候遇到了些麻烦,当输入8A的时候程序将8当成字符类型,将其编译为数字56,导致最终转换结果出现错误。于是通过查阅ASCⅡ表对程序做出了修正,设计了条件语句if(z<=57)z-=48;if(z>=65){z-=65;z+=10;} 五、程序框图 六、经验和体会 (1)我们在写程序的时候要多角度考虑问题,比如题目中要求栈法与数组方法同时去实现进制转换问题。在编译过程中我们可以将特殊的问题逐渐的化为一般问题,比如10进制转换到16进制是,我举的例子是200转换为C8。 (2)通过此次课程设计的考验,让我们回顾了算法与数据结构这门课的主要内容。掌握了如何分别用数组和栈来实现数据存储与转换,加深了对栈的掌握和操作,以及栈先进后出的特点。 (3)在程序的调试初期,我们遇到了许多问题,暴露了对编译软件不熟悉的弊端,如设置断

AD和DA转换器的仿真

通信原理课程设计报告 级电子信息工程专业 姓名: 班级: 学号:

一、设计题目:A/D和D/A转换器的仿真 二、设计目的 1.学习通过计算机建立通信系统仿真模型的基本技能,学会利 用仿真的手段对实时通信系统的基本理论,基本进行验证。 2.学习现在流行的通信系统仿真软件的使用方法(如 Matlab/Simulink,System View),使用这些软件解决实际系统 中的问题。 三、设计要求 1.根据所选的题目建立相应的数学模型。 2.在Matlab/Simulink仿真环境下,从各种功能库中选取、拖动 可视化图符组建系统,在Simulink的基本模块库中选取满足 需要的功能模块,将其图符拖到设计窗口,按设计的系统框 图组建系统。 3.设置,调整参数,实现系统模拟。 4.设置观察窗口、分析数据和波形。 四、开发环境及其介绍 1.开发环境:Matlab/Simulink 2.软件介绍: (1)Simulink是MATLAB提供的用于对动态系统进行建模和仿真和分析的工具。Simulink提供了专门用于显示输出信号的模块,可以在过程中随时观察仿真的结果。

(2)通过Simulink的存储模块,仿真数据可以方便地以各种形式保存到工作空间或文件中,以供用户在仿真结束之后对数据进行分析和处理。 (3)Simulink把具有特定功能的代码组织成模块的方式,并 且这些模块可以组织成具有等级结构的子系统,因此具有内在 的模块化设计要求。 基于以上优点,Simulink作为一种通用的的仿真建模软件工具,广泛用于通信仿真、数字信号处理、模糊逻辑、神经网络、机械控制、和虚拟现实等领域中。 作为一款专业仿真软件,Simulink具有以下特点: ●基于矩阵的数值计算; ●高级编程语言以及可视化的图形操作界面; ●包含各个领域的仿真工具,使用方便快捷并可以扩展; ●丰富的数据I/O接口; ●提供与其他高级语言的接口; ●支持多平台(PC/UNIX)。 五、设计内容 1设计原理 A/D转换器负责将模拟信号转换为数字信号,其转换过程为:首先对输入模拟信号进行采样,所使用的的采样速率要满足采样定理要求,然后对采样结果进行幅度离散化并编码为符号串。

11.6DA转换器的主要技术指标(精)

11.6 D/A转换器的主要技术指标 D/A转换器的主要技术指标包括:转换精度、转换速度和温度特性等。 11.6.1 转换精度 D/A转换器的转换精度通常用分辨率和转换误差来描述。 分辨率用于表征D/A转换器对输入微小量变化的敏感程度。其定义为D/A转换器模拟量输出电压可能被分离的等级数。输入数字量位数愈多,输出电压可分离的等级愈多,即分辨率愈高。所以在实际应用中,往往用输入数字量的位数表示D/A转换器的分辨率。此外,D/A 转换器也可以用能分辨最小输出电压与最大输出电压之比给出。n位D/A转换器的分辨率可表示为1/(2n-1)。它表示D/A转换器在理论上可以达到的精度。D/A转换器的转换精度通常用分辨率和转换误差来描述。 由于D/A转换器中各元件参数存在误差,基准电压不够稳定和运算放大器的零漂等各种因素的影响,使得D/A转换器实际精度还与一些转换误差有关,如比例系数误差、失调误差和非线性误差等。 比例系数误差是指实际转换特性曲线的斜率与理想特性曲线斜率的偏差。如在n位倒T型电阻网络D/A转换器中,当V REF偏离标准值△V REF时,就会在输出端产生误差电压△v O。由式 可知 △V REF引起的误差属于比例系数误差。3位D/A转换器的比例系数误差如图11.6.1所示。 图11.6.1 3位D/A转换器的比例系数误差

图11.6.2 3位D/A转换器的失调误差 失调误差由运算放大器的零点漂移引起,其大小与输入数字量无关,该误差使输出电压的偏移特性曲线发生平移,3位D/A转换器的失调误差如图11.6.2所示。 非线性误差是一种没有一定变化规律的误差,一般用在满刻度范围内,偏离理想的转移特性的最大值来表示。引起非线性误差的原因较多,如电路中的各模拟开关不仅存在不同的导通电压和导通电阻,而且每个开关处于不同位置(接地或接V REF)时,其开关压降和电阻也不一定相等。又如,在电阻网络中,每个支路上电阻误差不相同,不同位置上的电阻的误差对输出电压的影响也不相同等,这些都会导致非线性误差。 综上所述,为获得高精度的D/A转换精度,不仅应选择位数较多的高分辨率的D/A转换器,而且还需要选用高稳定的V REF和低零漂的运算放大器才能达到要求。 11.6.2 转换速度 当D/A转换器输入的数字量发生变化时,输出的模拟量并不能立即达到所对应的量值,它需要一段时间。通常用建立时间和转换速率两个参数来描述D/A转换器的转换速度。 建立时间(t set)指输入数字量变化时,输出电压变化到相应稳定电压值所需要时间。一般用D/A转换器输入的数字量N B从全0变为全1时,输出电压达到规定的误差范围 (LSB/2)时所需时间表示。D/A转换器的建立时间较快,单片集成D/A转换器建立时间最短可达0.1μs以内。 转换速率(SR)用大信号工作状态下(输入信号由全1到全0或由全0到全1),模拟电压的变化率表示。一般集成D/A转换器在不包含外接参考电压源和运算放大器时,转换速率比较高。实际应用中,要实现快速D/A转换不仅要求D/A转换器有较高的转换速率,而且还应选用转换速率较高的集成运算放大器。

常用DA和AD转换器

常用D/A转换器和A/D转换器介绍 下面我们介绍一下其它常用D/A转换器和 A/D 转换器,便于同学们设计时使用。 1.DAC0808 图 1 所示为权电流型 D/A 转换器 DAC0808 的电路结构框图。用 DAC0808 这类器件构 成的 D/A转换器,需要外接运算放大器和产生基准电流用的电阻。DAC0808 构成的典型应 用电路如图2 所示。 图1 DAC0808 的电路结构 图2 DAC0808 的典型应用 2.DAC0832 DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。 它由倒T型R-2R 电阻网络、模拟开关、运算放大器和参考电压 V REF 四大部分组成。DAC0832的逻辑框图和 引脚排列如图 3 所示。

(a )逻辑图 (b )引脚图 图3 DAC0832 的逻辑框图和引脚排列 DAC0832 的分辨率为 8 位;电流输出,稳定时间为 1m s ;可双缓冲输入、单缓冲输入 或直接数字输入;单一电源供电(+5~+15V )。 3.ICL7106 ICL7106 是双积分型 CMOS 工艺 4 位 BCD 码输出 A/D 转换器,它包含双积分 A/D 转 换电路、基准电压发生器、时钟脉冲产生电路、自动极性变换、调零电路、七段译码器、 LCD 驱动器及控制电路等。电路采用 9V 单电源供电,CMOS 差动输入,可直接驱动位液 晶显示器(LCD ) 。ICL7106 组成直流电压测量电路如图 4 所示。 图4 ICL7106 组成直流电压测量电路 电路中 V +对 V -之间接 9V 直流电压,通过内部基准电压发生器在 V +到 COM 之间产生 2.8V 基准电压,经分压电阻加在 REF +、REF -基准电压输入端。当输入量程为 200mV 时, 基准电压调至 100mV ;当输入量程为 2V 时,基准电压为 1V 。OSC 1~OSC 3 是时钟振荡电 路引出端, 外接定时电阻、 电容产生内部时钟。 IN +、 IN -是差动输入端, 将 IN -与模拟地 COM 相连,IN +对 COM 之间为模拟电压输入。U 接个位驱动、T 接十位驱动、 H 接百位驱动、 abK 是千位驱动、P0 为“-”号驱动、BP 接液晶背板。AZ 、BUFF 和 INT 分别接调零电容、积分 电阻和积分电容,通过调整它们及基准电压,可将输入量程调至 2V (本电路为 200mV ) 。

相关文档
最新文档