基于单片机的信号发生器设计

    这个学期的最后一个月,我们正式进入课程设计实验。本次我选择了基于单片机的信号发生器设计的这个课程设计,因为相对比较简单,就一个89C51和D/A0832就搞定。余老师还是比较好的,像他们软件的要焊接,额,密密麻麻的一大堆线,看着就烦。呵呵,好了,以下要谈谈这次设计的过程了。          

    首先,本次设计的要求是以单片机为基础,利用D/A转换器,编程能产生锯齿波、方波、正弦波、三角波四种波形,使波形可变且频率可调的信号发生器。主要难度是波形进行变化和频率可调,好,先准备实验要求的设备, PC机一台(并安装Keil 模拟仿真器软件)实验箱一个、导线落干根,示波器一台。本来我是想用伟福来进行仿真的,可惜没下载器,一切就绪,马上开始,下面是本次报告中的一部分。   

     一、        设计思路      利用Keil C51 系列仿真系统实现。主要利用其中89C51,D/A0832,拨位开关、按键等模块。  

   1、 波形选择:利用8051分别实时地对P1.0、P1.1两口进行扫描,如果发现两口对应相应的数值,即有四种状态:00,01,10,11,根据四种状态跳到对应的波形程序。

  2、 三种波形的实现:方波:由8051对P0口不断交替输出00H和0FFH,有D/A0832转换成模拟量实现;   三角波:由8051对P0口输出00H,在每一个时钟到来时对输出值加一;当加至0FFH时,继而在时钟来临时减一,这样往复执行,最终输出近似连续的三角波;   正弦波:将00H到0FFH按照正弦波波形的变化趋势分成255个间断的点,形成一个正选波取值表,用8051在每一个时钟到来时取表值通过P0口送至D/A0832转换输出。   锯齿波:和三角波相似,当加至0FFH时,由从00H开始加,这样往复执行,最终得到连续的锯齿波。  

   3、 频率调节:利用中断方式,当-INT0接收到一个负脉冲时,使延时程序中时间常数加一,进而实现频率加;当-INT1接收到一个负脉冲时,使延时程序中时间常数减一,实现频率减。     

     下面是实验代码

 

org 0000h
ajmp start
ORG 0003H         ;中断! INT0 的入口地址
INC R7             ;频率加 1
inc r3              
RETI
ORG 0013H           ;中断! INT1 的入口地址
DEC R7              ;频率减 1
dec r3
RETI
org 0100h
START:
      setb EA             ;开 CPU 中断
SETB IE0           ;开! INT0 的中断标志
      SETB IE1           ;开! INT1 的中断标志
      SETB EX1         
      SETB IT1           ;允许! INT1 中断
SETB IT0           ;允许! INT0 中断
SETB EX0
      mov r3,#11            ;改变方波的 频率
      MOV    R7,#5; 改变数值可以改变正弦波、三角波、锯齿波的频率
loop:                    ;查询键盘
     ; anl p1,#03h         ;使 P1.0 P1.0 有效
       MOV a,p1      
 
       cjne a,#00h,l1        K1 K2
  • 8
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值