#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"
#include "LM1602.h"
#define uint unsigned int
#define uchar unsigned char
sbit BZ=P1^5; //蜂鸣器输出端口
sbit PWM=P2^0; //P2^0口输出PWM
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
uint time, upper, floor; //time为中断计数变量,upper为占空比上限,floor为占空比下限,
uint count=25,cyc=50,t=100000; //count为占空比初始值,cyc为周期中间变量,注:周期=cyc*10.
uchar i=4;
/***********延时xms程序***********/
void Delayxms(uint z)
{
uchar x, y;
while(z--)
{
x = 2;
y = 239;
do
{
while (--y);
} while (--x);
}
}
/***********定时器0初始化***********/
void T0_init()
{
TMOD=0x01; //定时器0工作于方式1
TH0=(65536-10)/256; //定时器0初值,每10us产生一次中断
TL0=(65536-10)%256;
TR0=1;
ET0=1;
EA=1;
}
/***********初始化***********/
void init()
{
LCD_Init ();
LCD_display(count*100/cyc);
LCD_display0(100/cyc);
}
/*********主函数********************/
void main()
{
T0_init();
init();
while(1)
{
Delayxms(2);
if(key1==0) //占空比上调键按下;
{
Delayxms(2); //按键消抖
while(key1==0);
Delayxms(2);
count+=cyc/10; //步进加50/10=10;
if(count>90)
{
count=100;
}
LCD_display(count*100/cyc);
}
if(key2==0) //占空比下调键按下;
{
Delayxms(2);
while(key2==0);
Delayxms(2);
count-=cyc/10;
if(count<10)
{
count=0;
}
LCD_display(count*100/cyc);
}
if(key3==0) //周期中间变量上调键按下;
{
Delayxms(2);
while(key3==0);
Delayxms(2);
cyc+=10;
if(cyc>100) cyc=100;
LCD_display0(100/cyc);
LCD_display(count*100/cyc);
}
if(key4==0) //周期中间变量下调键按下;
{
Delayxms(2);
while(key4==0);
Delayxms(2);
cyc-=10;
LCD_display0(100/cyc);
LCD_display(count*100/cyc);
if(cyc<1) cyc=1;
}
}
}
/**************定时0中断处理******************/
void timer0_int() interrupt 1
{
TR0=0; //设置定时器初值期间,关闭定时器
TH0=(65536-10)/256; //定时器0初值,每10us产生一次中断
TL0=(65536-10)%256;
TR0=1;
time++;
if(time<count) PWM=1; //输出高电平
else if(time>=count && time<cyc) PWM=0; //输出低电平
else time=0;
if(count > cyc) count=cyc;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
实验六(预置型):设计一个PWM脉冲信号发生器,各参数可以调节,其中脉冲占空比调节范围为2~100%;电压调节范围为0~5.0V,步进0.02V;频率调节范围为1KHz-100KHz,用键盘调节方式和液晶显示,能看到每种波形下占空比、频率和电压值,外接一个电机看到调速现象,同时可以通过示波器看到相应波形。
资源推荐
资源详情
资源评论
收起资源包目录
实验6PWM.rar (49个子文件)
实验6PWM
main.OBJ 10KB
Project.build_log.htm 2KB
LM1602.OBJ 10KB
Timer0.OBJ 3KB
Delay.OBJ 850B
Key.OBJ 3KB
Key.c 377B
Project.uvgui.Administrator 89KB
Nixie.c 841B
Delay.h 85B
LM1602.h 499B
main.c 3KB
Nixie.h 98B
LM1602.c 3KB
Project.uvproj 15KB
仿真
Last Loaded 键盘时钟.pdsbak 34KB
键盘时钟.pdsprj.LY.Administrator.workspace 2KB
键盘时钟.pdsprj 34KB
Objects
Project.build_log.htm 1009B
Timer0.obj 3KB
Key.obj 3KB
main.obj 4KB
Timer0.__i 113B
Project.lnp 190B
Project.plg 3KB
Delay.obj 880B
Nixie.obj 4KB
Project 14KB
Project.hex 2KB
Project_uvopt.bak 8KB
Project.uvopt 8KB
Delay.c 153B
Nixie.OBJ 4KB
Project.lnp 145B
main.c.bak 860B
Key.h 72B
Project_uvproj.bak 14KB
Timer0.h 81B
Listings
Delay.lst 1KB
Nixie.lst 2KB
main.lst 6KB
LM1602.lst 5KB
Timer0.lst 2KB
Project.m51 21KB
Key.lst 1KB
Project 27KB
Project.hex 4KB
Timer0.c 636B
Project.uvgui.Admin 86KB
共 49 条
- 1
眰恦I
- 粉丝: 2681
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页