信号发生器程序

合集下载

DSP课程设计——信号发生器(方波)

DSP课程设计——信号发生器(方波)

成绩评定表课程设计任务书目录1 绪论 (1)1.1 设计背景 (1)1.2 设计目的 (2)1.3 设计任务 (2)2 设计过程 (3)2.1 设计原理 (3)2.2 XF引脚周期性变化 (3)2.3 子程序的调用 (4)3 程序代码 (5)3.1 源程序 (5)3.2SDRAM初始化程序 (7)3.3 方波程序连接命令文件 (9)4 调试仿真运行结果分析 (10)4.1 寄存器仿真结果 (10)4.2 模拟输出仿真 (12)5.设计总结 (13)参考文献 (13)信号发生器(方波)1 绪论1.1 设计背景数字信号处理是20世纪60年代,随着信息学科和计算机学科的高速发展而迅速发展起来的一门新兴学科。

它的重要性日益在各个领域的应用中表现出来。

其主要标志是两项重大进展,即快速傅里叶变换(FFT)算法的提出和数字滤波器设计方法的完善。

数字信号处理是把信号用数字或符号表示成序列,通过计算机或通用(专用)信号处理设备,用数值计算方法进行各种处理,达到提取有用信息便于应用的目的。

例如:滤波、检测、变换、增强、估计、识别、参数提取、频谱分析等。

数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。

因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。

而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。

数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(DSP)和专用集成电路(ASIC)等。

数字信号处理的研究方向应该更加广泛、更加深入.特别是对于谱分析的本质研究,对于非平稳和非高斯随机信号的研究,对于多维信号处理的研究等,都具有广阔前景。

数字信号处理技术发展很快、应用很广、成果很多。

多数科学和工程中遇到的是模拟信号。

以前都是研究模拟信号处理的理论和实现。

模拟信号处理缺点:难以做到高精度,受环境影响较大,可靠性差,且不灵活等。

数字系统的优点:体积小、功耗低、精度高、可靠性高、灵活性大、易于大规模集成、可进行二维与多维处理。

信号发生器程序

信号发生器程序
CJNE A,#0FFH,TRI3 ;判断第三象限是否输出完毕
TRI4: MOV DPTR,#9000H ;第四象限输出负值
MOV A,52H
MOVX @DPTR,A
DEC 52H ;输出值减1
MOVX @DPTR,A
ACALL WAVE_DELAY ;波形延时函数
MOV 51H,#00H ;51H单元用于存放方波的输出值
MOV DPTR,#9000H
MOV A,51H ;51H单元用于存放方波的输出值
GO2: CJNE R5,#02H,DIS_BOOT ;如果按下的是4按键就产生正弦波
AJMP SIN ;跳到正弦波发生函数
;锯齿波发生函数
SAW: MOV DPTR,#8004H ;8004H是数码管的段选地址
GO7: CJNE R5,#02H,SAW ;如果按下的是4按键就产生正弦波
AJMP SIN ;跳到正弦波发生函数
;方波发生函数
SQU: MOV DPTR,#8004H ;8004H是数码管的段选地址
ACALL KEY_EXAM ;在显示启动界面的同时检测键盘
JZ DIS_BOOT ;如果没有其他命令键按下就一直显示启动界面
ACALL DELAY
ACALL KEY_EXAM
JZ DIS_BOOT ;如果没有其他命令键按下就一直显示启动界面
GO0: CJNE R5,#05H,GO1 ;如果按下的是2按键就产生方波
AJMP SQU ;跳到方波发生函数
GO1: CJNE R5,#09H,GO2 ;如果按下的是3按键就产生三角波
AJMP TRI ;跳到三角波发生函数
MOVX @DPTR,A ;送段码值

TG39视频信号发生器操作指导书

TG39视频信号发生器操作指导书

设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书(2).TV线与仪器的连接:TV线有两种接头,如下图所示:(图一)该模式端口一般应用于美国等国家,所支持的电视制式为NTSC,直接将信号线插入电视接头即可。

设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书(3).S-VIDEO线与仪器的连接:(大部分电视机都不带S-VIDEO端子)S-VIDEO的视频与声音是分开传输的,下面介绍的是视频线的连接,大部分会同AV端口共用声音线端口。

(4).SCART线与仪器的连接: SCART端口视频与声音共用一根线。

注:在测试SCART端口时需要注意,SCART(RGB)和SCART(CVBS)信号在亮度和重显率两个方面要分别测试设计中心DQA室生效日期:2014-11-04TG39视频信号发生器操作指导书2.各端口彩色制式的设置:(1)彩色电视制式的简单介绍:彩色电视制式是在满足黑白电视技术标准的前提下研制的。

为了实现黑白和彩色信号的兼容,色度编码对副载波的调制有三种不同方法,形成了三种彩色电视制式;即NTSC制、SECAM制和PAL制(对于NTSC制,由于选用的色副载波的频率不同,还可分为NTSC4.43和3.58两种)。

三种彩色电视制式的主要国家和地区:彩色电视机的制式现状 NTSC制:中国、墨西哥、日本、台湾、加拿大等国和地区采用;PAL制:德国、中国、香港、英国、意大利、荷兰、中东一带等国和地区采用;SCEAM制:中国、前苏联及东欧和非洲各国采用。

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.。

波形信号发生器电路及程序设计

波形信号发生器电路及程序设计

波形信号发生器电路及程序设计一、实验目的1、了解D/ A 转换与单片机的接口方法。

2、了解D/ A 转换芯片0832 的性能及编程方法。

3、了解单片机系统中利用D/ A 转换芯片产生各种波形信号的基本方法。

二、实验内容1.实验原理图:2、实验内容利用0832 输出一个从-5V 开始逐渐升到0V 再逐渐升至5V,再从5V 逐渐降至0V,再降至-5V 的锯齿波电压。

三、程序程序清单:ORG 0740HHA6S: MOV SP,#53HHA6S1: MOV R6,#00HHA6S2: MOV DPTR,#8000H MOV A,R6 MOVX @DPTR,A MOV R2,#0BH LCALL DELAY INC R6 CJNER6,#0FFH,HA6S2HA6S3: MOV DPTR,#8000H DEC R6 MOV A,R6 MOVX @DPTR,A MOV R2,#0BH LCALL DELAY CJNE R6,#00H,HA6S3 SJMP HA6S1DELAY: PUSH 02HDELAY1: PUSH 02HDELAY2: PUSH 02HDELAY3: DJNZ R2,DELAY3 POP 02H DJNZ R2,DELAY2 POP 02H DJNZ R2,DELAY1 POP 02H DJNZ R2,DELAY RET END 四、实验步骤①把D/A 区0832 片选CS 信号线接至译码输出插孔Y0。

②将+12V 插孔、12V 插孔通过导线连到外置电源上,如果电源内置时,则+12V,-12V 电源已连好。

③将D/A 区WR 插孔连到BUS3 区XWR 插孔。

④将电位器W2 的输出VREF 连到D/A 区的VREF 上,电位器W2 的输VIN 连到+12V 插孔,调节W2 使VREF 为+5V。

⑤用8芯排线将D/A 区D0D7 与BUS2 区XD0XD7 相连。

⑥在P.....状态下,从起始地址0740H 开始连续运行程序(输入0740 后按EXEC 键)。

基于单片机制作高频DDS信号发生器

基于单片机制作高频DDS信号发生器

基于单片机制作高频DDS信号发生器在现代科学和电子技术的不断进步下,数字信号发生器(DDS)已经成为了频率控制和生成的重要工具。

尤其是高频DDS信号发生器,其在雷达、通信、电子对抗等领域的应用具有不可替代的地位。

本文将介绍如何使用单片机制作高频DDS信号发生器。

一、DDS技术概述DDS,全称Direct Digital Synthesizer,即直接数字合成器,其工作原理是将数字信号通过数模转换器(DAC)转换成模拟信号。

DDS 技术的核心是相位累加器,它将输入的数字信号的相位进行累加,从而生成新的频率信号。

二、硬件设计1、单片机选择:本设计选用具有高速、低功耗、高集成度的单片机,如STM32F4系列。

2、频率控制字:通过设置频率控制字(FCW),可以控制输出信号的频率。

频率控制字由一个16位二进制数组成,表示了相位累加的步进大小。

3、存储器:使用Flash存储器存储预设的频率波形数据。

4、DAC:数模转换器将存储器中的波形数据转换成模拟信号。

本设计选用具有高分辨率、低噪声、低失真的DAC芯片。

5、滤波器:使用LC滤波器对DAC转换后的信号进行滤波,以得到更加纯净的信号。

三、软件设计1、相位累加器:相位累加器是DDS的核心,它将输入的数字信号的相位进行累加,从而生成新的频率信号。

2、波形查找表:将所需的波形数据存储在波形查找表中,通过查表的方式获取波形数据,可以大大提高DDS的工作效率。

3、控制逻辑:控制逻辑负责处理输入的控制信号,如启动、停止、频率控制字等。

4、通信接口:为了方便远程控制,需要设计通信接口,如SPI、I2C 等。

四、性能测试1、频率范围:测试DDS输出信号的频率范围是否满足设计要求。

2、频率分辨率:测试DDS输出信号的频率分辨率是否达到设计要求。

3、信号质量:测试DDS输出信号的信噪比、失真度等指标是否满足设计要求。

4、稳定性:长时间运行后,测试DDS输出信号的频率是否稳定。

5、远程控制:测试通信接口是否正常工作,可以通过计算机或者其他控制器对DDS进行远程控制。

DDS信号发生器设计和实现

DDS信号发生器设计和实现

DDS信号发生器设计和实现一、引言DDS(Direct Digital Synthesis)是一种基于数字信号处理技术的信号发生器设计方法。

DDS信号发生器是通过数字的方式直接生成模拟信号,相比传统的方法,具有频率稳定、调制灵活、抗干扰能力强等优势,广泛应用于频率合成、通信系统测试、医疗设备、雷达系统等领域。

本文将介绍DDS信号发生器的设计和实现。

二、DDS信号发生器的原理1.相位累加器:负责生成一个连续增加的相位角,通常以一个固定精度的二进制数表示。

2.频率控制器:用于控制相位累加器的相位角速度,从而控制信号的频率。

3.数字到模拟转换器:将相位累加器的输出转换为模拟信号。

4.系统时钟:提供时钟信号给相位累加器和频率控制器。

三、DDS信号发生器的设计步骤1.确定要生成的信号的频率范围和精度需求。

2. 选择适合的数字信号处理器或FPGA进行设计。

常用的DSP芯片有AD9910、AD9858等,FPGA则可选择Xilinx、Altera等厂商的产品。

3.根据需求设计相位累加器和频率控制器,相位累加器的位数和频率控制器的速度决定了信号的精度。

4.确定数字到模拟转换器的采样率和分辨率,选择合适的D/A转换芯片。

5. 编写控制程序和信号生成算法,包括相位累加器和频率控制器的控制。

可以使用C语言、Verilog HDL等进行编程。

6.进行硬件的布局和连线,将各个组件按照设计要求进行连接。

7.进行电源和接地的设计,确保稳定的供电和减少噪声干扰。

8.进行数字信号处理器或FPGA的编程,烧录控制程序。

9.进行信号输出测试,调整参数和算法,确保生成的信号符合要求。

10.编写使用说明书和性能测试报告,并对信号发生器进行完整性和可靠性测试。

四、DDS信号发生器的实现案例以实现一个简单的正弦信号发生器为例,介绍DDS信号发生器的实现过程。

1.确定生成的正弦信号范围为1Hz~10kHz,精度为0.1Hz。

2. 选择Xilinx的FPGA芯片,根据需要设计12位的相位累加器和24位的频率控制器。

泰克信号发生器编程手册

泰克信号发生器编程手册

泰克信号发生器编程手册全文共四篇示例,供您参考第一篇示例:一、前言泰克信号发生器是一款集高精度、多功能、易操作于一体的信号发生器,具有广泛的应用领域。

本编程手册旨在帮助用户更好地了解和使用泰克信号发生器,提供详细的编程指导,使用户能够充分发挥其功能和性能,满足不同领域的需求。

二、产品概述泰克信号发生器采用先进的数字信号处理技术,具有丰富的信号发生和调制功能,可覆盖从直流到高频的广泛频率范围,支持各种信号类型的输出。

它还具备多种接口和通信方式,可与其他设备进行灵活连接和控制。

其高性能、高稳定性、高精度的特点,使其成为各种测试、调试、研发等场合不可或缺的重要工具。

三、功能特点1. 广泛的频率范围:泰克信号发生器支持从mHz量级到GHz量级的频率范围,涵盖了大部分应用场景的需求。

2. 多种信号类型:支持产生正弦波、方波、脉冲、噪声等多种信号类型,满足不同信号需求的应用。

3. 灵活的调制功能:具备多种调制方式,包括调幅、调频、调相、调制等,可模拟各种调制信号。

4. 多种接口和通信方式:支持USB、LAN、GPIB等多种接口和通信方式,与其他设备连接方便,可通过标准命令进行控制和调试。

5. 高精度、高稳定性:采用高精度的数字信号处理技术和优质的电子元件,在频率、幅度、相位等参数上具有出色的稳定性和准确性。

四、编程指南1. 软件环境准备:根据信号发生器的型号和具体的编程需求,选择相应的编程软件,并安装在PC机上。

2. 连接设置:通过USB、LAN、GPIB等接口将泰克信号发生器与PC机进行连接,并按照相应的通信协议进行设置。

3. 调用API:根据编程软件的相关接口文档,调用相应的API函数,发送指令到信号发生器,实现对其频率、幅度、相位等参数的控制。

4. 参数设置:通过API函数设置信号发生器的工作模式、频率范围、信号类型、调制方式等参数,并进行相应的校准和优化。

5. 数据传输:根据需要,将待测试的数据以文件的形式传输到信号发生器,进行信号发生和调试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(boxing==4)
{
boxing=0;
}
display();
EA=1;
}
}
}
voidbujindisplay()
{
uintbai,shi,ge;
bai=bujin1/100;
shi=bujin1%100/10;
ge=bujin1%100%10;
write_com(0x80+6);
write_date(table[bai]);
write_date('');
write_date('');
write_com(0x80+0x40+0xa);
//write_date('');
write_date('1');
write_date('0');
write_date('H');
delay(5);
write_date('Z');
delay(5);
write_date('j');
write_date('u');
write_date('c');
write_date('h');
write_date('i');
write_date('');
write_date('');
}
}
voidkeyscan()//键盘检测函数
{
if(s1==0)
{
EA=0;
delay(2);
255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};//矩形波取码
ucharcodesanjiao[64]={
0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
delay(1);
write_date(table[shi]);
delay(1);
write_date('.');
delay(1);
write_date(table[ge]);
delay(1);
}
voidbujinjiance()
{
if(s4==0)
{
delay(5);
if(s4==0)
{
while(!s4);
146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128
};//正弦波取码
ucharcodejuxing[64]={
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
{
while(!s1);
bujin1++;
if(bujin1==101)
{
bujin1=100;
}
bujindisplay();
}
}
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
bujin1--;
if(bujin1==0)
{
bujin1=1;
}
bujindisplay();
write_date('');
}
if(boxing=1)
{
write_com(0x80+7);
write_date('j');
write_date('u');
write_date('x');
write_date('i');
write_date('n');
write_date('g');
}
if(boxing==2)
h++;
if(h==1)
{
write_com(0x01);
write_com(0x80);
write_date('b');delay(1);
write_date('u');delay(1);
write_date('j');delay(1);
write_date('i');delay(1);
write_date('n');delay(1);
#include<reg52.h>//包含头文件
#include<intrins.h>
#defineucharunsigned char//宏定义
#defineuintunsignedint
sbits1=P3^4;//定义按键的接口
sbits2=P3^5;
sbits3=P3^6;
sbits4=P3^7;
sbitlcdrs=P2^3;//液晶控制位
sbitlcdrw=P2^4;
sbitlcden=P2^5;
charnum,boxing,u;//定义全局变量
intpinlv=100,bujin=1,bujin1=1;
ucharcode table[]="0123456789";//定义显示的数组
ucharcode table1[]="frequence:boxing:";
if(s1==0)
{
while(!s1);
pinlv+=bujin;
if(pinlv>1000)
{
pinlv=1000;
}
display();
m=65534-(156250/pinlv);
a=m/256;
b=m%256;
EA=1;
}
}
if(s2==0)
{
delay(5);
if(s2==0)
{
EA=0;
for(a=xms;a>0;a--)
for(b=110;b>0;b--);
}
voidwrite_com(ucharcom)//写命令函数
{
lcdrs=0;
lcdrw=0;
lcden=0;
P0=com;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
voidwrite_date(uchardate)//写数据函数
}
voidinitclock()//时钟初始化
{
uinti;
TMOD=0x01;
TH0=a;
TL0=b;
EA=1;
ET0=1;
TR0=1;
write_com(0x80+0x40);
for(i=0;i<9;i++)
{
write_date(table1[i]);
delay(5);
}
write_com(0x80);
write_date('Z');
delay(5);
if(boxing==0)
{
write_com(0x80+7);
write_date('s');
write_date('i');
write_date('n');
write_date('');
write_date('');
write_date('');
write_date(':');delay(1);
bujin1=bujin;
bujindisplay();
}
if(h==2)
{
h=0;
bujin=bujin1;
init_lcd();
initclock();
display();
}
}
}
if(h==1)
{
if(s1==0)
{
delay(5);
if(s1==0)
248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
};//三角波取码
ucharcodejuchi[64]={
0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,
}
void display()//显示函数
{
ucharqian,bai,shi,ge;
qian=pinlv/1000;
bai=pinlv%1000/100;
shi=pinlv%1000%100/10;
ge=pinlv%1000%100%10;
write_com(0x80+0x40+0x08);
write_date(table[qian]);
相关文档
最新文档