设计与开发

单片机可调时钟 什么是什么单片机时钟?怎么设置

小编 2025-08-08 设计与开发 23 0

什么是什么单片机时钟?怎么设置

什么时钟?

首先我们先讲讲什么是时钟。时钟就是单片机的心脏。每跳动一下。整个单片机的各个电路就同步的动作一下。就好像我们做广播体操的时候 广播上喊的节拍1234 2234 3234。。。。然后我们全部的同学就按照这个节奏进行一个个动作。节拍越快我们动作越快。节拍越慢我们动作的越慢。

内部时钟和外部时钟?

PIC单片机有许多型号可以设置成 用外部时钟(如外部接个4MHZ的石英晶振),也可以设置成用内部RC时钟。而且还有许多型号可以选择多种频率的时钟。

如 PICLF1823 内部时钟最高可以到达32MHZ 最低可以达到 31kHz. 这事实上提供了一条降低功耗的新路子。一般的单片机降低功耗常常用的睡眠,而睡眠期间CPU是什么都不做。如果希望降低功耗,而且CPU也能工作。降低时钟频率无疑是个非常好的选择。

时钟的设置?

时钟设置一般只和两处有关 一个是配置字,一个是振荡器控制寄存器 OSCCON 下面我们以PICLF1823为例子进行讲解。

PICLF1823 配置字设置 中与时钟有关的就是 FOSC<2:0>:振荡器选择位,和PLLEN:PLL使能位 。

OSCCON 是有关内部时钟频率选择,如果只用外部时钟一般不理会。以下是数据手册中OSCCON寄存器的详细介绍。

实例讲解:

使用内部时钟将时钟频率设置成8MHZ

开发环境:MPLAB X IDE

芯片型号:PICLF1823

#include

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON&

CLKOUTEN_OFF&IESO_ON&FCMEN_ON);

__CONFIG(PLLEN_OFF&LVP_OFF) ;//将FOSC<2:0>:振荡器选择位设置成 INTOSC,

void init_fosc(void)

{

OSCCON = 0x70;//8MHZ IRCF<3:0>时钟频率选择位设置成8MHZ

}

int main(int argc, char** argv) {

init_fosc();

while(1);

}

PLL是用来做什么的呢?他的作用就是能将8MHZ的时钟频率X4变成32MHZ,记住只有8MHZ可以,其他频率是不行的。

使用内部时钟将时钟频率设置成32MHZ

开发环境:MPLAB X IDE

芯片型号:PICLF1823

#include

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON

&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去

__CONFIG(PLLEN_ON&LVP_OFF) ;//将FOSC<2:0>:振荡器选择位设置成 INTOSC,使能PLLEN

void init_fosc(void)

{

OSCCON = 0xF0;//32MHZ IRCF<3:0>时钟频率选择位设置成8MHZ ,使能4XPLL

}

int main(int argc, char** argv) {

init_fosc();

while(1);

}

单片机实例分享,打造音乐频谱时钟

(此处已添加圈子卡片,请到今日头条客户端查看)

电路原理

下面我们按各功能模块逐一给大家介绍一下这个制作的电路原理吧。

图25.1 时钟显示效果

图25.2 频谱显示效果

1.电源部分

电源电路如图25.3所示。

图25.3 电源部分的电路

电源模块采用了一支很常见的7805稳压芯片,再加一大一小两个电容进行滤波,输入端直接买了个9V/1A的电源适配器,方便省事。7805额定输出电流1A,对于这样的小系统来说,已经完全够用了。实际使用下来,7805发热不太大,无需加装散热片。为了使用方便,我在7805的输入端加装了一个开关和一个红色LED,分别作为系统电源开关和指示灯。

2.时钟、温度部分

这部分电路如图25.4所示。单片机采用的是STC89C52RC,考虑到成本和功能性问题,时钟部分我没有单独买时钟芯片,直接使用内部定时器中断作为时钟源,这直接导致的结果就是时钟误差稍大。经测试,每24小时误差在1分钟左右,作为一个功能性的DIY作品,就饶了它吧,呵呵……温度传感器采用的也是常用的DS18B20,相信大家都很熟悉。3个功能按键分别是时钟(闹铃)小时调整、时钟(闹铃)分钟调整和时钟/闹铃切换。

图25.4 时钟、温度部分的电路

为了跟“频谱”切题,时钟、温度的显示没有采用传统的数字表示,而是分别把时钟的小时、分钟的十位和个位分别用点来表示,每两列表示一位,每行表示一点,左下角是时钟,右上角是温度。是不是有点晕乎呢?其实只要你看了实物就会觉得很简单,文字的确不是很好表达。时钟没有单独设置“秒”的显示,为了增强显示效果,我特地在右下角设置了沙漏下落效果,每一秒钟下落一行。

3.频谱分析部分

电路如图25.5所示。这部分的制作跟“五色LED频谱”是一样的原理,都是把音频信号经AD采样,用快速傅里叶变换求出频点的幅值,再根据幅值大小来驱动相应的LED。只不过我设计的是每次采128个点,最后十六分频而已。单片机采用的是STC12C5A60S2,已经在信号输入端加了47pF的电容滤波,但还是发现有噪声。可能是因为使用的是洞洞板,还有就是走线过长的缘故。我试着加大了电容再次滤波,但直接导致低频响应变差,鉴于噪声不是很严重,最后只好作罢,将就一下了。

图25.5 频谱分析部分的电路

4.WAV 音乐播放部分

电路如图25.6所示。这部分应该是整个系统里面最复杂的了,WAV音乐播放部分是在数码之家论坛hit00版主的“WAV播放器”的基础上修改而来的。单片机选用的是STC12C5616AD,虽然该单片机自带有SPI接口,在一定程度上已经简化了程序,但SD卡文件的操作确实有难度。原来的程序里带有语音,受到单片机存储空间的限制,语音质量太差,没有“暂停”及”上一曲”功能。我去掉了语音,增加了暂停及上一曲功能。其中暂停功能的实现花了我不少时间,本来想当暂停的时候就让单片机进入死循环,开始的时候再跳出来,结果试了以后发现完全不是那么回事。单片机PWM信号的输出本来就用的中断,单片机进不进入死循环,中断还是一样的工作。要不就让它在暂停的时候掉电或是待机什么的呢?好吧,查STC12C5616AD的手册。一看手册我笑了,PCON电源控制寄存器不正是我想找的吗,单片机进入掉电模式,单片机状态维持当前值,呵呵……问题解决。功放部分采用了LM386功放芯片,直接引用了网上LM386的典型应用电路。

图25.6 WAV音乐播放部分的电路

5.显示部分

电路如图25.7所示。为了能有好的显示效果,显示部分用的是32×16的高亮度聚光蓝色LED组成的点阵屏,1kΩ电阻限流。全过程手工焊接,可能我焊得慢,整整焊了一晚上。焊接状态与电路细节如图25.8、图25.9所示。

图25.7 显示部分的电路

由于时钟部分跟频谱分析部分共用点阵屏,所以必须考虑两路信号的隔离分时显示。还有就是32列LED的列驱动问题。信号的隔离分时显示我用的是74HC573锁存器,通过控制OE端口将需要显示的信号线路的74HC573选通,而将另外一组信号通过74HC573的高阻态实现隔离。LED的列驱动选用的是74HC154(4线—16线译码器),只需一组I/O口就可实现32列LED的列驱动了。

到此,整个系统的介绍就完了,在这里特别感谢数码之家论坛的hit00版主在制作过程中给予的大力帮助。图25.10就是这个实物作品的全家福。

为了尽量减少干扰和连线,整个板子电源全是用焊锡走的线。信号线采用杜邦线和插针连接,方便调试。

虽然制作时觉得挺累,但当看到自己做的东西“跑”起来那一刻,就什么都值了,我相信每一个DIY爱好者都会有这种感觉吧,也许这就是DIY的乐趣。相关源程序可到qq群657864614进行下载。

图25.8 焊接状态

图25.9 电路细节

图25.10 完成的电路板实物

划重点:现收集整理了1300G电子技术资料,一口价68元,需要的朋友可以私聊我!

相关问答

单片机 时钟 周期怎样计算(比如6MHZ的晶体振荡)_作业帮

[最佳回答]如果是51单片机的话时钟周期是机器周期的12倍机器周期是晶振频率的倒数1/6MHz=1/6us那这样的就是51单片机的时钟周期就是12*(1/6us)=2us如果是51...

单片机 24小时 时钟 ,怎么利用按键实现控制 时钟 时间暂停和回复时间走动呢?

时间一般采用定时器T0或T1,清零TR0、TR1可实现暂停,置位TR0、TR1可恢复时间一般采用定时器T0或T1,清零TR0、TR1可实现暂停,置位TR0、TR1可恢复

51 单片机 设置 时钟 带日期a.用AT89S51 单片 ... _作业帮

[最佳回答]要实物还是仿真呢我做单片机的

单片机 实现500KHZ 时钟 信号?

500kz的时钟周期是2us在12M晶振的情况下,机器周期1us,不能用中断,因为进中断就要3个机器周期即3us就已经超出了时钟周期(另外退中断和高低电平切换也要花掉...

如何让 单片机 掉电保持设置的时间不变动?

1.对于较老型号的单片机,可外扩串口时钟芯片+纽扣电池的方法,如DS1302+3.6V镉电池。2.8051系列,可外扩并口时钟芯片DS12887,DS12887内含电池,只是并口方式...

怎么用按键调整 单片机 的延时时间-ZOL问答

MOVA,HOUR;显示时钟的个位ANLA,#0FHMOVCA,@A+DPTRMOVP0,AMOVP2,#0F0...以前我的单片机课程设计,提供给你参考参考,不过只有调分和调时...

51 单片机 怎样用按键设定定时时间?

1.程序中通过扫描按键,获得按键值,并付给按键变量。2.确定按键完成的条件(按确定键或一定延时量)3.按键完成后,处理按键变量,并计算为设定延时值4.时钟...

单片机 的频率是什么意思?

单片机的频率指的是单片机内部时钟的频率,也就是单片机能够执行指令的速度。通常情况下,单片机的频率越高,其处理能力就越强。频率的单位是赫兹(Hz),表示每秒...

单片机 模拟 时钟 系统流程分析?

如果是模拟量,这种模拟量一般是用运放电路,把这个信号转换成0-5v的信号。如果是开关量,就简单了,信号驱动能力大的话可以用光耦,驱动能力小就用三极管,都可...

单片机时钟 有哪些产生方式?

单片机时钟产生方式主要有晶振、RC振荡器、DDS、PLL等方式。其中,晶振作为产生单片机时钟信号的主要方式,其具有稳定性高和频率精度高的特点,同时其成本也比较...

猜你喜欢