基于51单片机的低频函数信号发生器内容摘要:

盘中断后,用扫描方式确定键号,根据键号,转入各键处理程序。 图 3 键盘中断流程图 正弦波 波形的数据表的实现方法 以正弦波数表为例,输出电压 0U = 128 5 5 sin( / 25 6 2 )128D V N V     π,这里使用的 D/A 转换芯片 DAC0832 采用偏移二进制码实现双极性输出。 因此电压过零时的数字量为 128,第二级运放 LM358 输出电压的调节范围在 8V~+8V 之间。 使用 8 位的 DA 转换器分辨率为 82 ,每周期为 128 个离散点。 单片机向 0832 发送数字编码,产生不同的输出。 先利用采样定理对各波形进行抽样,然后把各采样值进行编码,得到的数字量存入各个波形表,执行程序时通过查表方法依次取出,经过 D/A 转换后输出就可以得到波形。 假如 N 个点构成波形的一个周期,则 0832 输出 N 个样 值点后,样值点形成运动轨迹,即一个周期。 重复输出 N 个点,成为第二个周期。 利用单片机的晶振控制输出周期的速度,也就是控制了输出的波形的频率。 这样就控制了输出的波形及其幅值和频率。 促发 促发 外部中断 NO YES 图 4 软件总流程图 3 心得体会 开始的时候由于没有经验,不知如何下手,所以就去图书管找了一些书看,尽管有许多的设计方案,可是总感觉自己还是有许多的东西弄不太清楚,于是就请教同学。 他常做一些设计,有一些经验。 经过 他的解释分析各方案之后,决定用查表的方法来做。 这样可以降低一些硬件设计的难度,初次设计应切合自己的水平。 我认为程序应该不大,片内 ROM 应该够用的。 用 LCD 显示 输出波形 ,现有集成的接口驱动芯片,波形可通过示波器进行显示,单片机接上 D/A 转换芯片即可,这样硬件很快就搭好了。 我以为这些做好了,构思也有了,写程序应该是相对容易的。 谁知道,写起程序来,才想到功能键要有扫描程序才行呀,我真的感到很难。 那时真的有点想放弃。 于是就去请教了 有经验的同学 , 同学 帮忙分析了一下,自己又查阅了一些资料,终于明白了扫描程序怎么写。 于 是在自己的努力下,程序很快就写好了。 尽管经历了不少的艰辛,但 我积累了一 定的 设计经验,最后也有点小小的成就感。 后面的路还很长,我还 得 努力。 参考文献 [1] 童诗白,华成英 .模拟电子技术基础〔 M〕 .北京 :高等教育出版社, [2] 潘永雄,沙河,刘向阳 .电子线路 CAD 实用教程〔 M〕 .西安:西安电子科技大学出版社,. [3] 张毅刚,彭喜源,谭晓昀,曲春波 .MCS51 单片机应用设计 [M].哈尔滨:哈 开始 初始化液晶 开外部中断 0 判断选择波形 输出选择波形 结束 按键处理 尔滨工业大学出版社, . 附件 : 程序清单: include include include include define uchar unsigned char define uint unsigned int sbit ksaw=P1^0。 //锯齿波按键 . sbit ktran=P1^1。 //三角波按键 . sbit ksquare=P1^2。 //方波按键 . sbit ksin=P1^3。 //正弦波按键 . sbit up=P1^4。 //频率增加按键 sbit down=P3^6。 //频率减小按键 sbit step_unit=P3^7。 //步进量选择 sbit CS=P3^5。 //DAC0832 片选,低电平有效 . uint time_num_1=0。 uchar k。 uchar num=0。 uchar saw_flag=0,tran_flag=0,square_flag=0,sin_flag=0。 //分别为锯齿波、三角波、方波和 正弦波的标志,为 1 时有效 uchar code num_tab[]={0123456789}。 uchar code tab[128]={ 64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106, 109,111,113,115,117,118,120,121,123,124,125,126,126, 127,127,127,127,127,127,127,126,126,125,124,123,121, 120,118,117,115,113,111,109,106,104,102,99,96,94,91, 88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39, 36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1, 1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23, 25,28,31,33,36,39,42,45,48,51,54,57,60}。 void delay( ) { uchar i。 for(i。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。