用单片机开发信号发生器
来源:互联网 发布:淘宝网书店购书 编辑:程序博客网 时间:2024/06/09 22:45
首先说说实验要求:用单片机来做(所以要有实验箱),利用D/A转换,产生锯齿波,方波,三角波,正弦波(所以还要准备一个示波器咯),并且通过实验箱上的键盘可以进行四种波形的转换。
怎么样,要求不是很高吧,我们开始吧。首先我们的下载用于编程的仿真软件,仿真软件有很多,比如常用的伟福,比较好用,这里我选择KeilC51来进行编程和仿真 ~~。
1.打开keilc51.exe 。Project ---->New Project.在跳出的dialogue输入文件名如:my frist Project 单击保存.
2.在跳出CPU选择我们选择:Atmel------->AT89c51. 单击"确定".
3.然后File------>new 来创建一个TEXT ,点击保存按钮.
4.展开Target 1----------->右击source Group 1 --------->Add Files to Group 'Source Group 1'
5.弹出的对话框,输入文件名:输入刚才保存的文件名加后缀. 或者在文件类型选择:Asm Source file类型.加如刚才的文件. 单击"ADD",并"CLOSE"完成操作.还容易吧,我打字有点累......
接下来我们就要在刚才新建的text.asm里进行汇编了.
PS:如果要下载到实验箱里去.我们还有需要设置一点东西.就一点点拉.
在Project--->Options for Target 'Target 1',在弹出的对话框里点击"DeBug" 点击右边的"USE" 选择"Keil Monitor--51 Driver"其他的可以不改, 然后确定.
第一步:我们来编写四种波形程序:
1.最简单的方波: 不就是取两个一大一下的值吗,所以我这里选择8051的P0口不断的交替输出00H和FFH两个值.当然中间经过0832D/A进行转换咯/. 这里我们讲个锯齿波.
所谓锯齿波不就是从一个初值往上加像一把锯齿,
代码如下:
ORG 0000H
LJMP START
ORG 0030H
START:
mov dptr,#0feffh ;启动D/A转换
mov a,#00h ;送初值OOH
loop3:
movx @dptr,a ;
inc a
lcall delay2
CJNE a,#0FFH,loop3 ;判断是否为FFH.不是则继续到LOOP3,否则往下执行.
sjmp loop3
delay2: ;延时程序
mov r3,#11
mov 31h,r3
d1: nop
nop
nop
nop
nop
nop
nop
nop
djnz r3,d1
mov r3,31h
ret
end
程序编写完后,进行保存。 然后分别按translate current file, build target ,rebuild all target files 运行编译。下面的信息栏会提示错误和警告信息。编译无误后可以进行下载,不过事先要连好下载器,单片机的P0口接D\A转换器,WR接WR等。下载的时候要按住下载器的按钮,等下载好再松开按钮。
由于打字比较累,所以其他波形就不详细讲了.
如何进行波形的频率进行调节。其实所谓的频率的可调,不过就是改变它的延时的初值,如上面方波的mov r3,#11 ,只要改变r3的值就可改变波形的频率。
因为键盘是相当与一个下升延触发的,所以我们选择中断的方式进行控制频率。
SETB EA ;开CPU中断
SETB IE0 ;开!INT0的中断标志
SETB IE1 ;开!INT1的中断标志
SETB EX1
SETB IT1 ;允许!INT1中断
SETB IT0 ;允许!INT0中断
SETB EX0
mov r3,#11 ;改变方波的 频率
然后把单片机的P1口就键盘,来实现键盘按下之后,可以进行频率的可调,这里设计的比较粗糙,就不进行延时去抖动了。
剩下的就是用拨位开关进行波形的选择.由于有四种波形.所以只要两个开关就OK搞定.
下面是代码:
loop: ;查询键盘
; anl p1,#03h ;使P1.0、P1.0有效
MOV a,p1
cjne a,#00h,l1 ;K1,K2开关为都为低,则输出锯齿波。否则跳到L1
jmp jcb
l1: cjne a,#01h,l2 ;K1高,K2为低,则输出方波。否则跳到L2
jmp fb
l2: cjne a,#02h,l3 ;K1低,K2高,则输出三角波,否则跳到L3
jmp sjb
l3: cjne a,#03h,l4 ;K1,K2全为高,则输出三角波,否则跳到L4
jmp zxb
l4: ajmp loop ;实时查询键盘
就这样差不多了,然后再把代码连起来就可以了(呵呵,这块大家自己动手应该没问题了吧)
今天是8月6号,距离奥运会只剩两天.喊喊口号 北京加油,
奥运加油!
天气:大太阳,怎一个热字了的(大家要注意温室效应啊) 更多内容可以去我的百度空间:http://hi.baidu.com/k65777803/blog/index/1
- 用单片机开发信号发生器
- 17.7 单片机信号发生器程序
- 基于单片机的信号发生器设计
- 基于单片机的信号发生器例程
- 基于ATMEGAL16单片机的信号发生器
- 用51单片机做信号发生器,同时输出四种频率的方波
- [置顶]基于51单片机+DAC0832的信号发生器
- 信号发生器
- 基于51系列单片机的PAL标准行同步信号发生器
- 单片机开发
- AVR单片机开发笔记
- 什么是单片机嵌入式开发
- 单片机AT89C51SND1C开发
- avr单片机开发入门
- 单片机开发板抗干扰
- 单片机开发板
- 单片机开发相关
- 单片机开发环境
- 操纵DOM,创建table,显示获得的数据
- [英语阅读]菲尔普斯蓄须“溜进”北京
- Progress through persistence
- 20080806
- The related article about to recently study --2008,08,04
- 用单片机开发信号发生器
- Flex读取XML中WebService地址,与WebService交互获取数据
- The related article about to recently study --2008,08,02
- 身男女怎样做极品
- 未来计算在“云-端”
- TripleDES加密、解密算法
- 8月6日 Oracle
- 用手机查询北京实时路况
- 自动批量调用阿里巴巴的留言页面