找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 223078|回复: 540
打印 上一主题 下一主题
收起左侧

单片机红外遥控万年历,带上位机、视频演示,(全部源码+PCB+原理图)应该算本坛最强大

  [复制链接]
跳转到指定楼层
楼主
ID:51130 发表于 2013-6-21 00:42 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
虽然在高手如云的51hei论坛,这种时钟制作很多,今天整了下硬盘,翻出了大一升大二后的一个小制作,也来凑凑热闹,那时刚进实验室不久,什么都还没做过,就一个劲地学,后来以网上看到这个比赛,就报了名,当时想着练练手,也顺便当是这四个多月来的学习总结,没想到最后竟意外地得了一等奖,虽然现在知道这个奖的含金量不高,呵呵,不过当时很高兴。

现把这个作品的全部资料上传,包括全部原理图、PCB,以及上位机和下位机的源程序,高手请不要拍砖,这个给新手练练手还是挺好的,毕竟做个电子时钟是新手学习路上的一个很好的练手题材。
=============================================================
本时钟配置清单如下:
-------------------------------------------------------------
主控:51单片机,可用AT89S52,也可用STC89C52
显示:12864(ST7920,带字库版本的)
时钟:DS1302,配有一电池,掉电时间不停
温度:DS18B20
红外接收:HS1838
闹铃:有源蜂鸣器
遥控器:32位编码类型的
通信接口:MAX232
客户端软件:VC6.0开发的
=============================================================

当时没有相机,是用问同学借的摄像头拍的,不过还算清楚。
先来两张工作界面图片:

上位机一工作界面


下位机一工作界面


主原理图


副原理图


主PCB图


副PCB图


做好的热转印板-主PCB


做好的热转印板-副PCB


做好的串口模块


做好的主模块1



当时用的遥控器


菜单:调整时间


调整时间界面


报警温度界面


菜单:设置闹铃


设置闹铃界面


串口接线引出口


上面发了这么多图片,占了51hei论坛不少硬盘
现在把原理图和PCB上传上来,有99SE的工程,也有我打印出来的PDF版的:
PDF格式原理图和PCB PDF格式.rar (176.04 KB, 下载次数: 1831)
protel99se格式原理图和PCB protel99se格式.rar (208.14 KB, 下载次数: 1681)


PCB上传完就该到工程源码上场了,有两个,一个是51的KEIL工程源码,一个是VC6.0的工程源码:
KEIL C51工程源码 12864(下位机).rar (104.76 KB, 下载次数: 2968)
VC6.0上位机工程源码 VC(上位机).rar (1.9 MB, 下载次数: 3561)


演示视频不懂怎么弄上来,就有网址而已:
下位机功能演示视频:

http://www.56.com/u23/v_NDQ5MjI0Mjg.html
上位机与下位机通信、工作演示视频A:

http://www.56.com/u28/v_NDQ5MjMzMTM.html
上位机与下位机通信、工作演示视频B:
http://www.56.com/u89/v_NDQ5MjMzNzQ.html
上位机视频播放功能演示:
http://www.56.com/u79/v_NDQ5NDQ4MzY.html

终于发完了:),所有资料都有,在51hei论坛应该算功能最强大的电子时钟之一了吧,还有遥控和上位机,不知道可不可以得个cool。

最后秀一下本论坛的会员nojiya88依据本资料做出来的作品,他还加了外壳,看起来比较漂亮!!网址:http://www.51hei.com/bbs/dpj-28628-1.html

评分

参与人数 11威望 +50 黑币 +105 收起 理由
a962671336 + 8 很给力!
小小的我丶 + 4 很给力!
wei335 + 1 赞一个!
WellDonecong + 5 很给力!
仰望星空753521 + 5 很给力!
lolop + 5 很给力!
zhaok2013 + 12 赞一个!
ssfc + 5 很给力!
msifortinet + 5 厉害了 我哥
madell + 5 很给力!
admin + 50 + 50 发布作品的奖励,大家多多上传可赚取M币

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏136 分享淘帖 顶19 踩1
回复

使用道具 举报

沙发
ID:51130 发表于 2013-7-7 18:21 | 显示全部楼层
xiao_liang2011` 发表于 2013-6-28 20:17
大二,太厉害了~~怎么我上学时,感觉这些东西都还没开始学呢,,,,

不过我想知道你的原理画的很漂亮 ...

是用protel 99se画的,和平时画元件库差不多,只是要多花点心思和时间。如果想用的话,下载这个PCB,有protel 99se格式的,导出加到你的元件库中
回复

使用道具 举报

板凳
ID:51130 发表于 2013-7-7 18:27 | 显示全部楼层
zhengguang 发表于 2013-7-5 23:07
查了几遍硬件,没错啊.就是不显示,没辙了.还是弄个不带遥控的好了.

不错,你做出来这个也很好,还带农历显示呢,真不错。
如果你再讲究一些检查方法的话,可能你会学到更多,因为排错也是以后工作的一种技能嘛,相信从中,你也会学到更多。
首先,你别就光查硬件,要由现象去分析,从你发的图可看到你11月30号做出过一个了,那说明你的屏是可以正常工作的,你应该有能力确定硬件没问题,在查了几遍硬件后,还是不行,我觉得你应该去查一下程序了;
然后,你把程序烧进去后,你的屏都没有显示,这应该很明显,屏初始化肯定没成功!!你看看屏的控制管脚对没,数据口对没,这些都对了之后,再看看12864屏的初始化函数。实在不行,你不想看我的那个12864的初始化函数对不对,你可以加入一个你的12864屏模块,然后,首先调用你的12864屏初始化函数,然后就用一个死循环停住,不执行后面的程序,只查12864屏初始化函数,这样就能看到是不是我的屏初始化函数有问题了,你说是吧;
最后还是不行的话,你加我QQ:1292136790,我帮你搞定。
回复

使用道具 举报

地板
ID:51130 发表于 2013-7-7 18:47 | 显示全部楼层
wangyin 发表于 2013-7-7 18:40
楼主我做出来了但是用的红外接收头是vs1838b一体化接收头,遥控器用的是电视机的万能遥控器以及家里所有的 ...


呵呵,恭喜wangyin坛友仿制成功,你换的字体比我原来的好看多了!!

我也是用了一个电视机的万能遥控器,至于你说的遥控器没反应,请问没反应到什么程序??请具体说说。你打开上位机连接上下位机,再按下遥控器看看,如果是能正常解码的遥控器的话,你按下的那个按键的红外编码值会发送到上位机上,并在上位机上显示出来的,这样,你就连编码值都知道了。
回复

使用道具 举报

5#
ID:51130 发表于 2013-7-8 00:03 | 显示全部楼层
本帖最后由 jiaren 于 2013-7-8 00:08 编辑

你这个有点奇怪,怎么你连上了上位机后,上位机上的时间日期温度都没有更新啊??
正常的现象应该是:
连上上位机后,后有时间温度的更新,而红外编码应该是还没有的,因为,还没有按下遥控器嘛,然后,按下遥控器上某个键,如果能正确解码的话,那么,相应的编码值会更新在右下角这个红外码值区。

为了测试,我也打开了上位机,下面是我连接通信后的显示图:


而接下来这一张则是我按下了遥控器上的一个按键后的更新图:

回复

使用道具 举报

6#
ID:51130 发表于 2013-7-8 00:12 | 显示全部楼层
wangyin 发表于 2013-7-8 00:10
刚打开的时候是没有显示的,时间那一栏显示的好象是电脑时间。
那些信息应该是之前操作过后,可能是存在电 ...

哦,你晶振用的是多少的??我看到你的图上收到的红外编码是不对的,竟然的汉字出来了!!!
千万别和我的原理图上那个一样,我原先是没打算做有上位机的,所以,一开始时我用的是12M的晶振,后来,做加上了上位机,然后晶振就换成了11.0592M的了,因为这样波特率才准,但是原理图上忘了改回来了。
你连接上后没有更新时间等一些常规信息,应该你的波特率不对,再加上你的红外编码收到的竟然是汉字,更加确定波特率不对了。
在这也给各位坛友说一声不好意思,因为太久了,晶振这个事我都忘了。
回复

使用道具 举报

7#
ID:51130 发表于 2013-7-8 00:18 | 显示全部楼层
你的遥控我想应该不适合我那个解码程序。你另找个试试看。
另,给你发一个我以前的遥控解码显示工程,如果你用这个工程能解码某个遥控器,那就说明,该遥控器可用了。

测试工程源码:HS0038B测试1602显示:http://www.51hei.com/mcu/1984.html 我之前发布在51hei的资料
回复

使用道具 举报

8#
ID:51130 发表于 2013-7-8 00:22 | 显示全部楼层
我也是用了一个电视机的万能遥控器,我的这个是可以换编码的,可以换很多种,以适应不同的电视机,不知你的是不是也是这种,如果是的话,你就换一下别的编码,直到可以解码为止,然后就保持该编码方式,不换了。
你只有找到可用编码的遥控器,后面我才能告诉你怎么与程序配合,实现功能调节。
==============================
不过还有一种办法,就是你可以自己解码你那个遥控器,然后把你的解码程序段拿来替换我那段程序,这样也可以。
回复

使用道具 举报

9#
ID:51130 发表于 2013-7-8 00:45 | 显示全部楼层
可以解码就可以了,直接遥控时钟板子,然后,在上位机上可以看到它的编码,然后,就是和你提的一样,用那些键替换程序里的码值,这样就行了。至于你说的键值有些超出,我看了一下那个测试代码,的确会导致超出,那是第一次参加电子培训时写的测试程序,有一个超值的问题,你改一下,是在主函数里,当大于9的情况那里,原本是这样:wdat_1602(ldata+0x40);改成这样:wdat_1602(ldata-9+0x40);大于9时忘减去偏移量了,还有hdata也一样改,改好这两处就行了。
你说的上下位机连接的奇怪现象,我试了我的,可以的呀。你的时钟只要能跑,就正常的会发送到电脑上来,不应该会有这奇怪的现象,你自己查查。
回复

使用道具 举报

10#
ID:51130 发表于 2013-7-8 09:02 | 显示全部楼层
wangyin 发表于 2013-7-8 08:56
硬件测试在第一行可以读出编码,第二行没显示,请问第二行显示的是什么内容。
但直接遥控时钟板子没有反应 ...

刚给你看了一下(程序是很久前写的了,我都不记得什么了),第二行是没显示的,就只是一个空的,是自己加上对应于自己的遥控的按键功能描述用的,我那里面没有加,只是单纯的解码而已,你想加就自己加上对应你的遥控器的。
时钟板子没有反应,看来你的时钟板子做的有问题,你别的像什么时间呀都可以传上来电脑,就遥控没反应,说明是你硬件有问题的可能性很大,你好好检查检查。
回复

使用道具 举报

11#
ID:51130 发表于 2013-7-8 11:58 | 显示全部楼层
小哥,调试成功遥控了又进步了。
至于你现在遇到的问题b60885262 的一样,在调整时间、温度是会有乱码出现。这个问题我也很奇怪,看到你们的问题我也调了我的时钟,发现根本就没有看到乱码,不知你们俩的是怎么出现的,同样的程序,得到的结果有一点不一样,应该是硬件有点区别吧。这个问题我不是很清楚怎么回事了,你们俩找找答案。
回复

使用道具 举报

12#
ID:51130 发表于 2013-7-8 12:20 | 显示全部楼层

你好,你发现的这个问题我发现它不是问题,看下面这个源函数就知道了。
你可以用遥控进入调整时间等菜单了,那肯定菜单对应的按键结果result=12返回了
case 0x13: result=12;  break;   //菜单
别的按键我就不用说有没有返回了。

/*************************************************************
                红外编码数据处理函数函数      
**************************************************************/
uchar workIRcode(uchar *pp)      
{
        uchar  result;
        beep();
        switch(pp[2])
        {
                case 0x00: result=0;  break;   //0
                case 0x01: result=1;  break;   //1
                case 0x02: result=2;  break;   //2
                case 0x03: result=3;  break;   //3
                case 0x04: result=4;  break;   //4
                case 0x05: result=5;  break;   //5
                case 0x06: result=6;  break;   //6
                case 0x07: result=7;  break;   //7
                case 0x08: result=8;  break;   //8
                case 0x09: result=9;  break;   //9
                case 0x0F: result=10;  break;   //-
                case 0x0E: result=11;  break;   //+
                case 0x13: result=12;  break;   //菜单
                case 0x48: result=13;  break;   //OK
                case 0x0A: result=15;  break;   //上
                case 0x0B: result=16;  break;   //下
                case 0x1a: result=17;  break;   //丽音
                case 0x18: result=18;  break;   //静音(关闹钟)
                case 0x17: result=19;  break;   //声音(开闹钟)
                default:  result=14;  break;   //别的键按下返回14
        }
        return  result;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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