当前位置:文档之家› 实验一 流光发生器设计

实验一 流光发生器设计

实验一 流光发生器设计
实验一 流光发生器设计

实验报告

(2014 – 2015 学年第一学期)

课程名称微型计算机接口技术

实验名称流光发生器设计

实验时间2014 年11 月25 日指导单位

指导教师

学生姓名班级学号

学院(系) 计算机软件专业软件工程

实验报告

实验名称流光发生器设计指导教师韩崇

实验类型验证实验学时2实验时间2014.11.25

一、实验目的和要求

1.掌握8254的结构、工作原理、工作方式、初始化编程及使用方法。

2.完成相应的硬件电路连线并编写程序,使8254的三个计数器输出不同周期的方波信号,控制三个发光二极管,达到流光效果。

二、实验环境(实验设备)

PD-32开放式微型计算机教学实验装置、8254定时器/计数器模块Windows 操作系统

三、实验原理及内容

8254有3个独立的16位计数器,每个计数器有3个引脚,GATE、CLK、OUT。每个计数器有6种工作方式,其中方式2、3有具有初值自动重装功能,所以可以选择计数器工作在方式3,输出的是连续信号,输出信号的周期T out =N×T CLK,。初始化编程时,程序员向计数初值寄存器写入的计数初值,将自动送入16位减1计数器。当GATE i=1时,每一个CLK i信号的下降沿使减1计数器减1,当计数器见到某个规定的数值时,OUT i端产生输出信号。在计数过程中,锁存器随减1计数器的变化而变化。8254使用单一+5v电

源有24个引脚,采用双列直插式封装。8254的3个计数器均有6种工作方式,其主要区别在于:(1)输出波形不同;(2)启动计数器的触发方式不同;(3)计数过程中门控信号GATE对计数操作的影响不同;(4)有的工作方式具备“初值自动重装”功能。初值自动充装的功能是:当计数器减到规定的数值后,计数初值将会自动地装入计数器重新计数。8254 的6种工作方式分别是:方式0——计数结束输出正跃变信号。其工作特点是:(1)写入控制字后,OUT端输出低电平,写入计数初值后,OUT端保持低电平,计数器开始对CLK脉冲进行减1计数。当计数值减为0时,OUT端输出变为高电平。此信号可用于向CPU发出中断请求。(2)在计数过程中,如果改变计数初值,则在写入新的计数初值后,计数器将以新的值为计数初值,重新开始减1计数。(3)GATE为计数控制信号,当GATE=1时,允许计数;GATE=0时,停止计数。方式1——单脉冲发生器。其工作特点是:(1)写入控制字后,OUT端输出高电平,写入计数初值后,OUT端保持高电平,计数器由GATE的上升沿启动。GATE启动后,OUT变为低电平,每来一个CLK 脉冲,计数器减1,当计数器减到0时,OUT端输出高电平,在OUT端输出一个负脉冲,负脉冲宽度为计数初值乘以CLK脉冲周期。(2)在计数器未减到0时,如果门控信号GATE再来一个正脉冲,计数初值将重新装入计数器,计数器从初始值开始重新作减1计数。(3)在计数过程中,程序员可装入新的计数初值,但计数过程不收影响。只有当GATE再一次出现0→1的跃变后,计数器才能按照新的计数初值作减1计数。方式2——分频器。其工作特点是:(1)写入控制字后,OUT端输出为高电平,写入计数初值后,如果GATE为高电平,计数器开始减1计数,当计数器减到1时,

OUT端输出低电平,经过一个CLK周期,又变为高电平,并且计数初值自动重装,计数器开始重新计数,周而复始。OUT端输出时连续的负脉冲,负脉冲宽度为一个CLK周期。(2)如果在减1计数过程中,GATE变低,则暂停计数,GATE的上升沿使计数器恢复初值,并从初值开始减1计数。(3)在计数过程中,如果GATE为高电平,程序员写入新的计数初值,不会影响正在进行的减1计数过程,只有计数器减到1之后,计数器才装入新的计数初值,并且按新的计数初值开始计数。方式3——方波发生器。其工作特点是:(1)当计数初值为偶数时,每来一个CLK脉冲,计数值减2,当计数值减到0时输出端改变极性,内部完成初值自动安装,继续计数。输出端为1:1的方波,正负脉冲的宽度均为N/2个CLK周期。(2)如果计数初值为奇数,输出正脉冲宽度=Tclk×(N+1)/2,;输出负脉冲宽度=Tclk×(N-1)/2。实验证明:实际装入的初值以及自动重装的初值,均为编程时写入的初值减1。方式4——软件触发的单脉冲发生器。其工作特点是:(1)写入控制字后,OUT端输出高电平,若当前GATE为高电平,写入计数初值后,开始作减1计数,当计数值减到0时,OUT变低,在OUT端输出一个宽度为一个CLK周期的负脉冲。(2)当GATE=1时,允许计数,GATE=0时,停止计数。(3)在计数过程中,如果改变计数值,则按新的计数值重新开始计数。方式5——硬件触发的单脉冲发生器。其工作特点是:(1)写入控制字后,OUT端输出为高电平。写入计数初值后,只有在GATE端出现0→1跃变时,计数初值才能装入计数器,开始作减1计数,当计数值减为0时,OUT端输出一个CLK周期的负脉冲。(2)在计数过程中,若GATE 端再次出现0→1跃变,则计数初值重新装入计数器,作减1计数。(3)在

计数过程中,如果改变计数初值,不影响当前计数过程;若有GATE上升沿触发,则按新的计数初值重新开始计数。一个

详细程序为:CDPORT3 EQU 212H ;

CHDBIT1 EQU 00H

CHDBIT2 EQU 00H

START: NOP ;启动延时

MOV DX,CCONPORT ;写入控制字(计数器0)

MOV AL,CCONBIT1

OUT DX,AL

MOV DX,CDPORT1 ;写入初值(计数器0)

MOV AL,CHDBIT1

OUT DX,AL

MOV DX,CCONPORT ;写入控制字(计数器1)

MOV AL,CCONBIT2

OUT DX,AL

MOV DX,CDPORT2 ;写入初值(计数器1)

MOV AL,CHDBIT1

NOP

NOP

OUT DX,AL

MOV DX,CCONPORT ;写入控制字(计数器2)

MOV AL,CCONBIT3

OUT DX,AL

MOV DX,CDPORT3 ;写入初值(计数器2)

MOV AL,CHDBIT2

OUT DX,AL

WT: NOP

JMP WT CODE ENDS

END BEG

四、实验小结(包括问题和解决方法、心得体会、意见与建议等)

该实验在施行第二种方案时,出现了许多问题。

1. 一开始编程,计算初值使用公式:T out =N×T CLK,.,由于未考虑到人们视觉能分辨的闪烁时间为0.4秒而设置过小的时间间隔,没有达到实验要求效果,而后通过计算得N=23500和N=32900。

2 . 未考虑到8254内部的计数器是16位,将十进制数误当成二进制的放到EAX中,正确的输入为MOV AX,V ALUE1 OUT DX,AL MOV AL,AH OUT DX,AL .

3. 要正确设置读/写方式,先读低8位后读高8位。

4. 编程过程中,要使用NOP 语句,避免运行时间过短。

五、指导教师评语

成绩批阅人日期

数字波形发生器毕业设计

数字波形发生器的设计 摘要波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。本函数发生器采用89C52单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和液晶显示电路等。电路采用89C52单片机与一片DAC0832数模转换器组成低频信号发生器。通过按键控制可分别控制选择输出的幅值和频率,同时用1602显示器显示幅值和频率.本系统设计简单、性能优良,具有一定的实用性。 关键词AT89C52 DACO832 波形发生器 1 序言 波形发生器是一种常用的信号源,广泛的应用于电子电路、自动控制系统和教学实验等领域,是现代测试领域内应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源。由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察。测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最为广泛的一类电子仪器。它可以产生多种波形信号,如锯齿波、三角波、梯形波等,因而广泛应用于通信、雷达、导航、宇航等领域[3]。 自单片机广泛应用以来,各种器件日益智能化,而智能的实现需要各种信号。可以预见,波形发生器已成为重要的产品,发展前景十分看好。市场上精度高的波形发生器十分昂贵,结构复杂,如何降低成本普及产品是目前波形发生器的重要课题。 2. 系统总体设计思路概述 数字波形发生器的方案论证 总体方案设计 方案一:利用D/A转换器输出的模拟量与输入数字量成正比关系这一特点,将D/A转换器作为微机输出接口,CPU通过程序向D/A转换器输出随时间呈现不同变化规律的数字量,则D/A转换器就可输出各种各样的模拟量,如方波、三角波、锯齿波、正弦波等。 此方案可满足题目的要求,产生波形程序控制,并通过按键选择幅值电压和频率,并在LCD1602液晶屏中显示相应幅值电压和选择的频率,按键选择频率、幅值、波形。优点是结构简单,满足此

实验一 词法分析器的设计

实验一词法分析器的设计 (2) 1.1 词法分析器的结构和主要任务 (2) 1.1.1 输入输出接口 (2) 1.1.2 条件限制 (2) 1.2 词法分析程序的总体设计 (3) 1.3 词法分析程序的详细设计 (4) 1.4实验步骤 (5) 1.5输入数据 (15) 1.6结果输出 (15)

实验一词法分析器的设计 实验目的:掌握词法分析的概念,设计方法,熟悉高级语言中词法的定义,词法分析程序的编写。 实验要求:在8学时内实现SAMPLE语言的词法分析器,要求用VC窗口界面实现。 实验内容:分为4次实验完成。 1.1 词法分析器的结构和主要任务 1.1.1 输入输出接口 图1-1词法分析器的输入输出界面 词法分析程序的主要任务是从左到右扫描每行源程序,拼成单词,换成统一的内部表示(token)输出,送给语法分析器。具体包括: 1.组织源程序的输入; 2.按规则拼单词,并转换成二元形式; 3.滤掉空白符,跳过注释、换行符及一些无用的符号(如字符常数的引号) 4.进行行列计数,用于指出出错的行列号,并复制出错部分; 5.列表打印源程序; 6.发现并定位词法错误; 7.生成符号表。 token文件和符号表用作语法分析的输入部分。 1.1.2 条件限制 本实验可以作如下假定: (1) 假定SAMPLE语言采用自由格式书写; (2) 可以使用注解,用/*……*/或者{……}标识,但注解不能插在单词内部,注解要在一行内结束,若一行结束,没有遇到注释后面的结束标记,自动认为注释也结束; (3) 一行可以有多个语句,一个语句也可以分布在多行中,单词之间和语句之间可以插入任意空格,单词中间不能有空白符号,单词中间也不能有回车换行符,即单词不能跨行书写; (4) 关键字都是保留字。

编译原理词法分析器语法分析器实验报告

编译技术 班级网络0802 学号3080610052姓名叶晨舟 指导老师朱玉全2011年 7 月 4 日

一、目的 编译技术是理论与实践并重的课程,而其实验课要综合运用一、二年级所学的多门课程的内容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。 二、任务及要求 基本要求: 1.词法分析器产生下述小语言的单词序列 这个小语言的所有的单词符号,以及它们的种别编码和内部值如下表: 单词符号种别编码助记符内码值 DIM IF DO STOP END 标识符 常数(整)= + * ** , ( )1 2 3 4 5 6 7 8 9 10 11 12 13 14 $DIM $IF $DO $STOP $END $ID $INT $ASSIGN $PLUS $STAR $POWER $COMMA $LPAR $RPAR - - - - - - 内部字符串 标准二进形式 - - - - - - 对于这个小语言,有几点重要的限制: 首先,所有的关键字(如IF﹑WHILE等)都是“保留字”。所谓的保留字的意思是,用户不得使用它们作为自己定义的标示符。例如,下面的写法是绝对禁止的: IF(5)=x 其次,由于把关键字作为保留字,故可以把关键字作为一类特殊标示符来处理。也就是说,对于关键字不专设对应的转换图。但把它们(及其种别编码)预先安排在一张表格中(此表叫作保留字表)。当转换图识别出一个标识符时,就去查对这张表,确定它是否为一个关键字。 再次,如果关键字、标识符和常数之间没有确定的运算符或界符作间隔,则必须至少用一个空白符作间隔(此时,空白符不再是完全没有意义的了)。例如,一个条件语句应写为

编译原理实验--词法分析器

编译原理实验--词法分析器 实验一词法分析器设计 【实验目的】 1(熟悉词法分析的基本原理,词法分析的过程以及词法分析中要注意的问题。 2(复习高级语言,进一步加强用高级语言来解决实际问题的能力。 3(通过完成词法分析程序,了解词法分析的过程。 【实验内容】 用C语言编写一个PL/0词法分析器,为语法语义分析提供单词,使之能把输入的字符 串形式的源程序分割成一个个单词符号传递给语法语义分析,并把分析结果(基本字, 运算符,标识符,常数以及界符)输出。 【实验流程图】

【实验步骤】 1(提取pl/0文件中基本字的源代码 while((ch=fgetc(stream))!='.') { int k=-1; char a[SIZE]; int s=0; while(ch>='a' && ch<='z'||ch>='A' && ch<='Z') { if(ch>='A' && ch<='Z') ch+=32; a[++k]=(char)ch; ch=fgetc(stream); } for(int m=0;m<=12&&k!=-1;m++) for(int n=0;n<=k;n++) {

if(a[n]==wsym[m][n]) ++s; else s=0; if(s==(strlen(wsym[m]))) {printf("%s\t",wsym[m]);m=14;n=k+1;} } 2(提取pl/0文件中标识符的源代码 while((ch=fgetc(stream))!='.') { int k=-1; char a[SIZE]=" "; int s=0; while(ch>='a' && ch<='z'||ch>='A' && ch<='Z') { if(ch>='A' && ch<='Z') ch+=32; a[++k]=(char)ch; ch=fgetc(stream); } for(int m=0;m<=12&&k!=-1;m++) for(int n=0;n<=k;n++) { if(a[n]==wsym[m][n]) ++s; else s=0; if(s==(strlen(wsym[m]))) {m=14;n=k+1;} } if(m==13) for(m=0;a[m]!=NULL;m++) printf("%c ",a[m]);

基于51单片机的波形发生器的设计讲解

目录 1 引言 (1) 1.1 题目要求及分析 (1) 1.1.1 示意图 (1) 1.2 设计要求 (1) 2 波形发生器系统设计方案 (2) 2.1 方案的设计思路 (2) 2.2 设计框图及系统介绍 (2) 2.3 选择合适的设计方案 (2) 3 主要硬件电路及器件介绍 (4) 3.1 80C51单片机 (4) 3.2 DAC0832 (5) 3.3 数码显示管 (6) 4 系统的硬件设计 (8) 4.1 硬件原理框图 (8) 4.2 89C51系统设计 (8) 4.3 时钟电路 (9) 4.4 复位电路 (9) 4.5 键盘接口电路 (10) 4.7 数模转换器 (11) 5 系统软件设计 (12) 5.1 流程图: (12) 5.2 产生波形图 (12) 5.2.1 正弦波 (12) 5.2.2 三角波 (13) 5.2.3 方波 (14) 6 结论 (16) 主要参考文献 (17) 致谢...................................................... 错误!未定义书签。

1引言 1.1题目要求及分析 题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。 1.1.1示意图 图1:系统流程示意图 1.2设计要求 (1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。 (2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。 (3) 系统具有存储波形功能。 (4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。 (5) 系统输出波形幅度范围0~5V。 (6) 系统具有显示输出波形的类型、重复频率和幅度的功能。

实验1 词法分析器

青岛理工大学 实 验 报 告 实验课程: 编译原理 实验日期: 2014 年 5月28 日 交报告日期:2014 年6月4日 成绩: 实验地点:现代教育技术中心101(计算机实验室) 计算机工程 学院,计算机科学与技术 专业, 班级:计算113 实验指导教师: 批阅教师: 一、实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、实验要求 1. 待分析的简单语言的词法 1) 关键字: begin if then while do end 所有关键字都是小写。 2) 运算符和界符: : = + – * / < <= <> > >= = ; ( ) # 3) 其他单词是标识符(ID )和整型常数(NUM ),通过以下正规式定义: ID=letter (letter| digit )* NUM=digit digit * 4) 空格由空白、制表符和换行符组成。空格一般用来分隔ID 、NUM,运算符、界符和关 键字,词法分析阶段通常被忽略。

2.各种单词符号对应的种别码 3.词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码;token为存放的单词自身字符串;sum为常数。 例如:对源程序 begin x:=9; if x>0 then x:=2*x+1/3; end# 经词法分析后输出如下序列:(1,beigin) (10,x) (18,:=) (11,9) (26,;) (2,if)......

三、算法思想 1.主程序示意图 主程序示意图如下所示: 其中初值包括如下两个方面。 1)关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在关键字表,当扫描程序识别出标识符时,查关键字表。若查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表作为一个字符串数组,其描述如下: char *rwtab[22] = {"begin","if","else","then","while","do","for","switch","case", "until","break","goto","constant","return", "int","float","double","string","char","short","long","end"}; 2)程序中的主要变量为syn,token和sum。 2.扫描子程序的算法思想 首先设置3个变量: ①token用于存放构成单词符号的字符串; ②sum用于存放整型单词; ③syn用于存放单词符号的种别码。

数字信号发生器课程设计

数字信号发生器的设计 摘要 信号发生器也叫做振荡器或是信号源,在现在的科技生产实践中有着广泛而重要的应用。现在的特殊波形发生器在价格上不够经济,有些昂贵。而基于AT89C51单片机的函数信号发生器可以满足此要求。根据傅里叶变换,各种波形均可以用三角函数的相关式子表示出来。函数信号发生器能够产生多种波形,如三角波、锯齿波、矩形波、方波和正弦波。 本文通过在单片机的外围加上键盘,控制波形的种类和输出频率的大小,加上LED 显示出相应信息。单片机输出为数字信号,于是在输出端用DAC0832进行D/A转换,再通过两级运放对波形进行调整。最终在示波器上显示出来。 关键词:信号发生器, AT89C51,D/A转换,波形调整

目录 1 绪论 (1) 1.1 课题研究背景 (1) 1.2波形介绍 (1) 2系统设计 (3) 2.1方案选择 (3) 2.2框图设计 (3) 2.3单片机模块 (4) 2.4按键控制与显示电路设计 (6) 2.5 D/A转换电路 (7) 2.6 显示电路 (9) 2.7 放大电路设计 (12) 2.8整体的电路原理图 (13) 2.9元件清单 (13) 3软件设计 (15) 3.1程序流程图 (15) 3.2程序代码 (15) 4系统仿真及调试 (18) 4.1系统仿真图 (18) 4.2系统调试 (19) 总结 (21) 致谢 (22) 参考文献 (23)

1绪论 1.1课题研究背景 随着经济与科技不断发展,相应的测试仪器与手段也有了许多改善与提高,但是对之要求也不断提高。波形发生器的信号已知,使用者然后根据具体的要求,将其作为激励源,测得感兴趣的参数。信号源仿真各种测试信号,给待测电路,从而满足现实需求。信号发生器在仿真实验占有重要地位,对于测试仪器来说也同样不可缺少。因此对相关信号发生器的研究开发有着一定的意义。 传统的信号发生器电路复杂,控制灵活度不够,成本也相对较高。虽然我国所研制的波形发生器在一定程度上已有了一些成果,但与国外技术确实还存在一定差距,因此很有必要提高相关方面的研究。 利用单片机的控制灵活性,外设处理能力强等特点,实现频率与幅度可调的多种波形,这就克服了传统的缺点,具有良好的实用性。同时根据程序的易控制性,可以容易实现各种较复杂的调频调幅功能。 1.2波形介绍 正弦波,正弦信号可用如下形式表示 f (t)=A sin(ωt+θ) (1) 其中,A 为振幅,ω是角频率,θ为初相位。正弦函数为一周期信号如下图1所示: 图1正弦波 ·方波 方波函数是我们常用且所熟知的简单波形函数,做脉冲等,其表示形式如下:

什么是流光能分解技术

什么是流光能分解技术 纵观市面上绝大多数空气净化器,大都采用了标准的过滤吸附技术:即利用不同功能特性的过滤材料将空气中的污染源吸附在滤芯上,达到减少室内空气中污染源的效果。高端的净化器除了可以过滤空气中的较大直径悬浮颗粒物,还可能会用到HEPA滤网、甲醛滤网、活性炭滤网等多重过滤装置,在有效吸附可吸入悬浮物的同时,亦能去除空气中诸如甲醛、VOCS挥发性有机化合物等有害物质。 但是仅仅依靠过滤+吸附并不能实现真正彻底的空气净化。例如空气中存在的各种病毒、霉菌即使被吸附,也难以消除自身的毒性,如果再遇上过滤网饱和的情况,必然会导致空气净化器的过滤效果大幅下降甚至消失。 大金空气清洁器所采用的流光能空气净化技术,是一种具有高效氧化分解能力的等离子放电技术。具体工作流程和原理:首先利用流光能释放装置,流光能是流光放电使病毒表面的蛋白质被氧化分解,使其失去传染能力,达到空气净化。经过消毒后的空气再进入层层过滤装置,最终输出的就是几乎没有了病菌、粉尘、甲醛、异味干净而湿润的空气。 上海市环境保护产品质量监督检验总站鉴定 经上海市环境保护产品质量监督总站检测,流光能空气清洁器对空气中的甲醛、粉尘、香烟等固体、气体污染物的净化效能等级均达到了A级水平。

大金空气清洁器外观 整体外观 大金空气清洁器外壳的正面部位采用白色亚克力材质制成,机身线条圆润而流畅,机身四周没有明显的棱角,这种设计既可以保证家里幼儿的安全。

出风口 清洁器顶部为出风口,每小时的换气量指标很高,可以最高可达到342立方米,足以满足40平米室内面积的空气净化。

侧面铭牌 机身侧面的铭牌详细介绍了大金空气清洁器的主要参数。

东南大学编译原理词法分析器实验报告

词法分析设计 1. 实验目的 通过本实验的编程实践,了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。 2. 实验内容 用C++语言实现对C++语言子集的源程序进行词法分析。通过输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示“Error”,然后跳过错误部分继续显示;同时进行标识符登记符号表的管理。 3. 实验原理 本次实验采用NFA->DFA->DFA0的过程: 对待分析的简单的词法(关键词/id/num/运算符/空白符等)先分别建立自己的FA,然后将他们用产生式连接起来并设置一个唯一的开始符,终结符不合并。 待分析的简单的词法 (1)关键字: "asm","auto","bool","break","case","catch","char","class","

const","const_cast"等 (2)界符(查表) ";",",","(",")","[","]","{","}" (3)运算符 "*","/","%","+","-","<<","=",">>","&","^","|","++","--"," +=","-=","*=","/=","%=","&=","^=","|=" relop: (4)其他单词是标识符(ID)和整型常数(SUM),通过正规式定义。 id/keywords: digit: (5)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。

词法分析器实验报告

词法分析器实验报告 词法分析器实验报告实验目的: 设计、编制、调试一个词法分析子程序,识别单词,加深对词法分析原理的理 解。 实验要求: 该程序要实现的是一个读单词过程,从输入的源程序中,识别出各个具有独立 意义的单词,即基本保留字、标识符、常数、运算符、分界符五大类。并依次输出 各个单词的内部编码及单词符号自身值。 (一)实验内容 (1)功能描述:对给定的程序通过词法分析器弄够识别一个个单词符号,并以二 元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件 的分析后以单词符号和文字提示显示。 (2)程序结构描述: 函数调用格式: 函数调用格式函数名(实在参数表 ) Switch(m)、 isKey(String string)、isLetter(char c)、实参 isDigit(char c)、isOperator(char c) isKey(String string)、isLetter(char c)、调作为表达式 isDigit(char c)、isOperator(char c) 用 方 作为语句 getChar()、judgement()、 法 函数的递归调用 isOperator(char c) 、isLetter(char c)、isDigit(char c)

参数含义: 1 String string;存放读入的字符串 String str; 存放暂时读入的字符串 char ch; 存放读入的字符 int rs 判断读入的文件是否为空 char []data 存放文件中的数据 int m;通过switch用来判断字符类型, 函数之间的调用关系图: main Complier..judgement isOperate() M=0 getChar( ) isDigit() M=4 For(ch ) isLet ter() M=2 Switch(m) isKey() M=3 函数功能: Judgement()判断输入的字符并输出单词符号,返回值为空; getChar() 读取文件的,返回值为空; isLetter(char c) 判断读入的字符是否为字母的,返回值为Boolean类型; switch (m) 判断跳转输出返回值为空; isOperator(char c)判断是否为运算符的,返回值为Boolean类型; isKey(String string)判断是否为关键字的,返回值为Boolean类型; isDigit(char c) 判断读入的字符是否为数字的,返回值为Boolean类型。测试结果:

(完整版)数字信号发生器的电路设计_(毕业课程设计)

1 引言 信号发生器又称信号源或者振荡器,它是根据用户对其波形的命令来产生信号的电子仪器,在生产实践和科技领域有着广泛的应用。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其他仪表测量感兴趣的参数。信号发生器在通信、广播、电视系统,在工业、农业、生物医学领域内,在实验室和设备检测中具有十分广泛的用途。 信号发生器是一种悠久的测量仪器,早在20年代电子设备刚出现时它就产生了。随着通信和雷达技术的发展,40年代出现了主要用于测试各种接收机的标准信号发生器,使信号发生器从定性分析的测试仪器发展成定量分析的测量仪器。自60年代以来信号发生器有了迅速的发展,出现了函数发生器,这个时期的信号发生器多采用模拟电子技术,由分立元件或模拟集成电路构成,其电路结构复杂,且仅能产生正弦波、方波、锯齿波和三角波等几种简单波形。到70年代处理器出现以后,利用微处理器、模数转换器和数模转换器,硬件和软件使信号发生器的功能扩大,产生比较复杂的波形。这时期的信号发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。随着现代电子、计算机和信号处理等技术的发展,极大地促进了数字化技术在电子测量仪器中的应用,使原有的模拟信号处理逐步被数字信号处理所代替,从而扩充了仪器信号的处理能力,提高了信号测量的准确度、精度和变换速度,克服了模拟信号处理的诸多缺点,数字信号发生器随之发展起来。

信号发生器作为电子领域不可缺少的测量工具,它必然将向更高性能,更高精确度,更高智能化方向发展,就象现在在数字化信号发生器的崛起一样。但作为一种仪器,我们必然要考虑其所用领域,也就是说要因地制宜,综合考虑性价比,用低成本制作的集成芯片信号发生器短期内还不会被完全取代,还会比较广泛的用于理论实验以及精确度要求不是太高的实验。因此完整的函数信号发生器的设计具有非常重要的实践意义和广阔的应用前景。 2 数字信号发生器的系统总述 2.1 系统简介 信号发生器广泛应用于电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域。 本设计以AT89C52[1]单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统主要包括CPU模块、显示模块、键盘输入模块、数模转换模块、波形输出模块。系统电路原理图见附录A,PCB (印制电路板)图见附录B。其中CPU模块负责控制信号的产生、变化及频率的改变;模数转换模块采用DAC0832实现不同波形的输出;显示模块采用1602液晶显示,实现波型和频率显示;键盘输入模块实

词法分析器实验报告

词法分析器实验报告 词法分析器设计 一、实验目的: 对C语言的一个子集设计并实现一个简单的词法分析器,掌握利用状 态转换图设计词法分析器的基本方法。利用该词法分析器完成对源程 序字符串的词法分析。输出形式是源程序的单词符号二元式的代码, 并保存到文件中。 二、实验内容: 1. 设计原理 词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。 理论基础:有限自动机、正规文法、正规式 词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序 2. 词法分析器的功能和输出形式 功能:输入源程序、输出单词符号 程序语言的单词符号一般分为以下五种:关键字、标识符、常数、运算符,界符 3. 输出的单词符号的表示形式: 单词种别用整数编码,关键字一字一种,标识符统归为一种,常数一种,各种符号各一种。 4. 词法分析器的结构 单词符号 5. 状态转换图实现

三、程序设计 1.总体模块设计 /*用来存储目标文件名*/ string file_name; /*提取文本文件中的信息。*/ string GetText(); /*获得一个单词符号,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。*/ string GetWord(string str,int i,int& j); /*这个函数用来除去字符串中连续的空格和换行 int DeleteNull(string str,int i); /*判断i当前所指的字符是否为一个分界符,是的话返回真,反之假*/ bool IsBoundary(string str,int i); /*判断i当前所指的字符是否为一个运算符,是的话返回真,反之假*/ bool IsOperation(string str,int i);

数字化波形发生器的设计-毕业设计

数字化波形发生器的设计 学生:XX 指导老师:XX 内容摘要:介绍一种数字化波形发生器的设计。采用MAX038函数发生器芯片,在单片机的控制下输出正弦波、三角波、矩形波,频率、占空比可通过12位4路输出的数模转换器MAX526进行数控调节。波形的频率和幅值采用LCD显示。8选1多路模拟开关AD7501在单片机的控制下实现频段的选择。MAX038输出的幅值电压放大后送入数字衰减器AT-280进行衰减,以调整放大后的输出幅度。 关键词:数控波形发生器 MAX038 MAX526 LCD模块

The design of a digital waveform generator Abstract:Introduces a design of digital waveform generator. Using MAX038 function generator chip, the microcontroller under the control of a sine wave, triangle wave output, rectangle wave, frequency, and occupies emptiescompared to a 4 way through 12 of the output MAX526 digital-to-analog converters for numerical control regulation. The wave frequency and amplitude are the LCD display. 8 choose more than one way AD7501 analog switch in under the control of the single chip microcomputer realize frequency band choice. MAX038 amplitude voltage amplifier output after into digital decay AT-280 attenuation, adjusting to enlarge the output amplitude. Keywords:Digital waveform generator MAX038 MAX526 LCD modul

编译原理实验_词法分析器的设计与实现

南华大学 计算机科学与技术学院实验报告 ( 2018~2019学年度第二学期) 课程名称编译原理 实验名称词法分析器的设计与 实现 学号 专业班级 地点教师

1.实验目的及要求 实验目的 加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。 实验要求 1.对单词的构词规则有明确的定义; 2.编写的分析程序能够正确识别源程序中的单词符号; 3.识别出的单词以<种别码,值>的形式保存在符号表中,正确设计和维护 符号表; 4.对于源程序中的词法错误,能够做出简单的错误处理,给出简单的错误 提示,保证顺利完成整个源程序的词法分析; 2.实验步骤 1.词法分析规则 <标识符>::=<字母>|<标识符><字母>|<标识符><数字> <常数>::=<数字>|<数字序列><数字> <数字序列>::=<数字序列><数字>|<数字>|<.> <字母>::=a|b|c|……|x|y|z <数字>::=0|1|2|3|4|5|6|7|8|9 <运算符>::=<关系运算符>|<算术运算符>|<逻辑运算符>|<位运算符>|<赋值运算符> <算数运算符>::=+|-|*|/|...|-- <关系运算符>::=<|>|!=|>=|<=|== <逻辑运算符>::=&&| || |! <位运算符>::=&| | |! <赋值运算符>::==|+=|-=|/=|*= <分界符>::=,|;|(|)|{|}|:| // |/**/ <保留字>::=main|if|else|while|do|for|...|void

简易信号发生器的设计实现

EDA课程设计简易信号发生器的设计实现 小组成员:XXXXXX XXXXX 专业:XXXXX 学院:机电与信息工程学院指导老师:XXXXXX 完成日期:XX年XX月XX日

目录 引言 (3) 一、课程设计内容及要求 (3) 1、设计内容 (3) 2、设计要求 (3) 二、设计方案及原理 (3) 1、设计原理 (3) 2、设计方案 (4) (1)设计思想 (4) (2)设计方案 (4) 3、系统设计 (5) (1)正弦波产生模块 (5) (2)三角波产生模块 (6) (3)锯齿波产生模块 (6) (4)方波产生模块 (6) (5)波形选择模块 (6) (6)频率控制模块 (6) (7)幅度控制模块 (6) (8)顶层设计模块 (7) 三、仿真结果分析 (7) 波形仿真结果 (7) 1、正弦波仿真结果 (7) 2、三角波仿真结果 (8) 3、锯齿波仿真结果 (8) 4、方波仿真结果 (8) 5、波形选择仿真结果 (9) 6、频率控制仿真结果 (9) 四、总结与体会 (10) 五、参考文献 (10) 六、附录 (11)

简易信号发生器 引言 信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广范的应用。它能够产生多种波形,如正弦波、三角波、方波、锯齿波等,在电路实验和设备检验中有着十分广范的应用。 本次课程设计采用FPGA来设计多功能信号发生器。 一、课程设计内容及要求 1、设计内容 设计一个多功能简易信号发生器 2、设计要求 (1)完成电路板上DAC的匹配电阻选择、焊接与调试,确保其能够正常工作。 (2)根据直接数字频率合成(DDFS)原理设计正弦信号发生器,频率步进1Hz,最高输出频率不限,在波形不产生失真(从输出1KHz正弦转换为输出最高频率正弦时,幅度衰减不得大于10%)的情况下越高越好。频率字可以由串口设定,也可以由按键控制,数码管上显示频率傎。 (3)可以控制改变输出波形类型,在正弦波、三角波、锯齿波、方波之间切换。 (4)输出波形幅度可调,最小幅度步进为100mV。 二、设计方案及原理 1、设计原理 (1)简易信号发生器原理图如下

实验一: 词法分析器

实验一:词法分析器 实验要求: 输入一段源程序或者是字符序列,判断它属于关键字或者是标志符等类型,通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。 掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 实验说明: 本实验里面设计了两个程序,第一个非常简单,只有最简单的判断功能,即输入一个字符,判断它是属于关键字,或者标志符,或者数字,或者特殊字符,然后输出到屏幕它的类型,实现方法和编写的代码都很简单. 第二个程序是一个比较完整的词法即分析器,此处分析的是一段PASCL语言的代码,通过词法分析器的分析作用,在进行词法分析中,先自文件头开始以行为单位扫描程序,将该行的字符读入预先设定的一个数组缓冲区中,然后对该数组的字符逐词分割,进行词法分析,将每个词分割成关键字、标识符、常量和运算符四种词种,最终产生四个相对应的表,关键字表、标识符表、常量表和运算符表。此程序代码的编写和思路部分参考网上的程序。 实验过程: 本实验中用到c中自带的几个判断字母和数字的函数,他们包含在ctype.h 主要用到其中的几个函数如下: o isalnum - 是否為英文字母或數字字元(A~Z, a~z, 0~9) o isalpha - 是否為英文字母(A~Z, a~z) o isdigit - 是否為數字字元(0~9) 当其为真时,则返回非零值,由此可以由其返回的布尔值判断字符,为字符的类型判断提供了很大的方便。 主要的几个函数是: bool Is_keyword(char str1[]) 判断是否为关键字 bool Is_signword(char str1[]) 判断是否为标志符 bool Is_digit(char str1[]) 判断是否为数字 bool Is_special(char str1[] ) 判断是否为特殊符号 Main()主函数部分用最简单的if else 结构,形成多个If …. Else if 的嵌套,顺次判断字符是否为某个函数中的真值,是则输出对应的显示,否则继续向下运行,如果最后还得不到匹配的话就输出提示错误的信息,整个实现的方法和思路都很简单。

编译原理词法分析器语法分析器实验报告

(此文档为word格式,下载后您可任意编辑修改!) 编译技术 班级网络0802 学号 姓名叶晨舟 指导老师朱玉全 2011年 7 月 4 日

一、目的 编译技术是理论与实践并重的课程,而其实验课要综合运用一、二年级所学的多门课程的内容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。 二、任务及要求 基本要求: 1.词法分析器产生下述小语言的单词序列 这个小语言的所有的单词符号,以及它们的种别编码和内部值如下表: 单词符号种别编码助记符内码值 DIM IF DO STOP END 标识符 常数(整)= + * ** , ( )1 2 3 4 5 6 7 8 9 10 11 12 13 14 $DIM $IF $DO $STOP $END $ID $INT $ASSIGN $PLUS $STAR $POWER $COMMA $LPAR $RPAR - - - - - - 内部字符串 标准二进形式 - - - - - - 对于这个小语言,有几点重要的限制: 首先,所有的关键字(如IF﹑WHILE等)都是“保留字”。所谓的保留字的意思是,用户不得使用它们作为自己定义的标示符。例如,下面的写法是绝对禁止的: IF(5)=x 其次,由于把关键字作为保留字,故可以把关键字作为一类特殊标示符来处理。也就是说,对于关键字不专设对应的转换图。但把它们(及其种别编码)预先安排在一张表格中(此表叫作保留字表)。当转换图识别出一个标识符时,就去查对这张表,确定它是否为一个关键字。 再次,如果关键字、标识符和常数之间没有确定的运算符或界符作间隔,则必须至少用一个空白符作间隔(此时,空白符不再是完全没有意义的了)。例如,一个条件语句应写为 IF i>0 i= 1;

数字函数波形发生器电路设计154156

题目数字函数波形发生器电路设计 班级电子科学与技术一班 学号 114040300 姓名 指导______ ____ ________ 时间 2017.3.25 景德镇陶瓷大院

电子综合技术课程设计任务书

目录 1、总体方案与原理说明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2、存储器和转换器的选择 (4) 3、波形发生器实现电路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 4、波形发生器总电路图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5、元器件管脚图. . . . . . . . . . . . . . . . . . . . . . . . . . .7 6、波形发生器的操作步骤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 7、元件清单. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 8、课程设计体会. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 9、参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

实验一、词法分析器(含源代码)

词法分析器实验报告 一、实验目的及要求 本次实验通过用C语言设计、编制、调试一个词法分析子程序,识别单词,实现一个C语言词法分析器,经过此过程可以加深对编译器解析单词流的过程的了解。 运行环境: 硬件:windows xp 软件:visual c++6.0 二、实验步骤 1.查询资料,了解词法分析器的工作过程与原理。 2.分析题目,整理出基本设计思路。 3.实践编码,将设计思想转换用c语言编码实现,编译运行。 4.测试功能,多次设置包含不同字符,关键字的待解析文件,仔细察看运行结果,检测该分析器的分析结果是否正确。通过最终的测试发现问题,逐渐完善代码中设置的分析对象与关键字表,拓宽分析范围提高分析能力。 三、实验内容 本实验中将c语言单词符号分成了四类:关键字key(特别的将main说明为主函数)、普通标示符、常数和界符。将关键字初始化在一个字符型指针数组*key[]中,将界符分别由程序中的case列出。在词法分析过程中,关键字表和case列出的界符的内容是固定不变的(由程序中的初始化确定),因此,从源文件字符串中识别出现的关键字,界符只能从其中选取。标识符、常数是在分析过程中不断形成的。 对于一个具体源程序而言,在扫描字符串时识别出一个单词,若这个单词的类型是关键字、普通标示符、常数或界符中之一,那么就将此单词以文字说明的形式输出.每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直到整个源程序全部扫描完毕,从而形成相应的单词串。 输出形式例如:void $关键字

流程图 、程序 流程图: 开始 输入源文件路径 路径是否有 效 是初始化文件指针 否 将字符加入字符数 组Word[] 是空格,空白或换 行吗 是字母吗是数字吗否否是界符吗否打开源文件 跳过该字符 是是 文件结束? 否 将字符加入字符数 组Word[] 否 将字符加入字符数组Word[] 是 指向下一字符识别指针内容 指向下一字符 是字母惑数字 吗 是 将word 与关键字表key 进行匹 配 否匹配?是输出word 为关键字 输出word 为普通标示符 否将字符加入字符数组Word[] 指向下一字符输出word 为常数 识别指针内容 回退 是数字吗 是 否输出word 为界符 指向下一字符 结束 是输出Word 内容为不可识别 将字符加入字符数组Word[]

波形发生器课程设计

波形发生器设计 设计总说明 本系统采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)运算放大器、按键等。采用AT89C51单片机和DAC0832芯片,直接连接键盘和显示。该种方案主要对AT89C51单片机的各个I/O口充分利用. P1口是连接键盘以及接显示电路,P2口连接DAC0832输出波形.这样总体来说,能对单片机各个接口都利用上,而不在多用其它芯片,从而减小了系统的成本.也对按照系统便携式低频信号发生器的要求所完成.占用空间小,使用芯片少,低功耗。 通过按键控制可产生方波、三角波、正弦波、梯形波、锯齿波。其设计简单、性能优好,具有一定的实用性。正弦波、三角波、方波、梯形波、锯齿波是较为常见的信号。在科学研究及教学实验中常常需要这几种信号的发生装置。 关键字:AT89C5,DAC0832,运算放大器

目录 1绪论 (1) 1.1设计目的 (1) 1.2设计容 (1) 2系统设计方案 (3) 2.1系统组成 (3) 2.2系统工作原理 (3) 3系统硬件电路设计 (4) 3.1单片机最小系统设计 (4) 3.2其他硬件模块电路设计 (4) 3.2.1 DAC0832芯片介绍 (4) 3.2.2单片机AT89C51介绍 (6) 4系统软件程序设计 (10) 4.1主程序设计 (10) 4.2其他子程序设计 (11) 4.2.1锯齿波流程设计 (11) 4.2.2梯形波流程设计 (12) 4.2.3三角波流程设计 (13) 4.2.4方波流程设计 (14) 4.2.5正弦波流程设计 (15)

5 调试与仿真 (18) 6 总结 (19) 致 (21) 参考文献 (22)

实验一伪随机码发生器实验

实验一 伪随机码发生器实验 一、实验目的 1、 掌握伪随机码的特性。 2、 掌握不同周期伪随机码设计。 3、 用基本元件库和74LS系列元件库设计伪随机码。 4、 了解ALTERA公司大规模可编程逻辑器件EPM7128SLC84内部结构和应用。 5、 学习FPGA开发软件MAXPLUSⅡ,学习开发系统软件中的各种元件库应用。 6、 熟悉通信原理实验板的结构。 二、实验仪器 1、 计算机 一台 2、 通信基础实验箱 一台 3、 100MHz 示波器 一台 三、实验原理 伪随机码是数字通信中重要信码之一,常作为数字通信中的基带信号源;扰码;误码测试;扩频通信;保密通信等领域。伪随机码的特性包括四个方面: 1、 由n 级移位寄存器产生的伪随机序列,其周期为-1; n 2 2、 信码中“0”、“1” 出现次数大致相等,“1”码只比“0”码多一个; 3、 在周期内共有-1游程,长度为 i 的游程出现次数比长度为 i+1的 游程出现 次数多一倍; n 24、 具有类似白噪声的自相关函数,其自相关函数为: ()() ?? ? ?≤≤=??=2 210 12/11n n τττρ 其中n 是伪随机序列的寄存器级数。 例如:四级伪码产生的本原多项式为X 4+X 3+1。 利用这个本原多项式构成的4级伪随机序列发生器产生的序列为: 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 相应的波形图如图1-1所示:

图1-1 四级伪随机序列波形图 用4个D 触发器和一个异或门构成的伪码发生器具有以下特性: 1、 周期为24-1=15; 2、 在周期内“0”出现24 -1-1=7次,“1”出现24 -1=8次; 3、 周期内共有24 -1 =8个游程; 4、 具有双值自相关特性,其自相关系数为: ????≤≤??==2 21)12(10 14 4τ / τ ρ(τ) 四、实验内容及步骤 1、在MAXPLUSⅡ设计平台下进行电路设计 1.1 四级伪随机码发生器电路设计 电路原理图如图1-2所示。 图1-2 四级伪随机码电路原理图 在MAXPLUS II 环境下输入上述电路,其中: dff ------ 单D触发器 xor ------ 二输入异或门 nor4 ------ 四输入或非门 not ------ 反相器 clk ------ 时钟输入引脚(16M时钟输入) 8M ------ 二分频输出测试点引脚 nrz ------ 伪随机码输出引脚 1.2 实验电路编译及FPGA 引脚定义 完成原理图输入后按以下步骤进行编译: (1) 在Assign Device 菜单选择器件MAX7128SLC84。

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