产生10Hz--1KHz方波的单片机程序

产生10Hz--1KHz方波的单片机程序
产生10Hz--1KHz方波的单片机程序

#include

#include

//#include

#include"stdio.h"

#define uchar unsigned char

#define uint unsigned int

sbit p20=P2^0;

sbit wela = P2^7;

sbit dula = P2^6;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0};

uchar bdata flag; // sbit flag1=flag^0; // sbit flag2=flag^1; //

uchar i=0,select;

uchar TH1_TMP,TL1_TMP;

uchar HZ[4]={0,0,0,0};

uchar temp0,temp1=17,N=0,control,count=0; uint hz1=0,b=17;

void display();

void init();

void main()

{

init();

select=0;

// TR1=1;

while(1)

{

switch(temp1)

{

case 0xee:b=1;break;

case 0xde:b=2;break;

case 0xbe:b=3;break;

case 0x7e:b=4;break;

case 0xed:b=5;break;

case 0xdd:b=6;break;

case 0xbd:b=7;break;

case 0x7d:b=8;break;

case 0xeb:b=9;break;

case 0xdb:b=0;break; //原为s10,此处代表数字0

case 0x7b:b=12;break; //s11为确认键

default:break;

}

if(b!=17) //判断有键按下

{

temp1=17;

N=N+1; //判断共有几次键按下

if(b==12) //确认键按下

{

if(hz1<=1000&&hz1>=10) //输入的方波频率在10hz~1k hz范围内

{

TH1=(65536-(500*(1000/hz1)))/256;

TL1=(65536-(500*(1000/hz1)))%256;

TH1_TMP=TH1;

TL1_TMP=TL1;

// TH1=(65536-1000)/256;

// TL1=(65536-1000)%256;

TR1=1;

N=0;

}

else

{

//输入频率超出范围即大于1K HZ或者小于10HZ ,则无效,均清0

hz1=0;

N=0;

b=17;

HZ[3]=0;

HZ[2]=0;

HZ[1]=0;

HZ[0]=0;

}

}

else

{

if(N==1)

{

HZ[3]=0;

HZ[2]=0;

HZ[1]=0;

HZ[0]=b;

hz1=b;

} else

if(N<=4)

{

hz1=hz1*10+b;

HZ[3]=HZ[2];

HZ[2]=HZ[1];

HZ[1]=HZ[0];

HZ[0]=b;

}

}

b=17;

}

}

}

////////////////////////////////////////////////////////////////////////////

////////////////////////// /////////////////////////////////////////////////////

void init()

{

P3=0x0f;

TMOD=0x01|0x10;

EA=1;

ET1=1;

ET0=1;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TR0=1;

// TH1=(65536-1000)/256;

// TL1=(65536-1000)%256;

// TR1=1;

}

/////////////////////////////////////////////////////////////////////////////////////////

void timer0() interrupt 1 //定时器0 {

count=count+1;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

if(count==10)

{

if(flag1==0)

{

if(P3!=0x0f)

{

temp0=P3;

flag1=1;

P3=0xf0;

}

}

else

{

if(P3!=0xf0)

{

temp1=temp0|P3;

}

flag1=0;

P3=0x0f;

}

count=0;

}

P0=0XFF;

wela=1;

P0 = ~( 1<<(5-select) );

wela=0;

dula=1;

P0=table[HZ[select]];

dula=0;

select++;

if(select==4)

select=0;

}

/////////////////////////////////////////////////////////////////

void timer1() interrupt 3 //定时器1 {

// hz1=100;

// select=1;

// hz1=120;

TH1=TH1_TMP;

TL1=TL1_TMP;

// TH1=(65536-1000)/256;

// TL1=(65536-1000)%256;

p20=~p20;

}

基于MCS-51单片机的频率可调的方波发生器设计

基于MC51单片机的频率可调的方波信号发生器 用单片机产生频率可调的方波信号。输出方波的频率范围为1Hz-200Hz,频率误差比小于0.5%。要求用“增加”、“减小”2 个按钮改变方波给定频率,按钮每按下一次,给定频率改变的步进步长为1Hz,当按钮持续按下的时间超过2 秒后,给定频率以10 次/秒的速度连续增加(减少),输出方波的频率要求在数码管上显示。用输出方波控制一个发光二极管的显示,用示波器观察方波波形。开机默认输出频率为5Hz。 1:系统设计 (1)分析任务要求,写出系统整体设计思路 任务分析:方波信号的产生实质上就是在定时器溢出中断次数达到规定次数时,将输出I/O 管脚的状态取反。由于频率范围最高为200Hz,即每个周期为5ms(占空比1:1,即高电平2.5ms,低电平2.5 ms),因此,定时器可以工作在8 位自动装载的工作模式。涉及以下几个方面的问题:按键的扫描、功能键的处理、计时功能以及数码管动态扫描显示等。 问题的难点在按键连续按下超过2S 的计时问题,如何实现计时功能。 系统的整体思路: 主程序在初始化变量和寄存器之后,扫描按键,根据按键的情况执行相应的功能,然后在数码显示频率的值,显示完成后再回到按键扫描,如此反复执行。中断程序负责方波的产生、按键连续按下超过2S 后频率值以10Hz/s 递增(递减)。 (2)选择单片机型号和所需外围器件型号,设计单片机硬件电路原理图 采用MCS51 系列单片机At89S51 作为主控制器,外围电路器件包括数码管驱动、独立式键盘、方波脉冲输出以及发光二极管的显示等。数码管驱动采用2 个四联共阴极数码管显示,由于单片机驱动能力有限,采用74HC244 作为数码管的驱动。在74HC244 的7 段码输出线上串联100 欧姆电阻起限流作用。独立式按键使用上提拉电路与电源连接,在没有键按下时,输出高电平。发光二极管串联500欧姆电阻再接到电源上,当输入为低电平时,发光二极管导通发光。 图1 方波信号发生器的硬件电路原理图 (3)分析软件任务要求,写出程序设计思路,分配单片机内部资源,画出程序流程图 软件任务要求包括按键扫描、定时器的控制、按键连续按下的判断和计时、数码管的动态显示。 程序设计思路:根据定时器溢出的时间,将频率值换算为定时器溢出的次数(T1_over_num)。使用变量(T1_cnt)暂存定时器T1 的溢出次数,当达到规定的次数(T1_over_num)时,将输出管脚的状态取反达到方波的产生。主程序采用查询的方式实现按键的扫描和数码管的显示,中断服务程序实现方波的产生和连续按键的计时功能。单片机内部资源分配:定时器T1 用来实现方波的产生和连续按键的计时功能,内部变量的定义: hz_shu:设定的频率数;

单片机方波发生器

单片机方波发生器 组成:单片机最小系统+显示屏+矩阵键盘 1. 数字输入键盘(0-9和小数点)-------11个按键 输入 2. 调整参数光标移动键(上下)----------2个按键 上下移动到需要调整的参数上 3. 参数确认键-------------------------------------1个按键 参数生效 4. 参数取消键-------------------------------------1个按键 参数更改(可无) 5. 脉冲触发输出键-------------------------------1个按键 脉冲输出 6. 信号发生器性能: 显示屏可调的参数有(同时显示三行,价格尽量低一些): 输出脉冲个数:xxxx 1-9999次(可商议) 输出脉冲宽度:xxxx.x us,步进0.05us . 最大值尽可能大 多脉冲间隔时间: xxxx.x us,步进0.05us (可以放宽到 0.1us ) 当输出单脉冲时候,间隔时间依然有效(按下触发等待时间1-5S ) 串口通讯:可以通过串口发送特定命令来输入上述信息和触发动作---本功能另外付50元,本次有没有都可以。没有付150元+硬件。 原材参考(淘宝有卖,接包方自购,买家承担100%费用):单片机最小系+显示屏(尽量不用1602) +16键矩阵键盘 期望输出波形图如下: 围0.05us---max 步进0.05us 围0.05us---max ,步 进0.05us

验收标准: 1. 接包方视频展示功能正确 2. 需求方收到实物,实际验证功能/输出正确 其他要求: 接包方自行购买所需硬件(最小系统+显示屏+按键键盘),软件内代码需做必要注释(尤其功能/参数调整部分),最终把全部功能硬件+软件源代码/执行文件一起寄送给需求方(硬件/邮费需求方支付)。 纯粹自己玩和学习,非毕业设计/成品(任意信号源成品已经很成熟且价格足够低),所 以只需要功能实现即可,对硬件没有要求。 单片机选型尽量低端的,毕竟需要另外买。

产生方波程序

ORG 0000H LJMP MAIN ORG 0003H LJMP KG MAIN: SETB EA ; SETB EX0 ; SETB IT0 ; CLR ET0 ; CLR TR0 ; MOV TMOD ,#00H MOV TH0 ,#0FCH MOV TL0 ,#1CH LOOP: JBC TF0, LOOP1 ;查询方式 AJMP LOOP; LOOP1:CPL P1.0 MOV TH0 ,#0FBH MOV TL0 ,#0AH LOOP3: JBC TF0, LOOP2 ; 查询方式 AJMP LOOP3 LOOP2: CPL P1.0 MOV TH0 ,#0FCH MOV TL0 ,#1CH AJMP LOOP; KG : CPL TR0; RETI END ORG 0000H LJMP MAIN ORG 0003H LJMP KG ORG 000BH LJMP PIOT0 ORG 001BH LJMP PIOT1 MAIN: SETB EA ; SETB EX0 ; SETB ET0 SETB ET1 SETB IT0 SETB IT1

CLR TR0 CLR TR1 MOV TMOD ,#00H MOV TH0 ,#0FCH MOV TL0 ,#1CH HERE :SJMP HERE PIOT0:CPL P1.0 MOV TH1 ,#0FBH; MOV TL1 ,#0AH; RETI PIOT1:CPL P1.0; MOV TH0 ,#0FCH MOV TL0 ,#1CH RETI KG : CPL TR0 CPL TR1 END ORG 0000H LJMP MAIN ORG 0003H LJMP KG ORG 000BH LJMP PIOT0 MAIN: SETB EA ; SETB EX0 ; SETB ET0 CLR ET1 SETB IT0 CLR TR0 CLR TR1 MOV TMOD ,#00H MOV TH0 ,#0FCH MOV TL0 ,#1CH HERE:JBC TF1,LOOP SJMP HERE PIOT0:CPL P1.0 MOV TH1 ,#0FBH; MOV TL1 ,#0AH; CLR TR0 SETB TR1 RETI

课程设计—基于单片机的方波信号发生器汇总

微型计算机技术专业方向课程设计 任务书 题目名称:基于单片机的方波信号发生器 专业自动化班级122 姓名学号 学校: 指导教师: 2014年12月9日

课程设计任务书 课程名称:微型计算机技术 设计题目:基于单片机的方波信号发生器系 统硬件要求: 从P1.0口输出方波,分四个档:按下S1时输出1HZ,按下S2时输出10HZ,按下S3时输出1KHZ,按下S4时输出10KHZ的方波,要求误差少于1%, 软件设计: 1)主程序设计 2)各功能子程序设计 其他要求: 1、每位同学独立完成本设计。 2、依据题目要求,提出系统设计方案。 3、设计系统电路原理图。 1、调试系统硬件电路、功能程序。 2、编制课程设计报告书并装订成册,报告书内容(按顺序) (1)报告书封面 (2)课程设计任务书 (3)系统设计方案的提出、分析 (4)系统中典型电路的分析 (5)系统软件结构框图 (6)系统电路原理图 (7)源程序 (8)课设字数不少于2000字 成绩 评语

摘要 本实验是基于AT89C51单片机单片机所设计的,可以实现四种频率不同的方波信号的发生。本实验方波输出在89C51的P1.0口,分为四档,按下S1时输出1HZ,按下S2时输出10HZ,按下S3时输出1KHZ,按下S4时输出10KHZ的方波。 关键词:51单片机;方波;四档

目录 第一章前言 (5) 第二章系统总体设计 2.1系统介绍 (5) 2.2 硬件简介 (5) 2.3 软件简介 (5) 2.4 系统结构框图 (5) 第三章硬件电路 3.1硬件设计思想 (6) 3.2开关信号采集 (6) 3.3复位电路及晶振电路 (8) 3.4方波输出 (8) 第四章软件系统 4.1软件系统概述 (8) 4.2各部分程序 (10) 第五章总结 (15) 附录 (16)

方波发生器

Hyu 组别:25 项目:方波发生器 电信学院专业实训报告 题目:方波发生器的设计与实现 学生姓名: 学号: 院部: 专业班级: 指导教师:

方波发生器 摘要:本次课程设计以AT89S52单片机为核心器件,外围采用按键作为控制和数码管作为显示器所设计的方波发生器。该方波发生器能实现0-1kHz频率范围、占空比可调的方波输出。,通过对单片机编程,实现方波发生器,方波周期200ms;方波占空比在1%~99%三挡可用,一档步进10%,二挡步进5%,三挡步进%1,方波占空比可直观显示。 频率也使用按键来进行调节,不同的频率及占空比可以使用不同的按键来实现,而以键盘扫描来实现各键的不同功能;显示部分可以使用ZLG7290芯片及数码管来实现。由此即可构成一个最小单片机应用系统。 方波发生器的软件设计包括主程序、延时子程序、系统初始化程序、显示子程序、键盘扫描程序、定时器中断子程序。其中主程序用来控制整个程序的执行,它与各子程序紧密相联,共同实现方波发生器各种功能的执行。关键词:电路,控制,单片机

目录 目录 .................................................................................................................................. I V 1引言 (1) 1.1选题背景及历史 (1) 1.1.1课题背景 (1) 1.2研究目的 (1) 1.3论文主要结构及安排 (1) 1.4本章小结 (1) 正文 (2) 2.1 总体设计要求 (2) 2.2 总体设计方案 (2) 2.2.1设计思想 (2) 2.3.1控制电路设计 (2) 2.3.2 显示电路设计 (2) 2.4 组员任务分配和元件清单 (3) 2.4.1 组员及其任务分配 (3) 2.4.2 元件清单 (3) 2.5本章小结 (4) 3硬件系统设计 (5) 3.1 AT89S52单片机概述 (5) 3.2各部分电路原理 (6) 3.2.1电源电路 (6) 3.2.2 复位电路 (6) 3.2.3 显示电路 (6) 3.2.5发光二极管 (6) 4软件系统设计 (7) 4.1KEIL编程环境 (7) 4.2理论基础知识 (7) 4.2.1定时器原理 (7) 4.2.2软件延时原理 (8)

STM32单片机定时器调试之方波输出

STM32单片机定时器调试之方波输出 今天试着让STM32的定时器输出50%占空比信号,按 照例程写了一下方波初始化函数,例程用的是STM32自 带库函数,由于嫌麻烦,我又自己写了一个简单的,采 用定时器1进行输出。结果一上来,没反应,修改了很 多参数,还是没反应,然后将开发板例程写进芯片后, 有反应,仔细越多数据手册,没有问题,纠结一上午, 中午吃饭。吃完饭后,下午又开始试验,还是别人程序 有反映,自己程序,没反应。再看了看,开发板程序使 用的是TIM3,而我使用的是TIM1,于是又把我的程序将TIM1换成TIM3,点击调试运行,有反应。不会是高级 定时器只能干高级的任务吧,像输出方波这么简单的低 级任务他不惜的干?郁闷了半天。后来通过在网上查找,这个程序 以下为源代码,CC1进行比较输出,模式为翻转电平. 程序运行后,CC中断可以进去,PA.11的指示灯能闪, 但PA.08的指示一直为低电平,请教一下程序哪里错了??? void TIM1_CC_Init(void) { NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;

/* 使能定时器 TIM1_CC 中断 */ NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPrior ity = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* 配置 PA.11 为推挽输出 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIOA->;BSRR = GPIO_Pin_11; // 将PA.08配置为高电平 /* 配置 PA.08 为复用推挽输出 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* 预分频自动重载寄存器 */

51单片机汇编语言编程:用定时器控制输出矩形波

80C51单片机的时钟频率为12MHz,利用定时器T1和P1.0输出矩形脉冲。 波形只画出了2段:一段为100us 另一段为50us。 要完全的、完整的、详细的编写此程序的过程!谢谢 ------------------------ 最佳答案: 用一个定时器定时50us,也可以达到题目要求。 在我的空间里面有类似的问题和解答。 ORG 0000H SJMP START ORG 001BH ;T1中断入口. SJMP T1_INT START: MOV TMOD, #20H ;设置T1定时方式2 MOV TH1, #206 ;自动重新装入方式. MOV TL1, #206 ;定时时间 MOV IE, #10001000B ;开放总中断和T1中断. SETB TR1 ;启动T1 MOV R2, #3 ;周期是3×50us SJMP $ ;等着吧. T1_INT: SETB P1.0 ;输出高.

DJNZ R2, T1_END ;R2-1 CLR P1.0 ;减到0,就输出低电平. MOV R2, #3 T1_END: RETI ;中断返回. END ;完. ------------------------ 已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式在P2.3输出频率为10Hz的方波。 写出定时设计过程及完整代码 问题补充:用汇编的麻烦写一下 ------------------------ 最佳答案: ORG 0000H SJMP START ORG 001BH ;T1中断入口. SJMP T1_INT START: MOV TMOD, #10H ;设置T1定时方式1 MOV TH1, #(65536-50000) / 256 ;送入初始值.

频率可编程的方波发生器实验

实验频率可编程的方波发生器(1)一、实验目的 1.掌握片内外设 - 定时器的初始化设置 2.掌握片内外设–中断控制系统的初始化设置 3.掌握根据给定条件计算定时器定时周期PRD 二、实验要求 1.利用定时器 2.利用中断系统, 3.利用通用I/O口---- XF 4. 画程序流程图 三、实验内容与步骤 1. 在CCS环境下建立方波发生器的工程项目 2. 编写方波发生器的.ASM主程序 3. 编写方波发生器的.ASM中断服务程序 4. 编写方波发生器的复位向量.ASM文件 5. 编写方波发生器的链接命令 .CMD文件 6.添加上述文件到方波发生器的工程项目中 7. 调试可编程的方波发生器(200ms) 8. 调试可编程的方波发生器(2s) 9. 利用CCS中的图形窗口显示方波发生器产生的波形 四、实验数据 主程序及中断程序代码: .title "fangbo.asm" .mmregs .def CodeStart ;程序入口 .def TINT0_ISR ;Timer0中断服务程序 STACK .usect "STACK",10H ;分配堆栈空间 edata .usect "edata",100 K_TCR_SOFT .set 0B<<11 ;设置TCR定时器控制寄存器的内容;0左移11位K_TCR_FREE .set 0B<<10 ;TCR第10位free=0 K_TCR_PSC .set 0B<<6 ;TCR第9-6位,可设TDDR一样,也可不设自动加载 K_TCR_TRB .set 1B<<5 ;TCR第5位TRB=1此位置1,PSC会自动加载的 K_TCR_TSS .set 0B<<4 ;TCR第4位TSS=0 K_TCR_TDDR .set 1001B<<0 ;TCR第3-0位TDDR=1001B K_TCR .set K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR K_TCR_STOP .set 1B<<4 ;TSS=1时计数器停止 .data ;数据区 DATA_DP: ;数据区指针 XF_Flag: .word 1 ;当前XF的电平标志,如果XF_Flag=1,则XF=1 .text ;程序区CodeStart: STM #STACK+10H,SP ;设堆栈指针SP

基于MCS-51单片机的可调频率方波发生器课程设计报告[1]

单片机课程设计报告 设计题目:频率可调方波发生器 专业班级:生物医学工程09班 组长:李建华 组员:梁国锋,赖水兵,郭万劲,李建华2010 年 06 月 16日

摘要 本实验是基于PHILIPS AT89C51 单片机所设计的,可以实现键位与数字动态显示的一种频率可调方波发生器。通过键盘键入(10HZ-9999HZ)随机频率,使用七段数码管显示,每一个数码管对应一个键位。单片机对各个键位进行扫描,确定键位的输入,然后数码管显示输入的数值,方波发生器输出以数码管显示的数值为频率的方波。 关键词:单片机七段数码管键盘电路频率可调方波发生器

一、目的和功能 1.1 目的: 设计一种频率范围限定且可调的方波发生器,志在产生特定频率的方波。 1.2功能: 假设键盘是4*4的键盘,当键盘输入范围在10hz-9999hz的数字,单片机控制数码管显示该数值,并把该数值当做方波发生器的输入频率,单片机控制该方波发生器以该数值作为频率显示方波,从而得到我们想要频率的方波。 二、硬件设计 2.1 硬件设计思想 键盘的数字和键位关系固定,通过键盘输入产生频率,通过LED数码管显示出来,每一个数码管对应一个键位。基本设备是基于PHILIPS AT89C51单片机,外围设备采用的是4个七段数码管,PHILIPS A T89C51单片机,1个OSCILLOSCOPE 方波发生器,16个Button,若干电阻,电源电池。 2.2 部分硬件方案论述 2.2.1 七段数码管扫描显示方式的方案比较 方案一:静态显示方式:静态显示方式是指当显示器显示某一字符时,七段数码管的每段发光二极管的位选始终被选中。在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。随着显示器位数的增加,需要的I/O口线也将增加。

波形发生器汇编语言程序

波形发生器汇编语言程序: ;T0832-5.asm IOY0 EQU 0DA00H ;片选IOY0对应的端口始地址 DA0832 EQU IOY0+00H*4 ;DA0832的端口地址 DANUM EQU 0FFH STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT STR1 DB '1. Triangle SQUARE Wave ',0AH,0DH,'$' ;定义显示的字符串方波STR2 DB '2. Triangle DELTA Wave ', 0AH,0DH,'$' ;定义显示的字符串三角波STR3 DB '3. Triangle SAWTOOTH Wave ', 0AH,0DH,'$' ;定义显示的字符串锯齿波STR4 DB '4. Triangle SINE Wave ', 0AH,0DH,'$' ;定义显示的字符串正弦波STR5 DB '5. EXIT ',0AH,0DH,'$' ;定义显示的字符串退出FLAG DB 0 SIN DB 00H,02H,05H,09H,0FH,15H,1DH,25H DB 2EH,38H,43H,4FH,5AH,67H,73H,7FH DB 80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH DB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH DB 0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80H DB 7FH,73H,67H,5AH,4FH,43H,38H,2EH DB 25H,1DH,15H,0Fh,09H,05H,02H,00H CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX MOV AX,STACK1 MOV SS,AX MOV DX,OFFSET STR1 ;显示字符串1 MOV AH,9 INT 21H MOV DX,OFFSET STR2 ;显示字符串2 MOV AH,9 INT 21H MOV DX,OFFSET STR3 ;显示字符串3 MOV AH,9 INT 21H MOV DX,OFFSET STR4 ;显示字符串4 MOV AH,9

单片机输出方波及显示宽度

桂林电子科技大学单片机最小应用系统 设 计 报 告 指导老师:吴兆华 学生:冯焕焕 学号:1000150301

前言 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新.在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善. 单片机是指在一个芯片上集成了中央处理器、存储器和各种I/O接口的微型计算机,它主要面向控制性应用领域,因此又称为嵌入式微控制器。单片机诞生30多年以来,其品种、功能和应用技术都得到飞速的发展,单片机的应用已深入国民经济和日常生活的各个领域。 本次课程设计目的主要是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 本课程设计实在学完单片机原理及课程之后综合利用所学单片机只是完成一个单片机应用系统设计并在实验室实现。该课程设计的主要任务是通过解决一、两个实际问题,巩固和加深“单片机原理和应用”课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获的初步的应用经验,为以后从事生产和科研工作打下一定的基础。 摘要

单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。单片机应用的意义绝不仅限于它的广阔范围以及带来的经济效益,更重要的意义在于,单片机的应用正从根本上改变着传统的控制系统的设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分控制功能,现在使用单片机通过软件就能实现了。随着单片机应用的推广普及,单片机控制技术将不断发展,日益完善。本文是设计频率/脉冲宽度的测量与显示的硬件电路与程序的编制。它可以测量脉冲信号的脉冲宽度,频率等参数。利用定时器的门控信号GATE进行控制可以实现脉冲宽度的测量。利用定时器T0定时T1计数来测量由P3.5口输入的脉冲信号的频率。在单片机应用系统中,为了便于对LED显示器进行管理,需要建立一个显示缓冲区。显示时采用动态扫描的方式将将各位数的BCD码依序输入到LED中,并连续扫描2秒钟。通过采用STC89C52RC 单片机为中心器件来设计脉冲宽度测量器,并运用MCS—51/52单片机计数功能,选择好工作模式,对脉宽进行计数。在现有的单片机仿真机系统上掌握相关软硬件设计与调试知识,并在计算机上编写汇编程序调试运行。 关键词: 门控信号GATE;脉冲宽度;扩展测量范围;脉冲频率 ABSTRACT

基于单片机的信号发生器(完整电路_程序)资料

电子与信息工程学院综合实验课程报告 实验名称:基于单片机的信号发生器的设计与实现班级:10电工2班 学号:20101851046 姓名:李俊 指导教师: 时间:

摘要 本文以STC89C51单片机为核心设计了一个低频函数信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如 正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。介绍了波形的生成原理、硬件电路和软件部分的设计原理。本系统可以产生最高频率798.6HZ的波形。该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。 关键词:低频信号发生器;单片机;D /A转换; 1设计选题及任务 设计题目:基于单片机的信号发生器的设计与实现 任务与要求: 设计一个由单片机控制的信号发生器。运用单片机系统控制产生多种波形,这些波形包括方波、三角波、锯齿波、正弦波等。信号发生器所产生的波形的频率、幅度均可调节。并可通过软件任意改变信号的波形。 基本要求: 1. 产生三种以上波形。如正弦波、三角波、矩形波等。 2.最大频率不低于500Hz。并且频率可按一定规律调节,如周期按1T,2T,3T,4T 或1T,2T,4T,8T变化。 3.幅度可调,峰峰值在0——5V之间变化。 扩展要求:产生更多的频率和波形。 2系统概述 2.1方案论证和比较 2.1.1总体方案: 方案一:采用模拟电路搭建函数信号发生器,它可以同时产生方波、三角波、正弦波。但是这种模块产生的不能产生任意的波形(例如梯形波),并且频率调节很不方便。 方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。

单片机产生脉冲波

晶振12M任意占空比方波输出 信号发生器又称波形发生器,是一种常用的信号源,被广泛地应用于无线电通信、自动测量和自动控制等系统中。传统的信号发生器绝大部分是由模拟电路构成,借助电阻电容,电感电容、谐振腔、同轴线作为振荡回路产生正弦或其它函数波形。频率的变动由机械驱动可变元件完成,当这种模拟信号发生器用于低频信号输出往往需要的RC值很大,这样不但参数准确度难以保证,而且体积和功耗都很大,而由数字电路构成的低频信号发生器,虽然其低频性能好但体积较大,价格较贵。 在今天,随着大规模集成电路和信号发生器技术的发展,许多新型信号发生器应运而生。用信号发生器并配置适当接口芯片产生程控正弦信号,则可替代传统的正弦信号发生器,从而有利于测试系统的集成化、程控化和智能仪表的多功能化。而信号发生器的最大特点是面向控制,由于它集成度高、运算速度快、体积小、运行可靠、价格低,因此在数据采集、智能化仪器等技术中得到广泛的应用,从而使得信号发生器的应用成为工程技术多学科知识汇集的一个专门研究领域,其应用产生了极高的经济效益和社会效益。 如果是占空比任意,现在考虑12M晶振,所以机器周期Tcy为1 μs。 定时器工作方式1最长定时为65536×1×10-6=65.536ms 如果要输出周期为1s的任意占空比的方波。那可以把1s分为100份,每份中断一次。然后在中断里面计数(比如全局变量num)加一。加到100之后,表示一个周期结束。这样就可以控制每一份的电平的高低了。如果,占空比为30%,那么也就是num小于等于100×30%=30的时候,输出高电平,其余输出低电平就可以了。如果占空比为a(百分号的形式),那么也就是num小于等于100×a的时候输出高电平,其余输出低电平就可以了。 现在考虑定时器的初值如何设定,由于定时器需要在1s/100也就是10ms的时候进入一次中断进行判断。如果采用方式1,那么因为(216 ?X) ? 1 ? 10?6 = 10 ? 10?3, 所以定时器的初值为X=65536 – 1000. #include //头文件 sbit output=P1^1; //输出端 unsigned char num=1; //辅助计时 unsigned int a = 0.3;占空比a可以任意设定 void Init(void) //初始化函数 { //对于定时器一般初始化需要六步 TMOD=0x01; TH0=(65536-1000)/256; //(65536-1000)为定时器初值,定时10ms TL0=(65536-1000)%256; EA=1; ET0=1; TR0=1; } main() { Init(); while(1) { if(num<=100*a)output=1; //使占空比为a

函数波形发生器 程序及程序流程图、系统原理图

ASSUME CS: CODE CODE PUBLIC ORG 100H START: MOV DX,40H ;8255 A口地址IN AL,DX ;8255初始化TEST AL,01H JZ FF1 TEST AL,02H JZ FF2 TEST AL,04H JZ FF3 JMP START ;读频率选择状态L: TEST AL,10H JZ FB TEST AL,20H JZ JCB TEST AL,40H JZ SJB JMP START ;读波形选择状态FF1:MOV SI,09H JMP L FF2:MOV SI,03H JMP L FF3:MOV SI,02H JMP L ;频率调节 FB: MOV DX 48H ;0832 端口地址F: MOV BX 0FFH F0: MOV CX,SI MOV AL,00H F1: OUT DX,AL LOOP F1 DEC BX JNZ F0 MOV BX,0FFH F2: MOV CX,SI F3: OUT DX,AL LOOP F3 DEC BX JNZ F2 JMP F ;方波发生子程序 JCB:MOV DX,48H ;0832 端口地址MOV AL,0FFH J: INC AL MOV BX,0FFH J1: MOV CX,SI J2: OUT DX,AL LOOP J2 DEC BX JNZ J1 JMP J ;锯齿波发生子程序 SJB: MOV DX,48H ;0832 端口地址S: MOV AL,00H MOV BX,80H S0: MOV CX,SI S1: OUT DX,AL INC AL LOOP S1 DEC BX JNZ S0 MOV BX 80H S2: MOV CX,SI S3: DEC AL OUT DX,AL LOOP S3 DEC BX JNZ S2 JMP S ;三角波发生子程序JMP START ENDS CODE

单片机产生各种波形及其程序图

源程序如下: #include #define uchar unsigned char #define uint unsigned int unsigned char x=0,m=0,y=128; sbit WR_DA=P2^1; sbit CS_DA=P2^0;//DA与单片机的接口 sbit S0=P3^0; //波形选择,每次按下将产生不同的波形 sbit S1=P3^1; //频率减 sbit S2=P3^2; //频率加 sbit S3=P3^3; //调节方波的占空比 uchar code SinTab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa 5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe 9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5 ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xfe,0xfd ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0x e9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb 1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0 x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0 x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0 x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00

用8051单片机定时器产生乐谱的各种频率方波

电子科技大学微机单片机接口 设 计 报 告 指导老师: 学生: 学号:

电子科技大学机电工程学院2009年5月

单片机最小应用系统设计报告 一、设计题目 (1) 二、设计目的 (1) 三、系统硬件图 (2) 3.1 电路设计原理图 (2) 3.2 电路设计PCB图 (4) 四、程序流程图 (6) 五、系统说明与分析 (9) 5.1设计思路及设计过程 (9) 5.2系统结构及各部分说明 (9) 5.3系统连线说明 (16) 5.4系统参数分析 (17) 六、源程序 (17) 七、总结 (25) 八、参考文献 (26)

一、设计题目 用8051单片机定时器产生乐谱的各种频率方波,要求信号经过放大后由喇叭发出声音。可选取某段音乐令单片机连续播放。 二、设计目的 1、通过单片机最小系统的设计,了解常用单片机应用系统开发手段和过程,进一步熟悉和掌握单片机的结构和工作原理,并能初步掌握一般单片机控制系统的编程和应用,从而进一步加深对单片机理论知识的理解。 2、掌握单片机内部功能模块的应用:如定时器、计数器、中断系统、I/O口等。 3、熟悉基本硬件电路的设计与制作。 4、掌握以单片机核心的电路设计的基本方法和技术,了解单片机的基本外围电路的设计和矩阵按键电路及数码管驱动电路的设计。 5、学习UVISION对单片机的编程和调试方法。 6、学习PROTEL软件的使用,掌PROTEL的基本用法,懂得绘制简单得原理图及其PCB的绘制。 7、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

三、系统硬件图 3.1 电路设计原理图 整个设计主要包括单片机基本的晶振电路,按键复位电路。具体的电路图如下图所示: 对于不同的电路模块进行了分别画图: 下图是最小系统模块。

方波发生器讲解

课程设计报告 课程名称:基于单片机的方波信号发生器院部:电控学院 专业班级:电气0601班 学生姓名:程云鹏 指导教师:郝兆明 完成时间:2009年06月10日 报告成绩:_____ _____________________ 评阅意见: 评阅教师日期

目录 一、概述 ------------------------------------------------------------------ 3 1.1、设计内容 ------------------------------------------------------ 3 1.2、设计的基本要求 ------------------------------------------------ 3 二、方波发生器设计方案 ---------------------------------------------------- 4 2.1、方案介绍 ------------------------------------------------------ 4 2.2、方波信号发生器的原理与功能 ------------------------------------ 4 三、系统的硬件设计 -------------------------------------------------------- 6 3.1、单片机最小系统 ------------------------------------------------ 6 3.2、小键盘接口电路 ------------------------------------------------ 7 3.3、LED显示电路--------------------------------------------------- 7 四、系统的软件设计 -------------------------------------------------------- 8 4.1、主程序 -------------------------------------------------------- 8 4.2、系统初始化子程序 ---------------------------------------------- 9 4.3、显示子程序 ---------------------------------------------------- 9 4.4、键盘扫描程序 ------------------------------------------------- 10 4.5、定时器中断子程序 --------------------------------------------- 11 五、调试与性能分析 ------------------------------------------------------- 12 5.1硬件调试------------------------------------------------------- 12 5.2软件调试------------------------------------------------------- 12 六、设计体会 ------------------------------------------------------------- 13 参考文献 ----------------------------------------------------------------- 14 附录A:基于单片机方波信号发生器的原理图---------------------------------- 15 附录B:基于单片机方波信号发生器的程序清单-------------------------------- 16 附录C:仿真图——————————————————————————————21

信号发生器 (正弦波,方波,三角波)51单片机 C语言代码

/**************************************/ /* 信号发生器(正弦波,方波,三角波) */ /*************************************/ #include #include #define uchar unsigned char #define uint unsigned int sbit 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};

相关文档
最新文档