佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 3031|回复: 25

PIC16F877A-请各位帮忙(IR remote control 问题)紧急

[复制链接]
发表于 16-3-2008 12:57 AM | 显示全部楼层 |阅读模式
我是用PIC 16F877A 来控制我的 IR remote control, 但在我遇到的问题是当我一按transmitter 时,receiver 就会受到signal,LED(output) 就会亮,但我现在却弄不到LED关,就是说LED灯能一直hold 着,却不能关。我的概念是更电视机一样,当我一按remote control,就有银幕,再按一下就是关电视机。
以下是我的programing, 请各位高手帮帮我下。感激不尽
transmitter:
Setting up hardware PWM for 38KHz operation.

DEFINE osc 20
TRISC.2 = 0  ' CCP1 (PortC.2 = Output)
PR2 = 131     ' Set PWM Period for approximately 38KHz
CCPR1L = 66 ' Set PWM Duty-Cycle to 50%
CCP1CON = %00001100  ' Select PWM Mode
T2CON = %00000100    ' Timer2 = ON + 1:1 prescale
TRISB.0 = 0
-------------------------------------------------------------------------------------------------
receiver:

define osc 20

trisb = %00001111
trisd = %00000000

main:
portb.0 = 1
low portd.2
gosub start
goto main

start:
    if portb.0 = 0 then
    high portd.2
    endif
   if portb.0 = 1 then
    low portd.2
    endif

    goto start

end

以上只是我其中的一个receiver 的 programing
无论我如何写要low 它,LED 的灯也一直亮着。。
谢谢大家。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 16-3-2008 11:43 AM | 显示全部楼层
请大家帮帮忙。。。。。
回复

使用道具 举报

发表于 16-3-2008 11:49 AM | 显示全部楼层
原帖由 quan125 于 16-3-2008 12:57 AM 发表
我是用PIC 16F877A 来控制我的 IR remote control, 但在我遇到的问题是当我一按transmitter 时,receiver 就会受到signal,LED(output) 就会亮,但我现在却弄不到LED关,就是说LED灯能一直hold 着,却不能关。我的概 ...


以我的角度来看,你提供的信息是不足够的。
1。你做的是接收器还是发射器或是两个都是你自己做?
2。你的发射器的讯号是什么格式的呢?比如说是 nec format, sony format, philips format? 这个很重要,它确定了你将要如何接收数据与处理。比如说你发送的数据是 7F2A。那在接收部分你必须如何处理。
3。除非你自己定义你要的格式与数据。
4。看来你的程序不应该这么简单才对,你的程序没有处理接收到的数据啊!只是检查 位原 1 或 0。
5。可以仔细诉说下你的数据格式吗?我给你这个网站,可以参考下其中一种 nec 格式的网站 http://www.necel.com/en/faq/mi_com/__com_remo.html

[ 本帖最后由 rothmans 于 22-3-2008 05:57 PM 编辑 ]
回复

使用道具 举报

发表于 16-3-2008 01:07 PM | 显示全部楼层
原帖由 quan125 于 16-3-2008 12:57 AM 发表
我是用PIC 16F877A 来控制我的 IR remote control, 但在我遇到的问题是当我一按transmitter 时,receiver 就会受到signal,LED(output) 就会亮,但我现在却弄不到LED关,就是说LED灯能一直hold 着,却不能关。我的概 ...

请放receiver 电路。
你用什么接收?

你的应用如Rothmans说了, 非常不清楚。
你是要
1. 按TX , RX那里就亮, 不按TX, RX就关,
2. 还是按一次开, 再按一次关?
3. 你应该没有用到什么Encode, decode, 意思说不知道按的是什么Button, 随便一粒都可以?
回复

使用道具 举报

 楼主| 发表于 16-3-2008 08:30 PM | 显示全部楼层
我是自己build remote control 的。。我以前有试过encoder 和 decoder, 但不成功,我才用PIC, 刚才我已经能做到按一次开, 再按一次关。但非常不stable.!!我的是一个transmitter, 两个receiver放在不同角度。。
回复

使用道具 举报

发表于 22-3-2008 04:56 PM | 显示全部楼层
define osc 20

trisb = %00001111
trisd = %00000000

main:
portb.0 =1        (you already set this port to high)
low portd.2
gosub start
goto main

start:
    if portb.0 = 0 then
    high portd.2
    endif
   if portb.0 = 1 then
    low portd.2
    endif

    goto start

end

main


so you can try this if u can




define osc 20

trisb = %00001111
trisd = %00000000

main:
low portd.2
gosub start
goto main

start:
    if portb.0 = 0 then
    high portd.2
    endif
   if portb.0 = 1 then
    low portd.2
    endif

    goto start

end

main
回复

使用道具 举报

Follow Us
发表于 22-3-2008 05:03 PM | 显示全部楼层
你试试看吧。
我不大会你用的language
不懂是不是 >.<
回复

使用道具 举报

发表于 22-3-2008 06:02 PM | 显示全部楼层
原帖由 LitterFish 于 22-3-2008 05:03 PM 发表
你试试看吧。
我不大会你用的language
不懂是不是 >.


能告诉我,你用什么语言写的代码?用什么编译器呢?看来好像是汇编语言,又像 C-like,又像 C-语言,我当真看不太明白。
回复

使用道具 举报


ADVERTISEMENT

发表于 22-3-2008 08:33 PM | 显示全部楼层
我用C-语言。
不过我曾经有用过pic basic pro,但是不熟就是了。搂主用的好像是这个又好像不是?
Rothmans也讲了,搂主的程序不应该这么简单才对。
回复

使用道具 举报

发表于 23-3-2008 09:31 PM | 显示全部楼层
原帖由 LitterFish 于 22-3-2008 08:33 PM 发表
我用C-语言。
不过我曾经有用过pic basic pro,但是不熟就是了。搂主用的好像是这个又好像不是?
Rothmans也讲了,搂主的程序不应该这么简单才对。


  ,请把 C-语言写的结构化些。
使用 goto 这个语句就好像写汇编语言降,也破坏了他的结构性。
一般书都有说明尽量不要用 goto 语句。希望该掉这习惯。
回复

使用道具 举报

发表于 24-3-2008 08:58 AM | 显示全部楼层
原帖由 rothmans 于 23-3-2008 09:31 PM 发表


  ,请把 C-语言写的结构化些。
使用 goto 这个语句就好像写汇编语言降,也破坏了他的结构性。
一般书都有说明尽量不要用 goto 语句。希望该掉这习惯。

哈哈哈,因为用goto很省line.
回复

使用道具 举报

发表于 24-3-2008 10:06 AM | 显示全部楼层
原帖由 LitterFish 于 24-3-2008 08:58 AM 发表

哈哈哈,因为用goto很省line.


执迷不悟,朽木不可雕也。
回复

使用道具 举报

发表于 24-3-2008 11:12 AM | 显示全部楼层
原帖由 rothmans 于 24-3-2008 10:06 AM 发表
执迷不悟,朽木不可雕也。

哈哈~ 上面的那个是PICBasic 语言。。。
PICBasic 就是用Goto, Gosub, return, 它不是Structure的语言, 不能怪他的。。。

哈哈哈,因为用goto很省line.

用Goto的一个可怕的地方就是, 写的不好, 很容易Stack Overflow 而当机, 无端端当机了你也不知道为什么。。。
回复

使用道具 举报

发表于 24-3-2008 02:03 PM | 显示全部楼层
原帖由 pic 于 24-3-2008 11:12 AM 发表

哈哈~ 上面的那个是PICBasic 语言。。。
PICBasic 就是用Goto, Gosub, return, 它不是Structure的语言, 不能怪他的。。。


用Goto的一个可怕的地方就是, 写的不好, 很容易Stack Overflow 而当机, 无端 ...


哦!是 PICBasic  啊! 。不好意思,学艺不精,没看出来,下次会努力的。
回复

使用道具 举报

 楼主| 发表于 24-3-2008 10:03 PM | 显示全部楼层
谢谢大家, 我的presentation 以过了, 而我也成功作到。但remote control 有点不stable 罢了。!!
之前我写的programing 是用PIC basic 的。。
回复

使用道具 举报

发表于 25-3-2008 08:11 AM | 显示全部楼层
原帖由 quan125 于 24-3-2008 10:03 PM 发表
谢谢大家, 我的presentation 以过了, 而我也成功作到。但remote control 有点不stable 罢了。!!
之前我写的programing 是用PIC basic 的。。

你是怎么做到的? 可以分享你成果吗?

P/s: 希望大家在问题解决后回来做个报告, 做心得分享。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 25-3-2008 03:20 PM | 显示全部楼层
我加了一个IC在IR receiver , 叫74HC374, flip-flop的一种, 当我给它一个clock时,LED就亮着不能关,在次给它一个clock时,LED就关掉了
回复

使用道具 举报

发表于 25-3-2008 04:04 PM | 显示全部楼层
原帖由 quan125 于 25-3-2008 03:20 PM 发表
我加了一个IC在IR receiver , 叫74HC374, flip-flop的一种, 当我给它一个clock时,LED就亮着不能关,在次给它一个clock时,LED就关掉了
MCU的功能只给你用20%吧了。。。可惜。。。你可以做Software Flip-Flop的。。
回复

使用道具 举报

发表于 25-3-2008 05:27 PM | 显示全部楼层
原帖由 pic 于 25-3-2008 04:04 PM 发表
MCU的功能只给你用20%吧了。。。可惜。。。你可以做Software Flip-Flop的。。


是啊!非常可惜,我覺得最好可以用到 80% 以上,也就是說將硬件減少到最好是不需要,但這是不可能的啦。
回复

使用道具 举报

 楼主| 发表于 25-3-2008 10:06 PM | 显示全部楼层
原帖由 pic 于 25-3-2008 04:04 PM 发表
MCU的功能只给你用20%吧了。。。可惜。。。你可以做Software Flip-Flop的。。

技术不够好。哈哈。。我是学院生罢了。。
谢谢你的指引
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 1-2-2025 02:42 PM , Processed in 0.142586 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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