搜索
bottom↓
回复: 31

添加一个应用范例:DTMF电话拨号器 (已更新为MEGA8芯片)

[复制链接]

出0入0汤圆

发表于 2004-10-19 15:46:23 | 显示全部楼层 |阅读模式
这是一个怎样使用AT90S2313制作一个DTMF电话拨号器的试验,在附件里我提供了各种相关资源,包括DEMO版的编译器和PROTEL99的原理图等,在源程序里给每一行程序都进行了注释,希望大家能通过本应用范例一睹BASCOM-AVR简单易用效率高的风采,能接受这个比较异类的编译器。



点击此处下载DTMF拨号器(90S2313)相关文件包 (已停止下载)




-----此内容被gxlujd于2004-10-20,08:26:17编辑过
头像被屏蔽

出0入0汤圆

发表于 2004-10-19 15:51:19 | 显示全部楼层
谢谢。我看一下后,就会将它制作成范例!



给 gxlujd 加200分!以鼓励这种无私的交流精神!

出0入0汤圆

 楼主| 发表于 2004-10-19 15:53:28 | 显示全部楼层
谢谢阿莫,我还有很多这种小项目,等有时间我一一传上来跟大家分享。
头像被屏蔽

出0入0汤圆

发表于 2004-10-19 17:10:51 | 显示全部楼层
好的。我正在制作成网页形式。写得非常详细!



不过如果有数码相机,将实物图拍摄一下,效果就更好啦。

出0入0汤圆

 楼主| 发表于 2004-10-19 21:41:22 | 显示全部楼层
我是在双龙的SL-AVRAD上做实验的,万能板没时间焊啊!不过我会尽量补充的。这里真好,不排斥使用其他编程语言的人,不像21IC,人人都以会C为尊,其他的理都不理。
头像被屏蔽

出0入0汤圆

发表于 2004-10-19 21:59:46 | 显示全部楼层
如果有数码相机,那实验器上的图片也可以拍一张啊。如果数码相机,也就算了。你的资料已经够详细。



其实使用什么语言, 最后都是由编译器编译成汇编。



我相信,将 basic语言改写成C 并不是困难的事,关键是设计原理。



今晚迟点我会将它整理入网站。(也要将红日的 Jtag 资料整理入网站,工作量还挺大的呢 :)
头像被屏蔽

出0入0汤圆

发表于 2004-10-19 23:34:19 | 显示全部楼层
已经收录到网站中了: http://www.ouravr.com/app_DTMF_dialer_with_bascom-avr.html

出0入0汤圆

 楼主| 发表于 2004-10-20 02:02:34 | 显示全部楼层
最新版本的DTMF拨号器(使用MEGA8芯片),除了修改90S2313芯片版本的一些小BUG,还增加了实物照片和演示视频等相关资料,这回改用MEGA8芯片是为了以后添加重拨、最近拨号号码记忆以及快捷键等功能,毕竟90S2313芯片资源太少不好扩展功能。还得烦劳阿莫帮我更新网页哦,谢谢啦!



点击此处下载DTMF拨号器(MEGA8)相关文件包

头像被屏蔽

出0入0汤圆

发表于 2004-10-20 10:21:42 | 显示全部楼层
谢谢。照片拍得不错啊。一会有时空更新。
头像被屏蔽

出0入0汤圆

发表于 2004-10-20 17:59:51 | 显示全部楼层
已经更新。



咦,彩虹那张线路图gif格式是怎么转换出来的呢? 我现在的方法有点笨,需要在photoshop 里贴几次再拼起来。谢谢。

出0入0汤圆

 楼主| 发表于 2004-10-20 21:57:00 | 显示全部楼层
是这样的:先在PROTEL里全选整个图纸,复制,然后在WORD里粘贴出来,将word的显示比例调整为10%,把图片尽量拉大,然后保存为HTML格式,然后在保存HTML文件的地方有个跟HTML文件同名的文件夹,里面就有这个GIF图片,将该图片的文件复制出来就OK了。
头像被屏蔽

出0入0汤圆

发表于 2004-10-20 22:02:21 | 显示全部楼层
呵呵,立即去试一下。谢谢。

出0入0汤圆

发表于 2004-10-20 22:33:08 | 显示全部楼层
PROTEL图纸可以这样放在word中

http://www.527dz.com/cgi-bin/topic.cgi?forum=2&topic=19&show=0



还有一个办法,将PROTEL图纸通过PDF创建软件转换成PDF文档,然后再用PDF的照相功能就很容易生成图片了。这样做的图片效果非常清晰。
头像被屏蔽

出0入0汤圆

发表于 2004-10-20 23:18:25 | 显示全部楼层
PDF 是个好方法。



PDF的照相功能? 我没有使用过呢。527dz能否说得详细点。谢谢。

出0入0汤圆

发表于 2005-2-21 10:59:59 | 显示全部楼层
用PDF方式打开后直接可以保存成图片格式。

出0入0汤圆

发表于 2005-11-10 17:33:19 | 显示全部楼层
下面是m8电话拨号的源文件:



Config Kbd = Portd , Delay = 1                              '使用端口D建立简易键盘,延时100毫



秒去除按键抖动。

Dim A As Byte , B As Byte                                   '定义全局变量A和B为字节型变量,其中



A保存上次的键值,B保存当前的键值。

Enable Interrupts                                           '打开全局中断。

Config Portb = Output                                       '配置端口B为输出。

Portb = &H00                                                '设端口B初始值为0,即所有IO线为低电平。





Cursor Off                                                  '关闭LCD的光标。

Cls                                                         'LCD清屏。

Do                                                          'DO……LOOP之间无条件循环。

  B = Getkbd()                                              '读取键盘值,将其赋给变量B。

  If B < 12 And A <> B Then                                 '判断,如果B的值小于16和变量A的值不



等于变量B的值就执行以下语句,以此判断是否有键被按下,和被按下的是新的键还是



旧键连击。

     Select Case B                                          '状态机:根据B的值选择分支。

        Case Is < 10                                        '如果B的值小于10则说明按下的是数字键,键



值转换为字符后在LCD显示出来。

           Lcd Str(b)

        Case 10                                             '如果B等于10就在LCD显示“*”。

           Lcd "*"

        Case 11                                             '如果B为11就在LCD上显示“#”。

           Lcd "#"

        Case Else                                           '对于未列举的情况则清除LCD并显示“ERROR





           Cls

           Lcd "ERROR"

     End Select                                             '状态机结束标志。

     Dtmfout B , 100                                        '在OC1A脚输出DTMF信号,信号值为变量B



的值,信号时间为100毫秒。

  End If                                                    '判断结束标志。

  A = B                                                     '将此时的变量B的值暂存到变量A。

Loop                                                        'DO……LOOP之间无条件循环。

End     



*************************************************************************************

我觉得程序好像有点错误(可能是我自己的错觉)

我觉得里面的:

If B < 12 And A <> B Then

应改为:

if b <16 and a<>B then



还有,我不明白他为什么还要加一条语句  "A<>B"

如果我的电话号码有连续几个相同的数字的话,那号码岂不是输不进?

出0入0汤圆

发表于 2005-11-25 11:03:16 | 显示全部楼层
终于想明白了,程序中为什么要判断A<>B了,这句话主要是为了按一次键才显示一个数字,不会出现长时间按住同一个键时不停的输入数字!

出100入0汤圆

发表于 2005-11-30 12:22:02 | 显示全部楼层
呵呵,我还是比较佩服用汇编的

出0入0汤圆

发表于 2005-12-21 02:06:22 | 显示全部楼层
我试了一下,并不能拨出去的啊,虽然有声音和显示可不能拨号啊

出0入0汤圆

发表于 2005-12-21 16:26:07 | 显示全部楼层
难道大家都没有试过吗 用过的朋友请来发言吧

出0入0汤圆

发表于 2006-1-10 23:37:09 | 显示全部楼层
这个案例很好,但如何把键盘输入的数字 存入EEPROM,然后再拨出去呢?

出0入0汤圆

发表于 2006-3-22 20:07:21 | 显示全部楼层
Dtmfout 这个函数在什么地方?

出0入0汤圆

发表于 2006-3-22 22:48:57 | 显示全部楼层
Dtmfout这是BASICOM的,不是C的


-----此内容被zhangyue9331于2006-03-22,22:49:35编辑过

出0入0汤圆

发表于 2006-3-29 23:16:22 | 显示全部楼层
楼主这个电话拨号器是怎么拨出号的,能拨手机吗,连通电话能不能把一段录间放给对方听吗

出0入0汤圆

发表于 2007-10-9 10:11:09 | 显示全部楼层
“我试了一下,并不能拨出去的啊,虽然有声音和显示可不能拨号啊 “
楼主指教下,要拔出去,电路上还需要加什么电路?

出0入0汤圆

发表于 2007-10-9 10:45:41 | 显示全部楼层
楼主厉害个!

出0入0汤圆

发表于 2007-10-13 14:47:56 | 显示全部楼层
我也用PWM生成DTMF信号(c语言编写),为了发出的DTMF信号符合国家标准,软件和硬件费了很大劲,欢迎探讨,QQ:360123972

出0入0汤圆

发表于 2010-3-22 21:03:59 | 显示全部楼层
呵呵,不错。。

出0入0汤圆

发表于 2011-5-30 14:44:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-17 16:07:37 | 显示全部楼层
好帖子 菜鸟过来学习

出0入0汤圆

发表于 2011-10-11 12:49:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-12 13:13:59 | 显示全部楼层
学了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-7 19:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表