波形发生器课程设计_第1页
波形发生器课程设计_第2页
波形发生器课程设计_第3页
波形发生器课程设计_第4页
波形发生器课程设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 题 目 波形發生器 姓 名 院 系 专业班级 学 号 日 期 2010 年 12 月 13 日 2010 年 12 月 19 日 摘要 数模转化器可以实现将数字量转化为模拟量的功能 对于理想的数模转换器 输入的数字量的波形与输出的模拟量之间呈线性关系 因此 通过使用单片机来输 出不同的数字量 再通过 D A 转换 就可以得到不同的波形 本文主要讲述通过单 片机产生方波 三角波 锯齿波 梯形波 正弦波的数字量 并给出相应的 D A 转 化电路 进而得到具有相应波形的模拟量 这五种波形的数字量都可以简单地通过 定时器中断来产生 关键词 波形发生 数模转换 单片机 定时器中断 1 实验原理 利用单片机实现波形输出的重点在于对应波形的数字量的产生 不同波形产生 实质上是对输出的二进制数字量进行相应改变来实现的 在本文中 所有波形的二 进制数字量的产生都通过定时器中断 在每次中断中 八位的二进制数字量通过 I O 口输出 再经由 D A 转化电路转化为模拟量 除正弦信号 其他波形的初始的 八位二进制数字量都为 0 各种波形的数字量产生如下 1 对于方波信号 在每次定时器中断时都对二进制数字量进行位取反 因此 方波信号的二进制数字量总是在 0 x00 和 0 xff 二者上变动 2 对于三角波信号 在每次定时器中断中 二进制数字量依次加 1 达到 0 xff 时依次减 1 3 对于锯齿波信号 其类似于三角波信号 但在达到 0 xff 时将二进制数字量置 为 0 x00 4 对于梯形波信号 其类似于三角波信号 但在达到 0 xff 或 0 x00 时 都会保 持一段时间 5 对于正弦波信号 可以直接对正弦曲线进行均匀取样后直接转化为数字量 在每次定时器中断中 都依序将这些数字量输出 对于 D A 转换 可以利用集成芯片 DAC0832 来实现 由于 DAC0832 输出的是电 流量 在 D A 转换后需要添加额外的比例运放电路来产生电压量 2 实验电路 实验的流程如下 单片机在开始运行后就会不断进行键盘扫描 当按下对应波 形的按钮后 单片机会产生相应波形的数字量 这个数字量作为 DAC0832 的输入再 被转化为电流量 电流量经过两个反比例运算放大器后 转化为电压量输出到示波 器中显示 3 实验结果 实验所产生的方波 三角波 锯齿波 梯形波 正弦波波形如下所示 4 实验体会 5 程序代码 include typedef unsigned char uchar typedef unsigned int uint 正弦曲线四分之一周期曲线的数字量 uchar code sdata 256 128 130 131 133 134 136 137 139 140 142 144 145 147 148 150 151 153 154 1 56 157 159 160 162 164 165 167 168 169 171 172 174 175 177 178 180 181 1 82 184 185 187 188 189 191 192 194 195 196 197 199 200 201 203 204 205 2 06 208 209 210 211 212 214 215 216 217 218 219 220 221 222 223 224 225 2 26 227 228 229 230 231 232 233 234 235 236 236 237 238 239 240 240 241 2 42 242 243 244 244 245 246 246 247 247 248 248 249 249 250 250 251 251 2 51 252 252 252 253 253 253 253 254 254 254 254 254 255 255 255 255 255 2 55 255 255 255 255 255 255 255 255 254 254 254 254 254 253 253 253 253 2 52 252 252 251 251 251 250 250 249 249 248 248 247 247 246 246 245 244 2 44 243 242 242 241 240 240 239 238 237 236 236 235 234 233 232 231 230 2 29 228 227 226 225 224 223 222 221 220 219 218 217 216 215 214 212 211 2 10 209 208 206 205 204 203 201 200 199 197 196 195 194 192 191 189 188 1 87 185 184 182 181 180 178 177 175 174 172 171 169 168 167 165 164 162 1 60 159 157 156 154 153 151 150 148 147 145 144 142 140 139 137 136 134 1 33 131 130 128 timer 用于重装时间常数 static union uint time struct uchar th uchar tl time array timer counter 用于波形发生时的计数 从 0 到 255 static uchar counter state 表示当前所要输出波形 1 表示方波 2 表示三角波 3 表示锯齿玻 4 表 示梯形波 5 表示正弦波 0 表示暂停波形发生 保持 P2 口输出不变 static uchar state new state 根据 P1 口的电平 转化为 state static uchar new state check state bit 用于 get state 函数中 static uchar check state bit direction 表示波形方向 direction 0 表示波形处于上升 direction 1 表示波 形处于下降 static bit direction delay 用于梯形波中 static bit delay stop 表示暂停波形发生 保持 P2 口输出不变 static bit stop 获取当前状态 即哪个按钮被按下 若没有按钮被按下 则 state 保持不变 若 P1 0 0 则 state 1 表示方波发生 若 P1 1 0 则 state 2 表示三角波发生 以此类推 若 P1 5 0 则 state 0 表示暂停波形发生 保持 P2 口输出不变 void get state 优先考虑 P1 5 口 即优先考虑暂停波形发生 if P1 5 new state 0 return check state bit 0 x01 new state 1 while check state bit new state if new state 6 new state state 每次 state 即将发生改变 即切换输出到另一种波形时 都进行初始化 void init P2 0 direction 0 counter 0 检查 P1 口 以输出相应的选择的波形 void check get state 如果 state 即将发生改变 if state new state 当 P1 5 口为低电平 new state 0 则暂停波形发生 则暂停定时器 1 定时 并令 P3 6 口 WR 为高电平 if new state 0 P3 6 1 TR1 0 stop 1 return 切换输出波形 else init state new state if state 4 delay 0 else if stop P3 6 0 TR1 1 stop 0 当 INT0 脚接收到一个下降沿 则触发外部中断 0 则输出波形的周期倍增 void int0int interrupt 0 if timer time 15680 timer time 245 else timer time 1 init 定时器 1 用于波形的发生 void timeint interrupt 3 time time 等价于 time time 65535 time time timer time timer time 1 TL1 timer time array tl TH1 timer time array th timer time timer time 1 方波发生 if state 1 counter if counter 0 xff direction direction P2 P2 counter 1 其余波的发生 else if state 1 输出正弦波 else if state 5 if direction P2 sdata counter 1 else P2 sdata counter 输出三角波 锯齿波 else P2 counter 当波形处于下降过程 if direction 若 counter 下降至 0 则改变波形方向至上升过程 if counter 0 对于梯形波 下降结束后进行延迟 if state 4 delay delay if delay counter 0 xfe else direction direction else direction direction counter else counter 当波形处于上升过程 else 若 counter 上升至 0 xff 则改变波形方向至下降过程 if counter 0 xff 对于梯形波 上升结束后进行延迟 if state 4 delay delay if delay counter 0 x01 else direction direction 对于锯齿波 当上升至 0 xff 将 counter 置为 0 else if state 3 counter 0 else direction direction counter else counter void main IEN 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论