登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 实际运用呼吸灯(电开版本)

[复制链接]
发表于 2022-1-29 23:12:57 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 按时学习
开始时间: 2022-01-26
结束时间: 2022-01-26
这个呼吸灯是在蜂鸣器那块的,我估计是重载值什么的写错了,闪的速度有点过快,但是理论上应该没问题其实回过头看看,这玩意和后面那个串口与1602实例相比,可以说是不值一提了

代码如下
#include<reg52.h>
sbit PWMOUT=P1^3;
sbit ADDR0=P2^0;
sbit ADDR1=P2^1;
sbit ADDR2=P2^2;
sbit ENLED=P1^1;
unsigned long PeriodCnt=0;
unsigned char HighRH=0;
unsigned char HighRL=0;
unsigned char LowRH=0;
unsigned char LowRL=0;
unsigned char T1RH=0;
unsigned char T1RL=0;
void ConfigTimer1(unsigned int ms);
void ConfigPWM(unsigned int fr,unsigned char dc);
void main()
{
EA=1;
ADDR0=1;
ADDR1=1;
ADDR2=1;
ENLED=0;
ConfigPWM(100,10);
ConfigTimer1(50);
while(1);
}
void ConfigTimer1(unsigned int ms)
{
unsigned long tmp;
tmp=32768000/12;
tmp=(tmp*ms)/1000;
tmp=65536-tmp;
tmp=tmp+12;
T1RH=(unsigned char)(tmp>>8);
T1RL=(unsigned char)tmp;
TMOD&=0x0F;
TMOD|=0x10;
TH1=T1RH;
TL1=T1RL;
ET1=1;
TR1=1;
}
void ConfigPWM(unsigned int fr,unsigned char dc)
{
unsigned int high,low;
PeriodCnt=(32768000/12)/fr;
high=(PeriodCnt*dc)/100;
low=PeriodCnt-high;
high=65536-high+12;
low=65536-low+12;
HighRH=(unsigned char)(high>>8);
HighRL=(unsigned char)high;
LowRH=(unsigned char)(low>>8);
LowRL=(unsigned char)low;
TMOD&=0xF0;
TMOD|=0x01;
TH0=HighRH;
TL0=HighRL;
ET0=1;
TR0=1;
PWMOUT=1;
}
void AdjustDutyCycle(unsigned char dc)
{
unsigned int high,low;
high=(PeriodCnt*dc)/100;
low=PeriodCnt-high;
high=65536-high+12;
low=65536-low+12;
HighRH=(unsigned char)(high>>8);
HighRL=(unsigned char)high;
LowRH=(unsigned char)(low>>8);
LowRL=(unsigned char)low;
}
void InterruptTimer0() interrupt 1
{
if(PWMOUT==1)
{
TH0=LowRH;
TL0=LowRL;
PWMOUT=0;
}
else
{
TH0=HighRH;
TL0=HighRL;
PWMOUT=1;
}
}
void InterruptTimer() interrupt 3
{
static bit dir=0;
static unsigned char index=0;
unsigned char code table[13]={
5,18,30,41,51,60,68,75,81,86,90,93,95
};
TH1=T1RH;
TL1=T1RL;
AdjustDutyCycle(table[index]);
if (dir==0)
{
index++;
if(index>=12)
{
dir=1;
}
}
else
{
index--;
if(index==0)
{
dir=0;
}
}
}


1643468727633.jpg
1643468735242.jpg
1643468742331.jpg
1643468750714.jpg
1643468763723.jpg
1643468770416.jpg
1643468783776.jpg
1643468791440.jpg
1643468802277.jpg
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表