單片機論壇

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 103979|回復: 533
打印 上一主題 下一主題
收起左側

單片機紅外遙控萬年歷,帶上位機、視頻演示,(全部源碼+PCB+原理圖)應該算本壇最強大

  [復制鏈接]
跳轉到指定樓層
樓主
雖然在高手如云的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, 下載次數: 1668)
protel99se格式原理圖和PCB protel99se格式.rar (208.14 KB, 下載次數: 1529)


PCB上傳完就該到工程源碼上場了,有兩個,一個是51的KEIL工程源碼,一個是VC6.0的工程源碼:
KEIL C51工程源碼 12864(下位機).rar (104.76 KB, 下載次數: 2650)
VC6.0上位機工程源碼 VC(上位機).rar (1.9 MB, 下載次數: 3357)


演示視頻不懂怎么弄上來,就有網址而已:
下位機功能演示視頻:

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.sxostgc.com.cn/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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏95 轉播轉播 分享分享 分享淘帖 頂15 踩
回復

使用道具 舉報

來自 2#
nojiya88 發表于 2014-11-16 18:36 | 只看該作者
總算成功了,這個程序的遙控器能控制的不好找,,改了另外一個程序就好辦了[em 01]
回復

使用道具 舉報

板凳
happysunshine 發表于 2013-6-21 09:37 來自手機 | 只看該作者
請問那個PCB板是你自己畫的嗎?   所有的過程包括成型都是自己做的么?    以前一直都是用焊錫焊的線路。
回復

使用道具 舉報

地板
俯首觀天 發表于 2013-6-21 13:06 | 只看該作者
真心厲害了這個,對我們初學者的幫助很大,51hei(51黑)論壇有你更精彩.
回復

使用道具 舉報

5#
T29 發表于 2013-6-28 16:13 | 只看該作者
謝謝樓主!!!此貼必火!!!!51黑有你更精彩!!
回復

使用道具 舉報

6#
xiao_liang2011` 發表于 2013-6-28 20:17 | 只看該作者
大二,太厲害了~~怎么我上學時,感覺這些東西都還沒開始學呢,,,,

不過我想知道你的原理畫的很漂亮呀,還是彩色的,什么畫的
回復

使用道具 舉報

7#
左左右右 發表于 2013-7-1 16:17 | 只看該作者
樓主很強大哦!!!我現在也大二。也學了點東東。。。但是我想往硬件發展,就不像樓主這樣全面拉。神馬上位機這些,都是我另外個同學搞搞,我還是搞我的硬件。。
確實很佩服樓主誒~~~
回復

使用道具 舉報

8#
左左右右 發表于 2013-7-1 16:18 | 只看該作者
想制作一個送給女朋友
回復

使用道具 舉報

9#
波少 發表于 2013-7-4 19:09 | 只看該作者
這是在誘惑我。。。
回復

使用道具 舉報

10#
chenlingshun 發表于 2013-7-5 14:10 | 只看該作者
謝謝樓主的作品,值得學習
回復

使用道具 舉報

11#
zhengguang 發表于 2013-7-5 23:07 | 只看該作者
查了幾遍硬件,沒錯啊.就是不顯示,沒轍了.還是弄個不帶遙控的好了.
回復

使用道具 舉報

12#
 樓主| jiaren 發表于 2013-7-7 18:21 | 只看該作者
xiao_liang2011` 發表于 2013-6-28 20:17
大二,太厲害了~~怎么我上學時,感覺這些東西都還沒開始學呢,,,,

不過我想知道你的原理畫的很漂亮 ...

是用protel 99se畫的,和平時畫元件庫差不多,只是要多花點心思和時間。如果想用的話,下載這個PCB,有protel 99se格式的,導出加到你的元件庫中
回復

使用道具 舉報

13#
 樓主| jiaren 發表于 2013-7-7 18:27 | 只看該作者
zhengguang 發表于 2013-7-5 23:07
查了幾遍硬件,沒錯啊.就是不顯示,沒轍了.還是弄個不帶遙控的好了.

不錯,你做出來這個也很好,還帶農歷顯示呢,真不錯。
如果你再講究一些檢查方法的話,可能你會學到更多,因為排錯也是以后工作的一種技能嘛,相信從中,你也會學到更多。
首先,你別就光查硬件,要由現象去分析,從你發的圖可看到你11月30號做出過一個了,那說明你的屏是可以正常工作的,你應該有能力確定硬件沒問題,在查了幾遍硬件后,還是不行,我覺得你應該去查一下程序了;
然后,你把程序燒進去后,你的屏都沒有顯示,這應該很明顯,屏初始化肯定沒成功!!你看看屏的控制管腳對沒,數據口對沒,這些都對了之后,再看看12864屏的初始化函數。實在不行,你不想看我的那個12864的初始化函數對不對,你可以加入一個你的12864屏模塊,然后,首先調用你的12864屏初始化函數,然后就用一個死循環停住,不執行后面的程序,只查12864屏初始化函數,這樣就能看到是不是我的屏初始化函數有問題了,你說是吧;
最后還是不行的話,你加我QQ:1292136790,我幫你搞定。
回復

使用道具 舉報

14#
wangyin 發表于 2013-7-7 18:40 | 只看該作者
樓主我做出來了但是用的紅外接收頭是vs1838b一體化接收頭,遙控器用的是電視機的萬能遙控器以及家里所有的遙控器都不能操作。不知道是什么原因啊,字體改動了,可以顯示。就是遙控功能不能使用,換了N個遙控器都沒有反應。

回復

使用道具 舉報

15#
 樓主| jiaren 發表于 2013-7-7 18:47 | 只看該作者
wangyin 發表于 2013-7-7 18:40
樓主我做出來了但是用的紅外接收頭是vs1838b一體化接收頭,遙控器用的是電視機的萬能遙控器以及家里所有的 ...


呵呵,恭喜wangyin壇友仿制成功,你換的字體比我原來的好看多了!!

我也是用了一個電視機的萬能遙控器,至于你說的遙控器沒反應,請問沒反應到什么程序??請具體說說。你打開上位機連接上下位機,再按下遙控器看看,如果是能正常解碼的遙控器的話,你按下的那個按鍵的紅外編碼值會發送到上位機上,并在上位機上顯示出來的,這樣,你就連編碼值都知道了。
回復

使用道具 舉報

16#
wangyin 發表于 2013-7-7 23:59 | 只看該作者
打開上位機連接上下位機,按下遙控器,上位機沒有顯示,連續按遙控器后,上位機彈出報錯信息,然后退出程序。
回復

使用道具 舉報

17#
 樓主| jiaren 發表于 2013-7-8 00:03 | 只看該作者
本帖最后由 jiaren 于 2013-7-8 00:08 編輯

你這個有點奇怪,怎么你連上了上位機后,上位機上的時間日期溫度都沒有更新啊??
正常的現象應該是:
連上上位機后,后有時間溫度的更新,而紅外編碼應該是還沒有的,因為,還沒有按下遙控器嘛,然后,按下遙控器上某個鍵,如果能正確解碼的話,那么,相應的編碼值會更新在右下角這個紅外碼值區。

為了測試,我也打開了上位機,下面是我連接通信后的顯示圖:


而接下來這一張則是我按下了遙控器上的一個按鍵后的更新圖:

回復

使用道具 舉報

18#
wangyin 發表于 2013-7-8 00:10 | 只看該作者
剛打開的時候是沒有顯示的,時間那一欄顯示的好象是電腦時間。
那些信息應該是之前操作過后,可能是存在電腦里的,重新打開上位機就出現這種情況。我也詳細看過你的視頻,但是我仿制以后,遙控功能就是不能使用,不知何故。
回復

使用道具 舉報

19#
 樓主| jiaren 發表于 2013-7-8 00:12 | 只看該作者
wangyin 發表于 2013-7-8 00:10
剛打開的時候是沒有顯示的,時間那一欄顯示的好象是電腦時間。
那些信息應該是之前操作過后,可能是存在電 ...

哦,你晶振用的是多少的??我看到你的圖上收到的紅外編碼是不對的,竟然的漢字出來了!!!
千萬別和我的原理圖上那個一樣,我原先是沒打算做有上位機的,所以,一開始時我用的是12M的晶振,后來,做加上了上位機,然后晶振就換成了11.0592M的了,因為這樣波特率才準,但是原理圖上忘了改回來了。
你連接上后沒有更新時間等一些常規信息,應該你的波特率不對,再加上你的紅外編碼收到的竟然是漢字,更加確定波特率不對了。
在這也給各位壇友說一聲不好意思,因為太久了,晶振這個事我都忘了。
回復

使用道具 舉報

20#
wangyin 發表于 2013-7-8 00:16 | 只看該作者
換了晶振以后可以連接,但遙控還是不能用,按下遙控的電源鍵后時間顯示會停止,按其他鍵后可恢復顯示。
另外,原來按下遙控會出錯的原因是將紅外接收頭輸出接在P3^1口,現改為P3^2口就不會出錯。
上圖:
回復

使用道具 舉報

21#
 樓主| jiaren 發表于 2013-7-8 00:18 | 只看該作者
你的遙控我想應該不適合我那個解碼程序。你另找個試試看。
另,給你發一個我以前的遙控解碼顯示工程,如果你用這個工程能解碼某個遙控器,那就說明,該遙控器可用了。

測試工程源碼:HS0038B測試1602顯示:http://www.sxostgc.com.cn/mcu/1984.html 我之前發布在51hei的資料
回復

使用道具 舉報

22#
wangyin 發表于 2013-7-8 00:20 | 只看該作者
謝謝!我再測試下。
另外,我用的紅外接收頭是VS1838B一體化接收頭,遙控器用的是電視機的萬能遙控器以及家里所有的遙控器都不能操作。
回復

使用道具 舉報

23#
 樓主| jiaren 發表于 2013-7-8 00:22 | 只看該作者
我也是用了一個電視機的萬能遙控器,我的這個是可以換編碼的,可以換很多種,以適應不同的電視機,不知你的是不是也是這種,如果是的話,你就換一下別的編碼,直到可以解碼為止,然后就保持該編碼方式,不換了。
你只有找到可用編碼的遙控器,后面我才能告訴你怎么與程序配合,實現功能調節。
==============================
不過還有一種辦法,就是你可以自己解碼你那個遙控器,然后把你的解碼程序段拿來替換我那段程序,這樣也可以。
回復

使用道具 舉報

24#
wangyin 發表于 2013-7-8 00:28 | 只看該作者
我用的電視機萬能遙控器也是可以根據不同的電視機更換編碼的,有可能是與程序里的編碼不一樣。
用你提供的測試工程軟件進行遙控器的解碼,可以順利解碼,0--8鍵分別為:00H--80H,+、-分別為02H和52H等,但有些鍵值似乎超出16進制的規則范圍,如:9字鍵為I0H,還有K0H、L0H等等。
解出的碼是否可以替代如下程序里的碼值,如:
                  …………
                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;   //下
                   …………
還有哪里需要修改。
另外,還有個奇怪的現象就是上位機和下位機的連接,當刷新固件時可以正常連接顯示,當下位機斷電后重新上電不能正常連接顯示,需重新下載刷新固件才能連接,不知何故。
望樓主指點。
回復

使用道具 舉報

25#
 樓主| jiaren 發表于 2013-7-8 00:45 | 只看該作者
可以解碼就可以了,直接遙控時鐘板子,然后,在上位機上可以看到它的編碼,然后,就是和你提的一樣,用那些鍵替換程序里的碼值,這樣就行了。至于你說的鍵值有些超出,我看了一下那個測試代碼,的確會導致超出,那是第一次參加電子培訓時寫的測試程序,有一個超值的問題,你改一下,是在主函數里,當大于9的情況那里,原本是這樣:wdat_1602(ldata+0x40);改成這樣:wdat_1602(ldata-9+0x40);大于9時忘減去偏移量了,還有hdata也一樣改,改好這兩處就行了。
你說的上下位機連接的奇怪現象,我試了我的,可以的呀。你的時鐘只要能跑,就正常的會發送到電腦上來,不應該會有這奇怪的現象,你自己查查。
回復

使用道具 舉報

26#
wangyin 發表于 2013-7-8 08:56 | 只看該作者
硬件測試在第一行可以讀出編碼,第二行沒顯示,請問第二行顯示的是什么內容。
但直接遙控時鐘板子沒有反應,在上位機上看不到它的編碼,待檢查硬件連接情況看是否能夠找出原因。
回復

使用道具 舉報

27#
 樓主| jiaren 發表于 2013-7-8 09:02 | 只看該作者
wangyin 發表于 2013-7-8 08:56
硬件測試在第一行可以讀出編碼,第二行沒顯示,請問第二行顯示的是什么內容。
但直接遙控時鐘板子沒有反應 ...

剛給你看了一下(程序是很久前寫的了,我都不記得什么了),第二行是沒顯示的,就只是一個空的,是自己加上對應于自己的遙控的按鍵功能描述用的,我那里面沒有加,只是單純的解碼而已,你想加就自己加上對應你的遙控器的。
時鐘板子沒有反應,看來你的時鐘板子做的有問題,你別的像什么時間呀都可以傳上來電腦,就遙控沒反應,說明是你硬件有問題的可能性很大,你好好檢查檢查。
回復

使用道具 舉報

28#
heicad 發表于 2013-7-8 09:11 | 只看該作者

總算弄好了,原來是用杜幫線接的,沒上18B20 又是用12M晶陣,
換回11.0592M 就可以了.
但是還有個問題,就是左右調時間或溫度時,會顯示亂碼.看圖,

什么原因呢?

回復

使用道具 舉報

29#
wangyin 發表于 2013-7-8 09:14 | 只看該作者
   你好!請教一個問題,你使用的遙控器是哪種遙控器,我用的是萬能遙控器,時鐘顯示正常,就是遙控功能不能操作。樓主說我的時鐘板子有問題,現按樓主提供的PCB圖重新焊接了一塊板子,故障依舊,現懷疑是否遙控器的問題,下載線應該不會有問題吧。
    另外,你的紅外測試軟件能否發一份給我。謝謝!
回復

使用道具 舉報

30#
heicad 發表于 2013-7-8 09:28 | 只看該作者
你的遙控器必須先解碼.修改按鍵值后時鐘程序才能被遙控.

如果你的上位機不顯示解碼,那么你要換11.0592M的晶震,
回復

使用道具 舉報

31#
wangyin 發表于 2013-7-8 09:32 | 只看該作者
    我的晶震用的是11.0592m,上下位機是可以連接的。你能不能將你的紅外測試軟件發一份給我呢,
如果沒記錯的話,好象上次你已經發過一份12864無字庫日歷牌顯示的程序給過我的在此謝過啦。
回復

使用道具 舉報

32#
heicad 發表于 2013-7-8 09:35 | 只看該作者
上下位機是可以連接.
那么你換幾個遙控器對著多按幾次,解出的碼填進程序中就可以了.
回復

使用道具 舉報

33#
wangyin 發表于 2013-7-8 09:40 | 只看該作者
    請問下樓主,完全按照你的原理圖重新焊接了一塊時鐘板子和下載線,檢查了各部位的連接都沒有發現問題,
故障和原來的板子一樣,即第一次下載軟固件到單片機后,上下位機可以連接且上位機可以顯示下位機的數據信息,
當單片機斷電后重新加電上下位機不能連接,故障跟原來的板子一樣,找不出什么原因。
回復

使用道具 舉報

34#
wangyin 發表于 2013-7-8 09:49 | 只看該作者
經過一番努力,終于調試成功。

出現的情況跟heicad 的一樣,在調整時間、溫度是會有亂碼出現。
回復

使用道具 舉報

35#
heicad 發表于 2013-7-8 09:54 | 只看該作者
還發現個問題


........
case 0x94: result=18;  break;   //靜音(關鬧鐘)
case 0x96: result=19;  break;   //聲音(開鬧鐘)
default:  result=14;  break;   //別的鍵按下返回14

別的鍵按下不會返回.
回復

使用道具 舉報

36#
 樓主| jiaren 發表于 2013-7-8 11:58 | 只看該作者
小哥,調試成功遙控了又進步了。
至于你現在遇到的問題b60885262 的一樣,在調整時間、溫度是會有亂碼出現。這個問題我也很奇怪,看到你們的問題我也調了我的時鐘,發現根本就沒有看到亂碼,不知你們倆的是怎么出現的,同樣的程序,得到的結果有一點不一樣,應該是硬件有點區別吧。這個問題我不是很清楚怎么回事了,你們倆找找答案。
回復

使用道具 舉報

37#
 樓主| jiaren 發表于 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;
}
回復

使用道具 舉報

38#
wangyin 發表于 2013-7-8 15:23 | 只看該作者
又調試了整整4個小時仿制制作完成,謝謝51hei論壇的朋友們,但在調整時間、鬧鐘、溫度報警時會產生亂碼現象,在調整月份時不是由1--12變化,而是從0--19之間變化,日和小時會從0--39之間變化,分鐘從0--79之間變化。

最后,對顯示界面重新規劃,增加了農歷、生肖、節氣,采取輪換顯示。

上幾張制作和顯示效果圖:
回復

使用道具 舉報

39#
chenxinzdz 發表于 2013-7-8 18:04 | 只看該作者
謝謝!下來試作一下看,看著太好看了
回復

使用道具 舉報

40#
chenxinzdz 發表于 2013-7-8 18:06 | 只看該作者
12864(ST7920,帶字庫版本的),這個屏不知多少錢一個?

回復

使用道具 舉報

41#
admin 發表于 2013-7-8 21:25 | 只看該作者
chenxinzdz 發表于 2013-7-8 18:06
12864(ST7920,帶字庫版本的),這個屏不知多少錢一個?

這個的卻不錯,此貼已經置頂了,帶字庫的12864屏 在51hei的淘寶店里有大約40元左右
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|單片機論壇 |51黑電子論壇技術交流 QQ 管理員QQ:125739409;技術交流QQ群636986012

Powered by 單片機教程網

快速回復 返回頂部 返回列表
重庆欢乐生肖是官方的吗