压控PWM信号发生器

单片机的课程设计NO.4

    程序功能

    1、ADC0808采集一路0~5V的直流信号

    2、生成频率100Hz的PWM信号,占空比与采集到的直流信号电压成正比

    3、LCD1602显示当前采集到的电压值与输出PWM的占空比

    4、DAC0832输出一路0~5V正弦信号,频率值(1~9)/10Hz

    5、向上位机传输当前采集到的电压值与PWM占空比

    6、由上位机控制输出正弦信号的频率

项目代码



/*上位机操作指令*/
/*
	指令	作用
	0		单片机停止发送
	1		
	2		显示实时测量值
	3		改变DAC0832产生正弦信号的频率(在此之后输入频率)
*/

/*	----------------------------

	程序功能

	1、ADC0808采集一路0~5V的直流信号

	2、生成频率100Hz的PWM信号,占空比与采集到的直流信号电压成正比

	3、LCD1602显示当前采集到的电压值与输出PWM的占空比

	4、DAC0832输出一路0~5V正弦信号,频率值(1~9)/10Hz

	5、向上位机传输当前采集到的电压值与PWM占空比

	6、由上位机控制输出正弦信号的频率

	----------------------------*/
#include<reg52.h>
#include<intrins.h>			//包含_nop_()空函数指令的头文件
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
#define out P2

sbit CS=P1^1; 				//DAC0832片选端
sbit WR1=P1^2;				//DAC0832WR1端
sbit PWM=P1^4;				//PWM信号输出端
sbit RS = P1^5;				//LCD1602寄存器选择
sbit RW = P1^6;				//LCD1602读写操作选择
sbit E = P1^7;				//LCD1602使能信号
sbit START = P3^3;			//ADC0808启动信号
sbit Clock = P3^4;		//74HC595移位信号
sbit Data = P3^5;		//74HC595数据输出
sbit Lock = P3^6;		//74HC595锁存信号
sbit OE=P3^7;		    ///ADC0808转换结果输出允许端

bit flag_timer=0;			//当flag_timer=0时,中断程序T0调用timer[0]~timer[3],change_timer函数重装timer[4]~timer[7],反之调换
bit flag_volt=0;		   	//ADC测量结束标志
bit flag_fre=0;				//DAC频率输入标志

uchar code seg[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
uchar const code await_f[]="Please enter frequency(n/10Hz):(1~9)\n";
uchar Sin[]="sin:0.00V ",Pwm[]="PWM:00%",measure[20];
uchar send_mode=0;
uchar ac_data=0;	   	//数字量
uint ac_volt=0;		//电压值
uchar Fre = 1;		//DA正弦频率
uchar timer[8];	//timer[0]=HighTH0,timer[1]=HighTL0
				//timer[2]=LowTH0,timer[3]=LowTL0
				//timer[4]=HighTH1,timer[5]=HighTL1
				//timer[6]=Lo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值