查看: 3033|回复: 25
|
PIC16F877A-请各位帮忙(IR remote control 问题)紧急
[复制链接]
|
|
我是用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 的灯也一直亮着。。
谢谢大家。 |
|
|
|
|
|
|
|
楼主 |
发表于 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 |
|
|
|
|
|
|
|
发表于 22-3-2008 05:03 PM
|
显示全部楼层
你试试看吧。
我不大会你用的language
不懂是不是 >.< |
|
|
|
|
|
|
|
发表于 22-3-2008 06:02 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 22-3-2008 08:33 PM
|
显示全部楼层
我用C-语言。
不过我曾经有用过pic basic pro,但是不熟就是了。搂主用的好像是这个又好像不是?
Rothmans也讲了,搂主的程序不应该这么简单才对。 |
|
|
|
|
|
|
|
发表于 23-3-2008 09:31 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 24-3-2008 08:58 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 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的一个可怕的地方就是, 写的不好, 很容易Stack Overflow 而当机, 无端端当机了你也不知道为什么。。。 |
|
|
|
|
|
|
|
发表于 24-3-2008 02:03 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 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: 希望大家在问题解决后回来做个报告, 做心得分享。 |
|
|
|
|
|
|
|
楼主 |
发表于 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的。。
技术不够好。哈哈。。我是学院生罢了。。
谢谢你的指引 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|