简易信号发生器设计代码

合集下载

简易信号发生器

简易信号发生器

感谢我所在的小组,感谢集体,才能有这么个结晶。

希望大家多动手多实践。

这次设计所用仪器:唐都TDN-MI实验系统。

(80C51)体会最深的几点如下:1.一切得和实验设备联系起来,很多是唐都实验系统的限制,使得只有P1口既可以做输入口,又可以做输出口。

P2,P3,P4只能做输出口。

2.80C51的定时器和8253芯片定时器不同,必须每次都赋予初值。

3.程序开始后只要无跳转语句,就会依次往下执行,注意跳转语句,以控制程序正确流程。

4.启动了相应的中断,不能认为无中断程序就不执行中断,程序还会按中断的入口地址执行,所以不用的就不要设置它对应的IE位了。

5.为人民服务!^^6.出波的频率越高,效果越好。

故希望大家实现的频率应该从100Hz起。

中北大学硬件大型实验说明书:kai2094学号:院:电子与计算机科学技术学院专业:计算机科学与技术题目:简易信号发生器设计指导教师:乔志伟职称:2008年1月17日1.需求分析信号发生器是科学研究最常用电子仪器之一。

设计一简易信号发生器在平常教学、实验等精度要求不高的情况下,很有价值。

1.1功能需求:1、能产生方波、正弦波、三角波和锯齿波等。

2、产生的各种信号,要能改变其频率、和幅值。

3、可以产生以上三种信号波形的叠加(仅限于其频率相同)。

4、频率、幅值可以通过键盘设定。

5、在输出信号波形时,应显示其频率。

1.2实现过程:1、程序有两大部分:用户输入相关数据部分和依照设定输出相应波形部分。

故开启两个中断服务程序。

2、外部中断1服务程序用于用户输入相关数据部分。

通过键盘录入数据,LED数码管实时显示使系统有良好的人机交互界面。

根据用户输入,调用改变程序,改变系统出波的类型、频率、幅值。

3、定时器1中断服务程序中则会依照设定输出相应波形部分,同时显示其频率。

4、任何一个随时间变化的波形都可分解为许多离散的数据点,可设定一个周期可等分为50个点,每两点间时间间隔由定时器定时产生,通过改变定时器初值就可改变其频率;而幅值通过与波所能达到最大幅值成比例改变。

简易信号发生器设计课程设计

简易信号发生器设计课程设计

摘要波形发生器是一种常常利用的信号源,普遍地应用于电子电路、自动控制系统和教学实验等领域。

本次课程设计利用的AT89C51 单片机组成的发生器可产生锯齿波、三角波、正弦波等多种波形,波形的周期能够用程序改变,并可按照需要选择单极性输出或双极性输出,具有线路简单、结构紧凑等长处。

在本设计的基础上,加上按钮控制和LED显示器,则可通过按钮设定所需要的波形频率,并在LED上显示频率、幅值电压,波形可用示波器显示。

用AT89C51单片机采用程序设计方式组成的波形发生器,可产生方波、三角波、正弦波,再通过DA转换器DAC0832将数字信号转换成模拟信号,并通过LM324集成运放把信号放大,通过示波器将波形显示在屏幕上。

波形的周期可用程序改变,此设计具有线路简单、结构紧凑、性能优越等特点。

通过仿真测试,其性能指标达到了设计要求,均达到了课程设计的目的。

一、设计原理数字信号能够通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方式来取得所需要的波形。

AT89C51单片机本身就是一个完整的微型运算机,具有组成微型运算机的各部份部件:中央处置器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、按时器/计数器和串行通信接口等,只要将AT89C51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部份,即可组成所需的波形发生器,其信号发生器组成原理框图如下图所示。

图信号发生器原理框图AT89C51是整个波形发生器的核心部份,通进程序的编写和执行,产生各类各样的信号,当数字信号电路抵达转换电路,将其转换成模拟信号也就是所需要的输出波形。

并通过滤波放大电路将波形输出出来。

二、设计内容一、运用keil软件对程序进行编写,运行程序,并进行程序修改。

二、运用protues软件进行硬件电路仿真设计。

3、将程序下载到仿真单片机中,并观测输出波形。

4、对程序进行修改,再次运行仿真软件,直到输出理想的波形。

DDS信号发生器设计源程序(DDSsignalgeneratordesignsource)

DDS信号发生器设计源程序(DDSsignalgeneratordesignsource)

DDS信号发生器设计源程序(DDS signal generator design source)Program codePrescaler module1, set number:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Zhishu ISPORT (M:OUT STD_LOGIC_VECTOR (31, DOWNTO, 0));END ENTITY;ARCHITECTURE, func, OF, Zhishu, ISBEGINM < = "00000101010111100110001110111000";END ARCHITECTURE;Accumulation step control module2, step selection:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bcxuanze ISPORT (bcxzmaichong:IN STD_LOGIC);Bc:BUFFER STD_LOGIC_VECTOR (19, DOWNTO, 0);END ENTITY;ARCHITECTURE, func, OF, bcxuanze, ISSIGNAL bc1:STD_LOGIC_VECTOR (19, DOWNTO, 0): = "00000000000000000001"";SIGNAL bc2:STD_LOGIC_VECTOR (19, DOWNTO, 0): = "00000000000000001010"";SIGNAL bc3:STD_LOGIC_VECTOR (19, DOWNTO, 0): = "00000000000000110010"";SIGNAL bc4:STD_LOGIC_VECTOR (19, DOWNTO, 0): = "00000000000001100100"";SIGNAL bc5:STD_LOGIC_VECTOR (19, DOWNTO, 0): = "00000000001111101000"";SIGNAL tmp:STD_LOGIC_VECTOR (19, DOWNTO, 0);BEGINPROCESS (bcxzmaichong)BEGINIF, bcxzmaichong'EVENT, AND, bcxzmaichong ='1', THENBC < = bc1;BC1 < = bc2;BC2 < = bc3;BC3 < = bc4;Bc4 < = bc5;Bc5 < = bc;END IF;END PROCESS;END ARCHITECTURE;3, cumulative controlLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY kongzhi ISPORT (key:IN STD_LOGIC);Clr:IN STD_LOGIC;M:IN STD_LOGIC_VECTOR (19, DOWNTO, 0);Fout:BUFFER STD_LOGIC_VECTOR (19, DOWNTO, 0); END ENTITY;ARCHITECTURE, func, OF, kongzhi, ISBEGINPROCESS (key, CLR)BEGINIF CLR ='0'THENIF, key'EVENT, AND, key ='1', THEN IF fout > 10000 THENFout < = M;ELSEFout < = fout + M;END IF;END IF;ELSEFout < = "00000000000000000000"; END IF;END PROCESS;END ARCHITECTURE;Display module4 frequency displayLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Xianshi ISPORT (foutin:IN STD_LOGIC_VECTOR (19, DOWNTO, 0); Clk:IN STD_LOGIC;Num1:OUT STD_LOGIC_VECTOR (6, DOWNTO, 0);Num2:OUT STD_LOGIC_VECTOR (6, DOWNTO, 0);Num3:OUT STD_LOGIC_VECTOR (6, DOWNTO, 0);Num4:OUT STD_LOGIC_VECTOR (6, DOWNTO, 0);Num5:OUT STD_LOGIC_VECTOR (6, DOWNTO, 0);END ENTITY;ARCHITECTURE, func, OF, Xianshi, ISSIGNAL dec:INTEGER;BEGINDec CONV_INTEGER (foutin); PROCESS (CLK)BEGIN如果clk'event和时钟=“1”然后病例10当0=>num1 < =“1000000”;当1=>num1 < =“1111001”;当2=>num1 < =“0100100”;当3=>num1 < =“0110000”;当4=>num1 < =“0011001”;当5=>num1 < =“0010010”;当6=>num1 <=“00000 10”;当7=>num1 < =“1111000”;当8=>num1 < =“0000000”;当9=>num1 < =“0010000”;当别人= > num1 < =“1111111”;案例;案例(DEC REM 100)/ 10是当0=>num2 < =“1000000”;当1=>num2 < =“1111001”;当2=>num2 < =“0100100”;当3=>num2 < =“0110000”;当4=>num2 < =“0011001”;当5=>num2 < =“0010010”;当6 = > < =“00000 10”num2;当7=>num2 < =“1111000”;当8=>num2 < =“0000000”;当9=>num2 < =“0010000”;当别人= > num1 < =“1111111”;案例;案例(DEC REM 1000)/ 100是当0=>小键盘数字3 < =“1000000”;当1=>小键盘数字3 < =“1111001”;当2=>小键盘数字3 < =“0100100”;当3=>小键盘数字3 < =“0110000”;当4=>小键盘数字3 < =“0011001”;当5=>小键盘数字3 < =“0010010”;当6 = > < =“00000 10”小键盘数字3;当7=>小键盘数字3 < =“1111000”;当8=>小键盘数字3 < =“0000000”;当9=>小键盘数字3 < =“0010000”;当别人= > num1 < =“1111111”;案例;案例(DEC REM 10000)/ 1000是当0=>NUM4 < =“1000000”;当1=>NUM4 < =“1111001”;当2=>NUM4 < =“0100100”;当3=>NUM4 < =“0110000”;当4=>NUM4 < =“0011001”;当5=>NUM4 < =“0010010”;当6=>NUM4 <=”00000 10”;当7=>NUM4 < =“1111000”;当8=>NUM4 < =“0000000”;当9=>NUM4 < =“0010000”;当别人= > num1 < =“1111111”;案例;十二月10000日是当0=> num5 < =“1000000”;当1=> num5 < =“1111001”;当2=> num5 < =“0100100”;当3=> num5 < =“0110000”;当4=> num5 < =“0011001”;当5=> num5 < =“0010010”;当6=> num5 < =“00000 10”;当7=> num5 < =“1111000”;当8=> num5 < =“0000000”;当9=> num5 < =“0010000”;当别人= > num1 < =“1111111”;案例;最后如果;结束进程;端架构;波形存储模块5、提取高8位图书馆的IEEE;使用ieee.std_logic_1164.all;使用ieee.std_logic_arith.all;使用ieee.std_logic_unsigned.all;实体转换为端口(zh_in:在std_logic_vector(19到0);zh_out:出std_logic_vector(7到0));终端实体;是建筑功能的转换开始过程(zh_in)开始zh_out(7)< = zh_in(19);an _ out (6) < = zh _ in (18)._ out (5)) = zh _ in (17)._ out) (4) = zh _ in (16).an _ out (3) < = zh _ in (15)._.) (2) < = zh _ in (14)._ out) (1) < = zh _ in (13).an _ out (0) < = zh _ in (12).end process;end architecture.6、方波生成library ieee;use ieee.std _ logic _ 1164.all.use ieee.std _ logic _ arith.all.use ieee.std _ logic _ unsigned.all.the entity fangboport (fb _ in std _ logic.in _ fbclk std logic;for all _ out std _ logic _ vector (7 downto 0). end entity.the architecture of fangbo funcbeginprocess for _, fbclk)beginif fbclk'event and fbclk =' 1 '.for i in 0 to 7 loopfor _ out (i) < = fb _.end loop;end if;end process;end architecture.7、四路选通library ieee;use ieee.std _ logic _ 1164.all.use ieee.std _ logic _ arith.all. use ieee.std _ logic _ unsigned.all. the company xuanzeport (xzmaichong: in std _ logic.input1: in std _ logic _ vector (7 downto 0). input2: in std _ logic _ vector (7 downto 0). input3: in std _ logic _ vector (7 downto 0). input4: in std _ logic _ vector (7 downto 0). output: out std _ logic _ vector (7 downto 0). end entity.the architecture of xuanze funcsignal count: integer range 0 to 3).beginprocess (xzmaichong)beginif xzmaichong'event and xzmaichong =' 1 '. count = count + 1.end if;if count = 0 thenoutput = input1.elsif count = 1 then output = input2. elsif count = 2 then output = input3. elseoutput = input4.end if;end process;end architecture.。

简易信号发生器设计

简易信号发生器设计

随着电子技术的飞快发展,单片机也应用得越来越广泛,基于单片机的智能仪器的设计技术不断成熟。

单片机构成的仪器具有高可靠性,高性价比。

单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。

利用单片机采用程序设计方法来产生波形,线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强等优点,而且还能对波形进行细微的调整,改良波形,易于程序控制。

只要对电路稍加修改,调整程序,就能实现功能的升级。

本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、梯形波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,并通过按键来控制四种波形的类型选择。

本次设计主要由信号发生模块、数模转换模块和仿真模块。

关键词 AT89C52单片机,DAC0832,独立式键盘,Proteus,Keil绪论---------------------------------------------------------------------- 1一、设计概述------------------------------------------------------------ 21.1设计目标和要求------------------------------------------------ 21.2设计分析------------------------------------------------ --------- 21.3设计方案------------------------------------------------ --------- 2二、整体设计论述----------------------------------------------------- 3三、硬件设计---------------------------------------------------------- 33.1 硬件电路连接图---------------------------------------------- 43.2 主要芯片介绍------------------------------------------------ 53.2.1 单片机AT89C51 --------------------------------------- 53.2.2 DAC0832数模转换器---------------------------------- 73.3 硬件模块-------------------------------------------------------- 83.1.1 单片机最小系统-------------------------------------- 83.1.2 独立式键盘--------------------------------------------- 83.1.3 数模转换电路------------------------------------------ 9四、软件设计--------------------------------------------------------- 104.1 主流程图的设计----------------------------------------------- 104.2 子程序的设计----------------------------------------------- 104.2.1 正弦波的产生---------------------------------------- 104.2.2 方波的产生------------------------------------------ 124.2.3 三角波的产生--------------------------------------- 124.2.4 锯齿波的产生----------------------------------------- 134.2.5延时函数的产生------------------------------------- 144.2.6 中断程序---------------------------------------------- 154.2.7 主程序------------------------------------------------- 15五、应用软件----------------------------------------------------------- 175.1 KeilC51 -------------------------------------------------------- 175.2 Protues -------------------------------------------------------- 18六、调试结果----------------------------------------------------------- 186.1 代码调试------------------------------------------------------ 186.2 仿真调试------------------------------------------------------ 18七、收获体会--------------------------------------------------------- 23八、参考文献---------------------------------------------------------- 24绪论在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域里,经常需要用到各种各样的信号波形发生器。

单片机简易信号发生器课程设计

单片机简易信号发生器课程设计

单片机简易信号发生器课程设计
单片机简易信号发生器是一种基于单片机技术的电子设备,它可以产生各种不同的信号波形,如正弦波、方波、三角波等。

在电子工程领域中,信号发生器是一种非常重要的测试仪器,它可以用于测试各种电子设备的性能和参数,如放大器、滤波器、振荡器等。

在本次课程设计中,我们将使用单片机技术设计一款简易的信号发生器。

首先,我们需要选择一款适合的单片机芯片,如AT89C51、PIC16F877A等。

然后,我们需要编写相应的程序代码,实现信号波形的产生和输出。

在程序设计中,我们可以使用定时器和计数器来实现不同频率的信号波形产生。

例如,我们可以使用定时器产生一个固定频率的方波信号,然后通过改变计数器的值来改变方波的占空比。

同样地,我们也可以使用定时器和计数器来产生正弦波和三角波等不同形式的信号波形。

在硬件设计方面,我们需要选择适合的电路元件来实现信号波形的输出。

例如,我们可以使用DAC芯片来将数字信号转换为模拟信号,然后通过放大器和滤波器来输出信号波形。

当然,我们也可以选择其他的电路方案来实现信号波形的输出。

单片机简易信号发生器是一款非常有用的电子设备,它可以用于各种电子设备的测试和调试。

通过本次课程设计,我们可以学习到单
片机技术的应用和信号发生器的原理,提高我们的电子技术水平。

简易信号发生器设计

简易信号发生器设计

《CPLD/FPGA原理及应用》设计报告题目:简易信号发生器学院:电子信息与电气工程学院专业:电子信息工程班级:姓名:学号:2016 年6月20日引言FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC设计验证的技术主流。

这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。

一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

FPGA一般来说比ASIC(专用集成电路)的速度要慢,实现同样的功能比ASIC电路面积要大。

但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。

厂商也可能会提供便宜的但是编辑能力差的FPGA。

因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,目录第一章设计要求 (4)第二章关于简易信号发生器 (4)第三章设计思路 (4)第四章设计内容及步骤 (5)第五章顶层原理图的设计与步骤 (15)第六章仿真 (17)第七章对设计过程的总结(方案选择与调试) (19)第八章对设计的体会与感想 (20)第九章参考文献 (21)第一章设计要求利用DDS原理通过DAC0832设计出能产生正弦波、锯齿波、三角波、方波等波形的简易信号发生器,要求频率可调。

VHDL简易信号发生器

VHDL简易信号发生器

中国计量学院光学与电子科技学院课程设计报告课程设计名称集成电路课程设计系电科系专业班级学号姓名成绩指导老师2012 年月日概述函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等波形的电路。

函数信号发生器在电路实验和设备检测中具有十分广泛的用途。

现在我们通过对函数信号发生器的原理以及构成设计一个能变换出三角波、正弦波、方波的简易发生器。

本设计采用FPGA来设计制作多功能信号发生器。

在实验室用EDA完成设计并进行引脚锁定下载连接用SignalTap II Logic Analyer调试。

一、设计原理本设计由信号产生,信号选择,信号控制输出三大模块组合而成。

其中信号产生模块有:三角波模块、方波模块、正弦波模块。

本设计采用K0~K2这三个按键为信号选择开关,选择信号产生模块输出的信号。

其控制模块(SIG_CONTROL)是由数据选择器实现对以上三种信号的选择,并产生相应波形。

其结构框图如下:图1.信号发生器结构框图二、设计原理概述(1) 函数信号发生器的结构:三角波信号、方波信号、正弦信号的发生器各一个,数据选择器。

(2) VHDL 顶层设计。

(3) SignalTap II Logic Analyer的仿真分析。

(4) 顶层文件在FPGA中实现,通过外加按键控制波形输出,三个波形数据由三个信号发生模块(delta—三角波、square—方波、sin—正弦波)提供,信号发生器时钟由实验箱提供。

三、设计步骤(1)三角波、方波和正弦波源文件的编写并把VHDL程序转换成原理图。

(2) 数据选择器的源文件编写,并把VHDL程序转换成原理图。

(3) 用原理图完成函数发生器的设计。

(4) 编译完成后,建立 SingnalTap‖的工程文件。

(5) 锁定引脚,下载连接。

(6) 运行程序并观察结果。

(7)记录数据完成报告。

四、软件设计流程及源程序代码4.1 软件设计流程:1.设计原理图。

信号发生器_(正弦波,方波,三角波)51单片机_C语言代码[1]

信号发生器_(正弦波,方波,三角波)51单片机_C语言代码[1]

/**************************************//* 信号发生器(正弦波,方波,三角波)*//*************************************/#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit cs=P2^0; //tlc5615片选端口sbit clk=P2^1; //tlc5615时钟线sbit din=P2^2; //tlc5615传输端口sbit key1=P1^0;sbit key2=P1^1; //按键的单片机接口uchar keydat;uchar flag; //波形发生终止信号的标志位一旦被置零立马停止发信号uchar flagsqu; //方波高低电平控制为(运用定时器1中断控制)uchar m,num;uchar dat=0xff;uchar code tosin[141]={ //正弦波的编码0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7e,0x7f,0x80,0x7f,0x7e,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00};void delay(uchar z) //延时函数{uchar x,y;for(x=0;x<110;x++)for(y=z;y>0;y--);}void prepare() //tlc5615的初始化{cs=1;din=1;clk=0;cs=0; //cs的上升沿和下降沿必须在clk 为低时进?}/* 用中断来产生方波void Squtranslator(){TR1=1; //启动定时器1 控制高低电平的持续时间占空比do{do{_wave=0;}while((!flagsqu) && flag==1);//如果一旦终止信号的//产生可以立马退出循环flagsqu=0;do{_wave=1;}while((!flagsqu) && flag==1);flagsqu=0;}while(flag);flag=1;TR1=0;}*/void Squtranslator() //方波函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(200); //使高低电平持续一段时间if(dat1==0)dat1=0x7f; //完成了0和0x7f之间的替换elsedat1=0;}while(flag);}}void Tratranslator() //锯齿波的发生函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1--;}while(flag && dat1); //一旦有终止信号就可以停止do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1++;}while(flag && (!(dat1==0x7f)));}}void Sintranslator(uchar wave[],uchar num )//正弦波的转换函数{uchar i,j;uchar dat1;do{for(i=0;i<num;i++){prepare();dat1=wave[i]; //打开片选开始工作for(j=0;j<12;j++){din=(bit)(dat1>>7); //将数据的最高位赋给dinclk=1;dat1=dat1<<1; //一位位的传输clk=0;if(flag==0)break;}cs=1; //cs的上升沿和下降沿必须在clk为低时进行delay(1); //稍加延时if(flag==0)break;}}while(flag); //等待控制键的暂停}void keyscan() //切换功能按键返回键值函数{uchar i;for(i=0;i<4;i++){if(key1==0){delay(10);if(key1==0){keydat++;do{}while(!key1); //松手检测if(keydat==4)keydat=1;//加满回零处理}}}}void keycountrl() //切断输出控制函数{if(key2==0){delay(10);if(key2==0){flag=0;do{}while(!key2); //松手检测}}}void main (){uchar temp;TMOD=0x01; //确定定时器的工作方式TH0=(65536-50000)/256; //给定时器0赋予初值TL0=(65536-50000)%256;EA=1; //开总中断ET0=1; //开启定时器0中断TR0=1;while(1){do{switch(keydat){case 1:flag=1;do{Sintranslator(tosin,141);}while(flag);break;case 2: flag=1;do{Tratranslator();}while(flag);break;case 3: flag=1;do{Squtranslator();}while(flag);break;default:break;}}while(flag);temp=keydat; //装载键值while(keydat==temp); //在这里等待键值的改变}}void Time0() interrupt 1{TH0=(65536-50000)/256; //定时器0用来扫描按键不断地扫描dTL0=(65536-50000)%256;num++;if(num==4){keyscan();keycountrl();num=0;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中北大学硬件大型实验任务书2010/2011 学年第 一 学期学 专院 : 业:电子与计算机科学技术学院 计算机科学与技术 学 号 :学 生 姓 名: 设 计 题 目:多功能电子表设计起 迄 日 期: 设 计 地 点: 指 导 教 师: 系 主 任 :月日~月 日教学七楼八层单片机原理实验室下达任务书日期: 2010 年 12 月 6 日硬 件 大 型 实 验 任 务 书1.设计目的:通过该大型实验,使学生根据所学的单片机知识和数字电子技术知识,能针 对一个简单的控制项目,做出分析,设计其硬件、软件,达到预期的控制目的。

2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等) :设计内容: (1) 设计多功能电子表的软硬件,完成如下功能。

(2) 能设定、修改现在的日期和时间,平时显示时间。

(3) 可以设定该表的工作模式:显示时间、显示日期、跑表、倒计时表、设定 时间报警表(时间长度) 、事件提醒功能(根据日期、时间) 、闹钟(每日 均有、可取消) (4) 跑表要求精确到百分秒,能连续记录 60 个运动员的时间记录。

(5) 电子表要有节日问候,如:元旦快乐、HAPPY NEW YEAR 等 。

设计要求 充分了解一个实用设备设计的一般过程,从拿到题目,总体方案设计到全系 统设计完成,达到实用化,使同学掌握硬件设计的全过程。

通过该系统的设计, 使学生掌握单片机定时器的使用和单片机控制系统的组成、控制方式、以及控制 器件的使用,在设计期间,复习并充分掌握数字电子技术知识和单片机技术在具 体工作中的使用。

理解并掌握单片机键盘的控制方式和按键处理。

3.设计工作任务及工作量的要求〔包括硬件大型实验计算说明书(论 文)、图纸、实物样品等〕 :组长:与同组同学协商完成本设计的实现方法和原理,合理分配所设计的单 片机资源,定义数据字典及存储单元的分配,确定单片机外部扩展的器件的访问 方法;主要完成硬件电原理及各部分的控制原理设计;以及将全组其他同学的软 件进行连接,完成整个设计任务。

组员一:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法, 编程序设计该系统中定时器的使用,合理安排定时器的定时时间,使得能满足该 系统的最小定时任务,同时与同组其他配合,完成系统中其他的定时任务。

组员二:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法, 设计不同功能的显示程序,以及事件提醒功能的实现。

组员三:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法, 编程实现用户按键的处理(包括按键的识别,功能的实现) ,各种不同功能的切换 和设置工作。

组员四:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法, 编程实现日期的计算、节日问候以及跑表的实现。

在设计内容完成的条件下,书写硬件大型试验报告硬 件 大 型 实 验 任 务 书4.主要参考文献:5.设计成果形式及要求:实验结果为在实验系统支持下,能运行的一个完整系统。

6.工作计划及进度:年 月 日 ~ 月 日 ~ 月 月 月 日 ~ 日 ~ 日 ~ 月 日 月 日 月 日 月 日 月 日 答辩或成绩考核系主任审查意见:签字: 年 月 日中北大学硬件大型实验任务书2010/2011 学年第 一 学期学 专院 : 业:电子与计算机科学技术学院 计算机科学与技术 学 号 :学 生 姓 名: 设 计 题 目:全自动电脑打铃器设计起 迄 日 期: 设 计 地 点: 指 导 教 师: 系 主 任 :月日~月 日教学七楼八层单片机原理实验室下达任务书日期: 2010 年 12 月 6 日硬 件 大 型 实 验 任 务 书1.设计目的:通过该大型实验,使学生根据所学的单片机知识和数字电子技术知识,能针 对一个简单的控制项目,做出分析,设计其硬件、软件,达到预期的控制目的。

2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等) :设计内容 (1) 设计全自动电脑打铃器的软硬件,完成如下功能。

(2) 能根据提前设定的打铃点,到时打铃。

(3) 一天之中能设定最多 30 个固定打铃点(每天都有)和 5 个临时打铃点 (只有一次) 。

(4) 可以设定打铃屏蔽点,屏蔽点只能屏蔽固定打铃,而不能屏蔽临时打 铃。

(5) 可以设定铃响时间(10 秒----60 秒) ,预置为 30 秒。

(6) 星期天、节假日不能打铃。

(7) 能设定现在的日期和时间,平时显示时间。

设计要求 充分了解一个实用设备设计的一般过程,从拿到题目,总体方案设计到全系 统设计完成,达到实用化,使同学掌握硬件设计的全过程。

通过该系统的设计, 使学生掌握单片机定时器的使用和单片机控制系统的组成、控制方式、以及控制 器件的使用,在设计期间,复习并充分掌握数字电子技术知识和单片机技术在具 体工作中的使用。

理解并掌握单片机键盘的控制方式和按键处理。

3.设计工作任务及工作量的要求〔包括硬件大型实验计算说明书(论 文)、图纸、实物样品等〕 :组长:与同组同学协商完成本设计的实现方法和原理,合理分配所设计的单 片机资源,定义数据字典及存储单元的分配,确定单片机外部扩展的器件的访问 方法;主要完成硬件电原理及各部分的控制原理设计;以及将全组其他同学的软 件进行协调与连接,完成整个设计任务。

组员一:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法及 各部件的访问方法,编制该系统中定时器的使用,实现系统中时间、日期的正确 变化,完成系统中其他的定时任务。

组员二:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法, 设计不同功能的显示程序,以及固定打铃点、临时打铃点的判断及打铃的控制。

组员三:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法, 编程实现用户按键的处理(包括按键的识别,功能的实现) ,实现临时打铃点的设 置、固定打铃点的屏蔽设置以及打铃时间长度的设置等。

组员四:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法, 编程实现日期的计算、周六、周日以及节假日的确定。

在设计内容完成的条件下,书写硬件大型试验报告硬 件 大 型 实 验 任 务 书4.主要参考文献:5.设计成果形式及要求:实验结果为在实验系统支持下,能运行的一个完整系统。

6.工作计划及进度:年 月 日 ~ 月 日 ~ 月 月 月 日 ~ 日 ~ 日 ~ 月 日 月 日 月 日 月 日 月 日 答辩或成绩考核系主任审查意见:签字: 年 月 日中北大学硬件大型实验任务书2010/2011 学年第 一 学期学 专院 : 业:电子与计算机科学技术学院 计算机科学与技术 学 号 :学 生 姓 名: 设 计 题 目:全自动洗衣机控制器起 迄 日 期: 设 计 地 点: 指 导 教 师: 系 主 任 :月日~月 日教学七楼八层单片机原理实验室下达任务书日期: 2010 年 12 月 6 日硬 件 大 型 实 验 任 务 书1.设计目的:通过该大型实验,使学生根据所学的单片机知识和数字电子技术知识,能针 对一个简单的控制项目,做出分析,设计其硬件、软件,达到预期的控制目的。

2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等) :设计内容 (1) 设计全自动洗衣机的硬件电路和控制程序,实现如下功能。

(2) 实现全自动洗衣机的洗涤控制,其过程为:加水——》洗涤——》排水— —》甩干——》加水——》漂洗——》排水——》甩干——》加水——》 漂洗——》排水——》甩干——》报警。

(3) 实现全自动洗衣机洗涤电机的正反向旋转,在洗涤时,正向旋转 1 分钟, 停止 30 秒,反向旋转 1 分钟,停止 30 秒,再正向旋转,重复前面的过程, 直到定时时间到停止。

(4) 实现全自动洗衣机的各项洗涤定时控制,可以通过键盘设定此时间。

(5) 在各项控制时,要检测加水的高度、是否排水排水干净等,组成闭环控制。

(6) 洗衣机可以人工设定其工作方式:手工操作、自动操作。

设计要求 充分了解一个实用设备设计的一般过程,从拿到题目,总体方案设计到全系 统设计完成,达到实用化,使同学掌握硬件设计的全过程。

通过该系统的设计, 使学生掌握单片机定时器的使用和单片机控制系统的组成、控制方式、以及控制 器件的使用,在设计期间,复习并充分掌握数字电子技术知识和单片机技术在具 体工作中的使用。

3.设计工作任务及工作量的要求〔包括硬件大型实验计算说明书(论 文)、图纸、实物样品等〕 :组长:与同组同学协商完成本设计的实现方法和原理,合理分配所设计的单片机资源, 定义数据字典及存储单元的分配,确定单片机外部扩展的器件的访问方法;主要完成硬件电 原理及各部分的控制原理设计;以及将全组其他同学的软件进行协调与连接,完成整个设计 任务。

组员一:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法及各部件的访 问方法,编制该系统中定时器的使用,实现系统中时间的正确变化,完成系统中其他的定时 任务。

组员二:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法,设计洗衣机 的控制程序,完成一次洗衣过程的完整控制。

组员三:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法,编程实现用 户按键的处理(包括按键的识别,功能的实现) ,实现各种工作方式的设置和切换等。

组员四:充分掌握所设计系统的硬件原理,理解系统中各功能的实现方法,编程水位检 测、排水是否完成等检测,以支持洗衣机的其他控制操作。

在设计内容完成的条件下,书写硬件大型试验报告硬 件 大 型 实 验 任 务 书4.主要参考文献:5.设计成果形式及要求:实验结果为在实验系统支持下,能运行的一个完整系统。

6.工作计划及进度:年 月 日 ~ 月 日 ~ 月 月 月 日 ~ 日 ~ 日 ~ 月 日 月 日 月 日 月 日 月 日 答辩或成绩考核系主任审查意见:签字: 年 月 日中北大学硬件大型实验任务书2010/2011 学年第 一 学期学 专院 : 业:电子与计算机科学技术学院 计算机科学与技术 学 号 :学 生 姓 名: 设 计 题 目:简易信号发生器设计起 迄 日 期: 设 计 地 点: 指 导 教 师: 系 主 任 :月日~月 日教学七楼八层单片机原理实验室下达任务书日期: 2010 年 12 月 6 日硬 件 大 型 实 验 任 务 书1.设计目的:通过该大型实验,使学生根据所学的单片机知识和数字电子技术知识,能针 对一个简单的控制项目,做出分析,设计其硬件、软件,达到预期的控制目的。

2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等) :设计内容 (1) 设计简易信号发生器的硬件电路和控制程序,实现如下功能。

相关文档
最新文档