51单片机:压控PWM信号发生器设计

51单片机:压控PWM信号发生器设计

经过一个学期的学习,初步入门了51单片机。会写了一点小程序,尝试过在板子上面跑自己设计的代码。当看到自己设计的程序结果由仿真变成现实在你眼前时,确实很开心。51系列虽然很老,有点过时了,感觉对于入手学单片机还是可以的。

知识是一个积累的过程。像这种已经过时的或者说不太主流的东西,我一开始接触时也觉得没啥必要啊,还不如学STM32,后来老师告诉我们,高楼是一层一层盖的,像这种最初的东西,较与现在功能更为完善、性能更优良的芯片是最基础的。只要掌握怎样去学习它的方法,以后给你别的芯片你也不怕了。话不多说,简单介绍一下自己的单片机课程设计,为自己的单片机这门课画个小句号吧。

课程设计题目及要求:

压控PWM信号发生器

课程设计任务内容:

综合运用所学单片机知识,设计一个压控PWM信号发生器。要求如下:系统单片机使用AT89S52,甲机通过ADC0832采集电压信号,显示该电压值并将该电压信号对应的数字量传给乙机,乙机生成对应频率的PWM脉冲信号,占空比恒为1/4。给定单片机频率为11.0592MHz。

设计思路简单描述:

抛开仿真电路图不谈,简单讲述一下自己的软件设计的思路。对于这个课设的软件设计,我是分成了三个部分:ADC0832采集电压信号并显示、乙机生成占空比1/4的PWM脉冲信号、甲乙机通信。我先一部分一部分的写好,然后仿真调试,对代码进行修改,等到这三个部分都完成了再组合到一块,再进行仿真调试,直到出现正确的仿真结果。

电路图设计:

在这里插入图片描述

部分代码:

甲机

#include<reg51.h>                //51系类单片机
#include<intrins.h>              //函数
#define FOSC 11059200            //晶振频率
#define BAUD 9600                //波特率
#define uchar unsigned char
#define uint  unsigned int 
uchar Get_AD_Result();           //获取AD转换结果(0通道)
void ET0_init();                 //定时器0初始化
void RT1_init();                 //定时器1初始化
void UartInit();                 //双机通信初始化UartInit(用定时器2)

//----------------------------------------
//           主函数
//----------------------------------------
void main()			
{  
   ET0_init();    //定时器0初始化
   RT1_init();    //定时器1初始化
   UartInit();
   ET0  = 1;
   TR0  = 1;
   ET1  = 1;
   TR1  = 1;
   EA   = 1;     //打开总中断
   CLK = 0;      //ADC0832初始化
   CS   = 1;   
   while(1);
}

乙机:

//----------------------------------------
//           主函数
//----------------------------------------
void main()
{
	SCON = 0x50;            
	TMOD |= 0x21;            
	TH1 = TL1 = -(FOSC/12/32/9600); //设置定时1器高、低8位初值
	TR1 = 1;                //开启定时器1
	ES = 1;                 //串口中断
	TI = 1;			        //发送中断标记位,必须设置
	
	TMOD |= 0x21;                    
	TL0 = T1MS;             //定时器0低八位初值
	TH0 = T1MS >> 8;        //定时器0高八位初值
	TR0 = 1;                //开启定时器
	ET0 = 1;                      
	PT0=1;
	
	EA = 1;                 //开总中断       
	while(1);
}

(详细代码及完整课设内容见Simulation

仿真结果:

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值