用51单片机做个信号发生器,不知道频率怎么设。例如,要产生20HZ的频率,我的计算方法是:T=1/20=0.05s。即产生256个数的时间是0.05s,则产生每个电压的时间是0.05/256=195.3125us。那么所要赋的初值是(65536-195.3125)吗?晶振频率是12MHz。
楼主的思路不对。要产生频率稳定的方波首先要考虑系统功能和资源,如果只有输出该方波的期间只可能有这一个任务,那么可以用纯软件延时法,即用一个循环或一组循环嵌套对在对一个或数个变量进行累加时执行一个固定执行周期的代码段,同时要考虑前述指令本身的执行时间。该方法的本质是使用指令执行时间进行凑数。
如果在输出方波时还可能有其它任务或有中断发生,那么就需要使用定时器中断,这里存在对定时器进行时间常数设置的问题,但也未必是255溢出,同样可以用循环变量累加法,而且也要考虑相关代码的执行时间。该法因中断响应的时间不一定是常数,所以可能存在轻微误差,看你要求的精度了。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
12M如果1t定时器时钟50ms时间:
50ms/(1/12M)=60000000
不对,你要按照晶振的频率来算
为了方便大家交流,建了两个QQ群:QQ群3号:198387118 【1000人群】QQ群5号: 239316959【2000人群】群内已有成员3000余人!
更多内容关注微信公众号:单片机精讲吴鉴鹰
用定时/计数器 做的话,比如方波占空比50%,那么T=0.05S的时候,用定时/计数器每过0.025S使某个引脚电平翻转