当前位置:文档之家› DAC0832波形图C语言程序

DAC0832波形图C语言程序

DAC0832波形图C语言程序
DAC0832波形图C语言程序

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

C语言程序设计习题答案(1-5章)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

DAC0832的波形发生器(汇编)

ORG 0000H KB:MOV P1,#0FFH;置P0口为输入方式MOV A,P1;读键值 CPL A ANL A,#1FH;屏蔽高三位 JZ KB;无键闭合继续检测 ACALL DL Y_10MS;延时10ms,去抖动MOV A,P1;再次检测有无键闭合 CPL A ANL A,#1FH JZ KB CJNE A,#01H,KB01 LCALL FANGBO;调用方波子程序SJMP KB KB01:CJNE A,#02H,KB02 LCALL JVCHI;调用锯齿波子程序SJMP KB KB02:CJNE A,#04H,KB03 LCALL TIXING;调用梯形波子程序SJMP KB KB03:CJNE A,#08H,KB04 LCALL SANJIAO;调用三角波子程序SJMP KB KB04:CJNE A,#10H,KB LCALL ZHENGXIAN;调用正弦波子程序SJMP KB ;方波子程序////////////// FANGBO: MOV DPTR,#0FFFEH LP1: MOV A,0 MOVX @DPTR,A LCALL DELAY1 MOV A,#0FFH MOVX @DPTR,A LCALL DELAY1 AJMP LP1 ;锯齿波子程序///////////// JVCHI: MOV DPTR,#0FFFEH MOV A,#0FFH WW:MOVX @DPTR,A DEC A NOP

NOP NOP AJMP WW ;梯形波子程序 TIXING: MOV DPTR,#0FFFEH MOV R2,#07DH MOV R4,#0AFH MOV A,#00H D1:MOVX @DPTR,A LCALL DELAY2 ADD A,R2 DJNZ R4,D1 AJMP D1 ;三角波子程序/////////////// SANJIAO: MOV DPTR,#0FFFEH MOV R6,#10H MOV A,#00H LOOP1: MOVX @DPTR,A ADD A,R6 CJNE A,#0FFH,LOOP1 LOOP2: MOVX @DPTR,A SUBB A,R6 CJNE A,#07H,LOOP2 AJMP LOOP1 ;正弦波子程序///////////////// ZHENGXIAN: MOV R1,#00H QZ:MOV A,R1 MOV DPTR,#SETTAB MOVC A,@A+DPTR MOV DPTR,#0FFFEH MOVX @DPTR,A INC R1 AJMP QZ ;延时程序2 DELAY2:MOV 31H,#02H PW:DJNZ 31H,PW RET ;延时子程序1 DELAY1: MOV 30H,#0FFH

广工C语言编程题目

C语言编程题目 1.025 编写一个C程序,用函数printf(char *s)输出 以下3行信息: ******************** * Very Good! * ******************** 注意: (1)要求精确到每个字符、空格、字母及其大小写。 (2)可多次调用printf(char *s),每次仅一个字符串参数。 **********/ void print1() { printf("********************\n"); } void print2() { printf("* Very Good! *\n"); } void main() { print1(); print2(); print1(); } 1.055 编写一个程序,输入a、b、c三个值,输出其中最大值。 要求不改变下列给定的程序框架内容,填入合适语句,使其成 为满足题目要求的正确程序。 **********/ int max_a(int a,int b,int c) {int max=a; if(maxb?a:b; //max=max>c?max:c; //max=a; //if(max

C语言实用程序设计100例流程图

C语言实用程序100例 第一篇基础与提高 实例1利用库函数编写基本显示程序 实例2变量属性 实例3运算符与类型 实例4关于程序结构 实例5显示函数曲线图 实例6二分法选代的应用 实例7多变的立方体 实例8一维整型数组应用(1) 实例9一维整型数组应用(2) 实例10一维整型数组应用(3) 实例11一维整型数组应用(4) 实例12二维数组应用(1)——显示杨辉三角实例13二维数组应用(2)——魔方阵 实例14字符数组应用(1)——逻辑判断 实例15字符数组应用(2)——数据模拟 实例16二维数组应用——字符比较 实例17利用指针进行数据处理 实例18指针与字符串 实例19利用指针处理二维数组 实例20一级指针 实例21利用指针传递参数值 实例22结构体的应用 实例23链表的应用(1)

实例24链表的应用(2) 实例25链表的应用(3) 实例26共用体的应用 实例27枚举类型应用 实例28位运算 买例29义件加密 实例30文件的按记录随机读写 第二篇图形与多媒体 实例31改变文字背景色 实例32及本颜色设置 实例33制作表格 实例34制作多样的椭圆 实例35美丽的透视图形 实例36错位窗口 实例37能移动的矩形 实例38多变的填充矩形 实例39黄黑相间的矩形与圆 实例40六叶图案 实例41特殊图案 实例42国际象棋棋盘 实例43制作楼梯 实例44使用线类型函数设置多个汉字实例45彩色群点 实例46饼图 买例47产品折线图 实例48直方图 实例49变大变色的拒形与国

实例50多变的填充多边形 实例51流星球 实例52小球动态碰撞 买倒53多,曲线 实例54多变的圆与环 实例55优美的球体 实例56运动的小车 实例57统计动画消失次数 实例58运行的时钟 实例59直升飞机 实例60演绎“生命游戏” 实例61猜猜看 买例62艺术清屏 买倒63制作火焰 实例64动态绘制256条不同颜色的直线实例65红绿蓝三原色渐变 第三篇综合小程序 实例66两个矩阵相乘 实例67艺术钟 实例68家庭财务管理小程序 实例69用系统时间实现随机数 实例70闪动的多彩圆 实例71检查系统有无鼠标 实例72圆形光盘与矩形 实例73动态渐变图案 实例74往返两地间的小车 实例75飘扬的红旗

基于DAC0832芯片的简单信号发生器设计

东北石油大学课程设计 2012年3月 9 日

东北石油大学课程设计任务书 课程单片机原理及应用课程设计 题目基于DAC0832芯片的简单信号发生器设计 专业班级姓名学号 一、设计目的:训练学生综合运用己学课程的基本知识,独立进行单片机应用技术开发工作,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。 二、设计要求: 1. 应用MCS-51单片机设计基于DAC0832芯片的简单信号发生器; 2. 频率范围:0-1KHZ,输出电压:方波Up-p>3V,正弦波Up-p> 1V,波形特性:方波tr<100us,正弦波非线性失真系数r<5%; 3. 硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程; 4. 软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单; 5. 原理图设计根据所确定的设计电路,利用Protel等有关工具软件绘制电路原理图、PCB板图、提供元器件清单。 三、参考资料: [1] 单片微型计算机与接口技术,李群芳、黄建编著,电子工业出版社; [2] 单片机原理及应用,张毅刚编著,高等教育出版社; [3] 51系列单片机及C51程序设计,王建校,杨建国等编著,科学出版社; [4] 单片机原理及接口技术,李朝青编著,北京航空航天大学出版社; 完成期限2012.3.5—2012.3.9 指导教师 专业负责人 2012年 3 月2 日

目录 目录.......................................................................................................................... I 第1章概述.. (1) 第2章信号发生器的原理 (2) 2.1 AT89C51芯片的简单介绍 (2) 2.2 数模转换器DAC0832的简单介绍 (4) 2.3共阳数码管和运算放大器LM358 (6) 第3章硬件电路设计 (7) 3.1 单片机最小系统 (7) 3.2 电源电路的设计 (8) 3.3 D/A转换接口电路的设计 (8) 第4章程序设计 (9) 4.1 主程序设计 (9) 4.2 信号发生器源程序 (10) 第5章总结 (14) 参考文献 (15)

C语言程序设计框架.

说明:除了main(函数,其它函数和变量必须改名。 #include "stdio.h" #include "stdlib.h" #include "conio.h" void showmenu( { system("cls"; printf("********************************************************\n"; printf("* 欢迎进入C语言模块化案例系统 *\n"; printf("* *\n"; printf("* 制作人:XXXXXX *\n"; printf("* 日期:2011年5月23日--27日 *\n"; printf("********************************************************\n"; printf("\n"; printf("\t\t*************************\n"; printf("\t\t* C语言模块化案例系统 *\n"; printf("\t\t* 1. 选择结构 *\n"; printf("\t\t* 2. 循环结构 *\n"; printf("\t\t* 0. 退出系统 *\n"; printf("\t\t*************************\n"; printf("请选择相应模块的编号(0-2:"; } main( {

void showmenu(,select(,repeat(,submenu1(,submenu2(; void sel1(,sel2(,sel3(,sel4(,rep1(,rep2(,rep3(,rep4(; int choice; showmenu(; scanf("%d",&choice; while(choice!=0 { switch(choice { case 1: select(;break; case 2: repeat(;break; default:printf("输入数据有误!请重新输入。\n"; } showmenu(; scanf("%d",&choice; } printf("\n谢谢您使用本系统!\n"; } void select( { int ch1; submenu1(; scanf("%d",&ch1; while(ch1!=0 {

课程设计-基于DAC0832的波形发生器设计讲解

波形发生器设计 目录 摘要 (1) 第一章绪论 (2) 第二章DAC0832及其特性 (3) 2.1 D/A转换器与单片机接口探究 (3) 2.1.1 数据线连接 (3) 2.1.2 地址线连接 (3) 2.1.3 控制线连接 (3) 2.2 DAC0832的认识 (4) 2.2.1 DAC0832的结构 (4) 2.2.2 DAC0832的引脚 (4) 2.2.3 DAC0832的启动控制方式 (5) 第三章硬件设计 (7) 3.1 启动方式选择 (7) 3.2 框图设计 (7) 3.3 电路图设计 (7) 第四章程序设计 (9) 4.1 程序流程图 (9) 4.1.1 程序设计思路 (9) 4.1.2流程图 (9) 4.2 用C语言实现 (11) 4.3 用汇编语言实现 (14) 第五章Proteus仿真及结果 (17) 5.1方波: (17) 5.2正弦波: (17) 5.3三角波: (18) 5.4梯形波: (18) 5.5锯齿波: (19) 设计心得: (20) 参考文献: (21)

摘要 本设计使用AT89C51单片机做控制,选择8位D/A转换器DAC0832作D/A 转换。 硬件方面,首先51熟悉单片机的结构和工作原理,连接单片机的最小系统。之后熟悉D/A转换器工作方式,经过分析后选择DAC0832的单缓冲启动控制方式,完成电路框图。进一步根据设计要求完成通过独立按键控制D/A输出,作出电路框图和电路原理图。 软件方面:设计思路主要体现在两点上。一是控制,通过程序控制DAC转换与输出,按键消抖,选择相应的即将输出的波形。二是产生波形,根据波形的特点编写程序以产生相应波形的数字信号。 分别通过C语言和汇编语言实现简易的波形发生器,输出方波、正弦波、三角波、梯形波和锯齿波,通过独立按键控制分别输出不同的波形。以KILL 与Proteus为设计平台,仿真测试设计结果的正确性。 关键字: 51单片机,DAC0832,单缓冲启动控制方式,波形发生器,C语言设计,汇编语言设计

《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

C语言程序设计课程设计报告

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目:C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 掷骰子游戏 (5) 射击游戏 (7) 计算存款本息之和 (8) 肇事逃逸 (10) 礼炮 (12) 汽车加油 (14) 大优惠 (16) 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。 这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能; 2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式

③必须上机调试通过 二、方案实现与调试 掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。 4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述 本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。 程序流程图 图1 掷骰子游戏 调试过程及实验结果

51单片机与0832波形发生器锯齿波、三角波、正弦波

// 锯齿波 #include #include // 绝对地址访问头文件 #define DAC0832 XBYTE[0x7fff] //DAC0832的地址为0x7fff void delay() // 定时器定时1ms { TH1=0xfc; TL1=0x18; //定时器初值设定 TR1=1; //启动定时器 while(!TF1); //查询是否溢出 TF1=0; //将溢出标志位清零 } void main() {unsigned char i; TMOD=0x10; // 设置定时器工作方式 while(1) {for(i=0;i<=255;i++) //形成锯齿波,最大值为255 { DAC0832=i; // D/A转换输出 delay(); // 延时 } } } //三角波 #include #include // 绝对地址访问头文件 #define DAC0832 XBYTE[0x7fff] //DAC0832的地址为0x7fff void delay() // 定时器定时1ms { TH1=0xfc; TL1=0x18; //定时器初值设定 TR1=1; //启动定时器 while(!TF1); //查询是否溢出 TF1=0; //将溢出标志位清零 } void main() {unsigned char i; TMOD=0x10; // 设置定时器工作方式 while(1) {for(i=0;i<255;i++) //形成三角波,i增加到最大值为255 {

经典c编程架构

1. 顺序执行法: 这种方法,这应用程序比较简单,实时性,并行性要求不太高的情况下是不错的方法,程序设计简单,思路比较清晰。但是当应用程序比较复杂的时候,如果没有一个完整的流程图,恐怕别人很难看懂程序的运行状态,而且随着程序功能的增加,编写应用程序的工程师的大脑也开始混乱。即不利于升级维护,也不利于代码优化。本人写个几个比较复杂一点的应用程序,刚开始就是使用此法,最终虽然能够实现功能,但是自己的思维一直处于混乱状态。导致程序一直不能让自己满意。 这种方法大多数人都会采用,而且我们接受的教育也基本都是使用此法。对于我们这些基本没有学习过数据结构,程序架构的单片机工程师来说,无疑很难在应用程序的设计上有一个很大的提高,也导致了不同工程师编写的应用程序很难相互利于和学习。 本人建议,如果喜欢使用此法的网友,如果编写比较复杂的应用程序,一定要先理清头脑,设计好完整的流程图再编写程序,否则后果很严重。当然应该程序本身很简单,此法还是一个非常必须的选择。 下面就写一个顺序执行的程序模型,方面和下面两种方法对比: 代码: /******************************************************************** ****************** * FunctionName : main() * Description : 主函数 * EntryParameter : None * ReturnValue : None

********************************************************************* *****************/ int main(void) { uint8 keyValue; InitSys(); // 初始化 while (1) { TaskDisplayClock(); keyValue = TaskKeySan(); switch (keyValue) { case x: TaskDispStatus(); break; ... default: break; } } } 2. 时间片轮询法 时间片轮询法,在很多书籍中有提到,而且有很多时候都是与操作系统一起出现,也就是说很多时候是操作系统中使用了这一方法。不过我们这里要说的这个时间片轮询法并不是挂在操作系统下,而是在前后台程序中使用此法。也是本贴要详细说明和介绍的方法。

C语言程序设计(第二版)习题参考答案

C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题

dac0832函数信号发生器.

智能仪器课程设计 设计题目:函数信号发生器设计 学生姓名:赵鑫、罗承波、江再农 学院名称:机械工程学院 班级:测控技术与仪器062班 学号:200646000227、20064600222、20064600215 指导教师:袁锋伟、王玉林、蒋彦 2009年6月

设计任务: 设计一个函数信号发生器,具体指标如下: 1采用AT89S51及DAC0832设计函数信号发生器; 2输出函数信号为正弦波或三角波或阶梯波; 3输出信号频率为100Hz,幅度0-10V可调; 4必须具有信号输出及外接电源、公共地线接口

低频函数信号发生器的设计 摘要:信号发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。目前使用的信号发生器大部分是利用分立元件组成的体积大,可靠性差,准确度低。课程设计需要各个波形的基本输出,这些波形的实现的具体步骤:正弦波的实现是非常麻烦的。它的实现过程是通过定义一些数据,然后执行时直接输出定义的数据就可以了。而三角波,则每次累加1,当达到初值时,每次累减1,算出延时时间,也就达到要求了,阶梯波和三角波类似!该设计使用的是AT89S51单片机构成的发生器,可产生三角波、方波、正弦波等多种波形,波形的频率可用程序控制改变。在单片机上加外围器件独立式开关,通过开关控制波形的选择。在单片机的输出端口接DAC0832进行DA转换,再通过运放进行波形调整,最后输出波形接在示波器上显示。 关键词:信号发生器;单片机;波形调整

The design of low-frequency function signal-generator Abstract:Signal generator is a common signal source, widely used in electronic circuits, automatic control systems and experiments in areas such as teaching. Currently used by most of the signal generator is composed of discrete components use bulky, poor reliability, low accuracy. Curriculum design of the basic needs of all the output waveform, the waveform of the specific steps to achieve: the realization of sine wave is very troublesome. It is through the implementation of the definition of some data, and then direct the output when the definition of the implementation of the data on it. The triangle wave, then add 1 each time, when the initial value to reach every tired by 1, calculate the delay time, they meet the requirement, the ladder-wave and triangular wave similar! The design is composed of single-chip AT89S51 generator can produce the triangular wave, square wave, sine wave, etc.,

c语言程序设计流程图详解

c语言程序设计流程图详解 介绍常见的流程图符号及流程图的例子。 本章例1-1的算法的流程图如图1-2所示。本章例1-2的算法的流程图如图1-3所示。 在流程图中,判断框左边的流程线表示判断条件为真时的流程,右边的流程线表示条件为假时的流程,有时就在其左、右流程线的上方分别标注“真”、“假”或“T、”“F或”“Y、”“N”注“真”、“假”或“T、”“F或”“Y、”“N”

另外还规定,流程线是从下往上或从右向左时,必须带箭头,除此以外,都不画箭头,流程线的走向总是从上向下或从左向右。 2.算法的结构化描述 早期的非结构化语言中都有goto语句,它允许程序从一个地方直接跳转到另一个地方去。 执行这样做的好处是程序设计十分方便灵活,减少了人工复杂度,但其缺点也是十分突出的,一大堆跳转语句使得程序的流程十分复杂紊乱,难以看懂也难以验证程序的正确性,如果有错,排起错来更是十分困难。这种转来转去的流程图所表达的混乱与复杂,正是软件危机中程序人员处境的一个生动写照。而结构化程序设计,就是要把这团乱麻理清。 经过研究,人们发现,任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成,因此,我们构造一个算法的时候,也仅以这三种基本结构作为“建筑 单元”,遵守三种基本结构的规范,基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部去。正因为整个算法都是由三种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证,易于纠错,这种方法,就是结构化方法。遵循这种方法的程序设计,就是结构化程序设计。 相应地,只要规定好三种基本结构的流程图的画法,就可以画出任何算法的流程图。 (1)顺序结构 顺序结构是简单的线性结构,各框按顺序执行。其流程图的基本形态如图1-4所示,语句 的执行顺序为:A→B→C。 (2)选择(分支)结构 这种结构是对某个给定条件进行判断,条件为真或假时分别执行不同的框的内容。其基本形状有两种,如图1-5a)、b)所示。图1-5a)的执行序列为:当条件为真时执行A,否则执 行B;图1-5b)的执行序列为:当条件为真时执行A,否则什么也不做。 (3)循环结构 循环结构有两种基本形态:while型循环和do-while型循环。 a.while型循环 如图1-6所示。 其执行序列为:当条件为真时,反复执行A,一旦条件为假,跳出循环,执行循环紧后的语句。 b.do-while型循环 如图1-7所示。

课程设计——波形发生器

波形发生器设计 一.摘要 本文以AT89C51单片机为核心,采用C语言的编程方法,外加DAC0832数模转换模块与集成运放模块,构成了函数波形发生器。可产生方波、三角波、正弦波、锯齿波等多种波形,波形的频率可用程序改变,并可根据需要选择输出波形。其中运用软硬件结合的方法实现设计功能,具有线路简单、结构紧凑、性能优越等特点。 关键词:51单片机;DAC;函数波形发生器 二.设计要求 1.产生正弦波、方波、三角波; 2.幅度可以设定; 3.出频率能达到1MHZ。 4. 发挥部分(自选) 三.设计目的 1、巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决实际课题设计的能力。 2、培养针对课题需要,选择和查阅有关手册、图表及文献资料的能力,提高组成系统、编程、调试的动脑动手能力。 3、通过对课题设计方案的分析、选择、比较,熟悉运用单片机系统开发、软硬件设计的方法内容及步骤。 4,掌握各个接口芯片(如0832等)的功能特性及接口方法,并能运用其实现一个简单的单片机应用系统功能器件。

四.设计方案 波形发生器的实现方法通常有以下几种: 方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。 方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。。 方案三:采用AT89S52单片机和DAC0832芯片,直接连接键盘和显示。该种方案主要对AT89S52单片机的各个I/O口充分利用。P1口是连接键盘, P2口接显示电路,P0口连接DAC0832输出波形。这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的成本。也对按照系统便携式低频信号发生器的要求所完成。占用空间小,使用芯片少,低功耗。 综合考虑,方案三各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案三。 五.设计思路 1.基本功能 1.1.波形的产生 (1)正弦波:通过手动的方法计算出输出各点的电压值,然后

单片机制作简易正弦波信号发生器(DAC0832)

调试时,电源的质量需要较高,不然的话,波形不易观察看清楚。 //河北工程大学信电学院自动化系 //设计调试成功 ***************将DA输出的 0V ~ -5V范围扩展成 -5V ~ +5V范围,电路如下图:*************** 如若VO2输出更平滑一些,可以在VO2处接一个小电容,滤掉高频。 (一)过程分析计算如下: ?第一级运放出来的V o1=-N*V ref/256。当V ref为+5V时,V o1=0~ -5V。 其中,V ref为参考电压,N为8位数字量输出到DAC0832 ?并结合第二级运放,是否可以推出来如下式子: V o2=-(2*V o1+V ref)=-(2*-N*V ref/256+V ref) =-(-2N*V ref/256+V ref) =2N*V ref/256-V ref 当参考电压V ref=5V时,V o2=10N/256-5。 由于要求输出的是正弦波xsinθ,幅值x不定,下面考虑幅值x分别取5和1的情况: ●当输出波形为5 sinθ时:5 sinθ=V o2 =2N*V ref/256-V ref =10N/256-5 //此时V ref=+5V 得sinθ=2N/256-1

●当输出波形为sinθ时:sinθ=V o2 =2N*V ref/256-V ref =10N/256-5 //此时V ref=+5V 得sinθ=10N/256-5 最后可以考虑输出波形的频率问题。例如要求输出特定频率的正弦波。 (二)针对输出的不同幅值波形 ?当输出波形为5 sinθ时:得sinθ=2N/256-1 这里我们要求进步为一度。具体到进步大小,和内存RAM或者ROM有关,即和你存放数据表的空间有关。放到哪个空间都可以。(这里周期采样最多256个点,步数可以为1、2、5等,自己视情况而定,这里由于是360度,256个采样点,故步的大小360/256=1.4=△θ,由此算的前三个 θ=0,1.4,2.8……,对应N为0x80,0x83,0x86……) 通过sinθ的特征和计算部分数据发现规律: 0~90度与90~180度大小是对称的;181~270度与270~359度是对称的。 故,不是所有数据都是计算的。

单片机 c语言程序框架详解

/*单片机avr 流水灯源程序文件名:led.c */ #include void delay(uint time_c) //子函数,实现延时功能,void 表示此函数无返回值,delay 函数名,time_c 函数的参数-无符号的整形数值 { int i,j; //变量声明 while(time_c--) { for (j=0;j<1200;j++) {; }; //函数体内的语句以';'分号结尾,表示一条语句的结束,分号需要用英文标点输入 } } void main (void) //主函数 { //程序的初始化 DDRA=0xFF; //DDRA -PA口的方向寄存器,1为输出,0为输入,PA的8个I/O口全部设为输出。 PORTA=0xFF; //PORTA -PA口的输出控制寄存器,1为输出高电平,0为输出低电平,此处,PA口全部输出高电平。 while(1) // 死循环 { PORTA=0xFE; //PA口的第0位清0,点亮第一个灯 delay(500); // 延时 PORTA=0xFD; //点亮第二个灯 delay(500); PORTA=0xFB; //点亮第三个灯 delay(500); PORTA=0xF7; //点亮第四个灯 dealy(500); PORTA=0xEF; //点亮第五个灯 dealy(500); PORTA=0xDF; //点亮第六个灯 dealy(500);

PORTA=0xBF; //点亮第七个灯 delay(500); PORTA=0x7F; //点亮第八个灯 delay(500); } } /* 流水灯程序结束*/ ------------------------------------------------------------------------------------------------------------------------------- #include :#include c语言的文件包含指令,指的是在一个文件中包含另一个文件的全部内容,在这个源文件led.c中包含了头文件’iom16v.h'的全部内容,(c语言中源文件的扩展名'.c',头文件的扩展名为'.h'),此处iom16v.h 头文件定义了单片机ATmega16的内部寄存器参数,使用不同的单片机要用不同的头文件,例如:使用ATmega32 ,头文件需改为'iom32v.h' 。 中“<>"表示在系统默认的目录中搜索文件,若为"iom16v.h" 双引号表示在项目源文件所在的目录搜索文件。 void delay(unit time_c) { } ;为自定义的子函数,实现某一特定功能的函数,c语言函数的内容都放在{}中;delay(500)为子函数调用,实现延时功能,500为函数的实参,time_c 称为形式参数,单片机的运行速度非常快,如果不加延时,所有的灯看起来都是亮的,人眼无法分辨,可以增加,或减少延时的时间看看结果的变化。 void main(void) { .............. while(1) { .........}; } main 为主函数,是每一个c语言程序中必须有的,也必须只能有一个。它是单片机程序运行开始的入口处,在main函数中都有一个while(1)死循环,程序将在while所包含的语句中周而复始的运行。 /*单片机avr 流水灯源程序文件名:led.c */ 在c语言中在 '/* 和 '*/' 之间的内容为程序的注释,方便程序的阅读,可以对多行进行注释,'//':只能进行单行注释。 常量:在程序运行过程中数值不变的数据。 变量:在程序运行过程中,其值可以改变的数据 在书写变量说明时,应注意以下几点: 1.允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。 2.最后一个变量名之后必须以“;”号结尾。 3.变量说明必须放在变量使用之前。一般放在函数体的开头部分。

相关主题
文本预览
相关文档 最新文档