找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1701|回复: 12
打印 上一主题 下一主题
收起左侧

单片机Proteus仿真可以成功实现方波输出和调频,但是制作的实物电路就不行了

[复制链接]
跳转到指定楼层
楼主
ID:792300 发表于 2021-1-12 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码调试和protues仿真都可以成功实现方波输出和调频。但是实物用示波器就不能,求大佬帮助

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
float fosc=11059200;
sbit KEY=P1^0;
sbit OUTPUT=P2^0;
sbit P2_0=P2^0;
uchar zkb;
uint freq;
uchar TIMER0_L,TIMER0_H,TIMER1_L,TIMER1_H;
void delay(uchar n)
{
uchar i;
        while(n--)
        {
                for(i=255;i>0;i--)
                {
                }
        }
}
void chushihua(void)
{
P1=0x01;//00000001
freq=1000;
zkb=50;
P2_0=1;
TIMER0_L=0x67;//11100000
TIMER0_H=0xfc;//10110001
TIMER1_L=0xf0;//11110000
TIMER1_H=0xd8;//11011000 定时器高、低赋初值
TL0=0x67;
TH0=0xfc;//T0计数器赋初值
TL1=0xf0;
TH1=0xd8;//T1计数器赋初值
TMOD=0x11;
IT0=1;//INT0为下降沿中断
EX0=1;//INT0中断
ET0=1;//打开定时器0的中断
ET1=1;//打开定时器1的中断
EA=1;//中断允许
TR0=1;//表示定时器0工作。
TR1=1;//表示定时器1工作。
}//初始化
void main(void)
{
                chushihua();
                        while(1)
                        {

                        }
}
void Timer0_freq() interrupt 1//对应定时器/计数器0中断;
{
TR0=1;
TL0=TIMER0_L;
TH0=TIMER0_H;
OUTPUT=~OUTPUT;
}
void Timer1_zkb() interrupt 3//对应定时器/计数器1中断
{
TR0=0;
TL1=TIMER1_L;
TH1=TIMER1_H;
OUTPUT=~OUTPUT;
}
void keyscan() interrupt 0 using 1//对应外部中断0
{
float TF0,TZ1;
EX0=0;
delay(10);
if(P1!=0x01)
{
if(KEY==0) freq+=1000;
if(freq>10000) freq=1000;
TF0=(65536-fosc/(11.0592*freq));
TZ1=(65536-(fosc*zkb)/(11.0592*100*freq));
TIMER0_H=(uint)TF0/256;
TIMER0_L=(uint)TF0%256;
TIMER1_H=(uint)TZ1/256;
TIMER1_L=(uint)TZ1%256;//计算定时器0和定时器1
}
P1=0x01;
EX0=1;
TR0=1;
TR1=1;
}

2.jpg (1.57 MB, 下载次数: 19)

2.jpg

1.png (38.25 KB, 下载次数: 23)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2021-1-13 08:36 | 只看该作者
如果实物有示波器的话建议功能一个个验证,先弄占空比到实物完成后再弄其他。
回复

使用道具 举报

板凳
ID:844772 发表于 2021-1-13 11:02 | 只看该作者
是不是目前只有方波,不能调频?发个实物示波器的图片呗。
回复

使用道具 举报

地板
ID:877228 发表于 2021-1-13 17:03 | 只看该作者
需要详细描述一下现在的问题,先确认好单片机的工作状态,另外在做示波器实际测试时,建议将R7接地,示波器直接测量R7两端
回复

使用道具 举报

5#
ID:390416 发表于 2021-1-13 17:06 | 只看该作者
天天玩仿真,实物搞不定,将来怎么工作?有哪个公司会请你?有哪个客户会看看你的仿真就下百万小订单?
回复

使用道具 举报

6#
ID:792300 发表于 2021-1-13 21:40 | 只看该作者
人人学会单片机 发表于 2021-1-13 17:06
就你这样,天天玩仿真,实物搞不定,将来怎么工作?有哪个公司会请你?有哪个客户会看看你的仿真就下百万小 ...

我不是不懂再问吗??谁生下来就会啊??
回复

使用道具 举报

7#
ID:792300 发表于 2021-1-13 21:41 | 只看该作者
ZHHB 发表于 2021-1-13 17:03
需要详细描述一下现在的问题,先确认好单片机的工作状态,另外在做示波器实际测试时,建议将R7接地,示波器 ...

r7是保护电阻
回复

使用道具 举报

8#
ID:792300 发表于 2021-1-13 21:43 | 只看该作者
glinfei 发表于 2021-1-13 11:02
是不是目前只有方波,不能调频?发个实物示波器的图片呗。

示波器如图

555.jpg (1.89 MB, 下载次数: 22)

555.jpg
回复

使用道具 举报

9#
ID:844772 发表于 2021-1-14 11:25 | 只看该作者
void Timer1_zkb() interrupt 3//对应定时器/计数器1中断
{
  TR0=0;    你在这关了以后就没打开啊,所以应该能改变频率,只是和你想的不一样。

TF0=(65536-fosc/(11.0592*freq)); 应该除以12而不是11.0592,所以你的频率稍慢了。

另外,你不会真的把开关给短接了吧?
回复

使用道具 举报

10#
ID:146782 发表于 2021-1-14 11:31 | 只看该作者
你仿真图上按键是短路的,实物也是这样吗?
回复

使用道具 举报

11#
ID:792300 发表于 2021-1-14 18:45 | 只看该作者
glinfei 发表于 2021-1-14 11:25
void Timer1_zkb() interrupt 3//对应定时器/计数器1中断
{
  TR0=0;    你在这关了以后就没打开啊,所以 ...

我使用的11.2592MHZ的晶震,TRO后边是打开了的
回复

使用道具 举报

12#
ID:792300 发表于 2021-1-14 22:38 | 只看该作者
问题已经成功解决,谢谢大家的帮助。是代码output 哪儿有点问题,改过了就好了,谢谢大家
回复

使用道具 举报

13#
ID:882417 发表于 2021-8-26 14:47 来自手机 | 只看该作者
我去年七岁 发表于 2021-1-14 22:38
问题已经成功解决,谢谢大家的帮助。是代码output 哪儿有点问题,改过了就好了,谢谢大家

请问楼主怎么改的呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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