
500HZ方波周期是2ms,只需定时器1ms,将管脚状态取反一次就其可,若按下按键,改为定时500us即可,程序如下:
#include <reg51h>
sbit key=P1^0;
void main()
{
unsigned int n=1000;
TMOD=0X01;//定时器0工作方式1
TH0=(65536-N)/256;//定时器初值,先是定时1000US
TL0=(65536-N)%256;
ET0=1;//开定时器0中断
EA=1;//开总中断
TR0=1;//启动定时器0
while(1)
{
if(key==0)//判断按键是否按下
{
delay_ms(20);//延时消抖动
if(key==0)n=500;
}
}
}
中断程序如下:
void timer0() interrupt 1
{
TH0=(65536-N)/256;
TL0=(65536-N)%256;
P2^0=~P2^0;//P20输出方波
}
延时子程序略
程序为:
#include<reg51h>
#define uchar unsigned char
#define uint unsigned int
sbit Waveout=P1^0;
uchar
void main()
{
TMOD=0x01;
TH0=0xFF;
TL0=0xE8; //TL0=(65536-24)%256=232,即E8
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_time() interrupt 1
{
TH0=0xFF;
TL0=0xE8;
Waveout=!Waveout;
}
扩展资料
使用方法
1.将仿真器插入需仿真的用户板的CPU插座中,仿真器由用户板供电;
2.将仿真器的串行电缆和PC机接好,打开用户板电源;
3.通过Keil C 的IDE 开发仿真环境UV2 下载用户程序进行仿真、调试。
硬件说明
1、使用用户板的晶振:仿真器晶振旁有两组跳线用来切换内部晶振和用户板晶振,当两个短路块位于仿真器晶振一侧时,默认使用仿真板上的晶振(110592MHz), 当两个短路块位于电容一侧时,使用用户板的晶振。
2、为便于调试带看门狗的用户板,仿真器的复位端未与用户板复位端相连;故仿真器的复位按钮只复位仿真器,不复位用户板;若要复位用户板,请使用用户板复位按钮。
参考资料来源:百度百科-51单片机
这个就不需要什么电路了吧,有个51最小系统板+LCD1602液晶+几个按键就OK了,因为你是输出脉冲嘛,51也就只能输出高低电平的脉冲了,外加一个液晶显示即可。你到网上查一下液晶的连接电路就OK,一大把的。
另外你说的程序也并不难啊,频率这么低,用定时计数器就可以实现了。可以做一个公式,用频率或者占空比算出具体的定时器的计数值。公式嘛,当然也是你想一下了,呵呵。
综合来看,难点就在于键盘控制而已,要读入键盘值,然后进行数据整合处理。
每计一次为一个机器周期,如果振荡频率为12MHz,则一个机器周期为1us,一般采用方法,是设计一基本延时,然后通过一参数来实现不同的延时要求,象你程序中的NUM
按12MHz来算,如果要产生1000Hz的方波信号,也就是周期为1ms的方波,则要计数1000次就好,所以我认为,最好固定X,然后改变NUM实现
比如固定X为1000,当NUM=1时,表示为1000Hz,当NUM=10就为100Hz了,而当NUM=100就为10Hz,当NUM=5就为200Hz按照这个思路,以振荡频率为12MHz来算,程序可更改为:
#include "reg51h"
#define uint unsigned int
uint num,x;
sbit a=P0^6;
sbit b=P1^0;
sbit c=P1^1;
sbit d=P1^2;
sbit e=P1^3;
main()
{
while(1)
{
if(b==0) num=100; //10hz
else if(c==0) num=10; //100hz
else if(d==0) num=5; //200hz
else num=1; //1000hz
TMOD=0x10;
EA=1;
ET1=1;
TR1=1;
x=0;
}}
void T1_time()interrupt 3
{
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
x++;
if(x==num) {x=0;a=~a;}
}
以上就是关于利用KEIL(C51)编写程序, 1) 利用设计的程序使单片机产生1KHz方波全部的内容,包括:利用KEIL(C51)编写程序, 1) 利用设计的程序使单片机产生1KHz方波、51单片机产生40KHZ方波、用51单片机产生方波等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)