中易网

求单片机控制基于MC145151-2的频率合成器输出的程序

答案:1  悬赏:50  
解决时间 2021-01-17 09:03
  • 提问者网友:雨不眠的下
  • 2021-01-16 10:54
求单片机控制基于MC145151-2的频率合成器输出的程序
最佳答案
  • 二级知识专家网友:底特律间谍
  • 2021-01-16 12:09
通过百度Hi交流可知:
MC145151-2 是锁相式频率合成器集成芯片,它有 N13~N0 14 个引脚,用于控制输出频率。
其中N13、N11已经接地,N12悬空。
现在要单片按键计数控制管脚,使得输出频率为 5000~5500KHz。
单片机是 STC89C52。
做加、减、清0三个键,N0~N10 接到 P0.0~P0.7、P2.0~P2.3。
按照插图,N11~N0 对输出的控制如下:
011 1000 1000 : 输出 5000 KHz
011 1000 1001 : 输出 5001 KHz
011 1000 1010 : 输出 5002 KHz
…………………………
101 0111 1100 : 输出 5500 KHz
分析可知,最小:0x0388,最大:0x057C。
按照以上要求,设计程序如下。
//============================
#include
sbit K_ADD = P3^3; //+
sbit K_SUB = P3^4; //-
sbit K_000 = P3^5; //清零
//----------------------------
void delay_ms(unsigned int n)
{
unsigned char j;
while(n--) for(j = 0; j < 230; j++); //230是实验测试所得!
}

void main()
{
unsigned int m;
m = 0x0388;
while(1) {
P2 = (m / 256);
P0 = (m % 256);
if (K_000 == 0) {
delay_ms(10);
if (K_000 == 0) {
m = 0x0388;
while(K_000 == 0);
} }
if (K_ADD == 0) {
delay_ms(10);
if (K_ADD == 0) {
m++;
if (m > 0x057C) m = 0x057C;
while(K_ADD == 0);
} }
if (K_SUB == 0) {
delay_ms(10);
if (K_SUB == 0) {
m--;
if (m < 0x0388) m = 0x0388;
while(K_SUB == 0);
} } }
}
//============================
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息