|
请问RS232能显示BREADBOARD上的资料吗?
[复制链接]
|
|
发表于 7-9-2011 10:02 PM
|
显示全部楼层
er.
可是用REAL TERM 来读~和FLOW CONTROL 换成了NONE
完全没有显示任何东西.
因为这是读取PIC里SEN ...
pikachew 发表于 7-9-2011 06:49 PM 
问题1:你的realterm 的baud rate 的设置跟 PIC 的设置是一样吗?
问题2:你的PIC 的代码?是采用PIC大大修改过的那个吗?
问题3:PIC大大修改过的代码你明白它是这么运作的吗? |
|
|
|
|
|
|
|

楼主 |
发表于 8-9-2011 10:02 AM
|
显示全部楼层
问题1:你的realterm 的baud rate 的设置跟 PIC 的设置是一样吗?
问题2:你的PIC 的代码 ...
wkloh 发表于 7-9-2011 10:02 PM 
1 : REAL TERM BAUD RATE 设置是一样 9600。 因为CODING里没SET 到要传送的CHARACTER,所以REAL TERM DISPLAY 不到。这样对吗?
2 : 我是用·PIC 大大修改过的CODING
3: CODING 里不是说明Read character from UART??
是在CODING里SET 要传送的CHARACTERS?
谢谢。 |
|
|
|
|
|
|
|
发表于 8-9-2011 10:48 AM
|
显示全部楼层
1 : REAL TERM BAUD RATE 设置是一样 9600。 因为CODING里没SET 到要传送的CHARACTER,所以REAL ...
pikachew 发表于 8-9-2011 10:02 AM 
- #include "16f877a.h"
- #fuses XT, NOPROTECT, NoWDT, put, brownout
- #use delay(clock=4000000)
- #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
- void main()
- {
- int incode;
- while(1)
- {
- incode = getc(); // Read character from UART
- printf( " ASCII = %d \n\r " ,incode); // Display it on
- }
- }
复制代码 源码
如果没有理解错误的话,PIC大大的程式的运作,应该如下吧:
incode = getc(); //这一行意识是无限等待 uart 接受1字元资料,存在incode
printf( " ASCII = %d \n\r " ,incode); // 这一行意识是uart 发送 “ASCII = incode” 这整个句字个PC。incode 资料范围 0~255
}
以你在80楼的解说,电脑不做送数据,你的PIC如何接受数据再回发句组资料呢??
可是用REAL TERM 来读~和FLOW CONTROL 换成了NONE
完全没有显示任何东西.
因为这是读取PIC里SEND 给电脑的资料。。所以我没在电脑里打字然后按"SEND“。
这是说明电路出错吗? |
|
|
|
|
|
|
|

楼主 |
发表于 9-9-2011 08:37 PM
|
显示全部楼层
源码
如果没有理解错误的话,PIC大大的程式的运作,应该如下吧:
以你在80楼的解说,电脑不做 ...
wkloh 发表于 8-9-2011 10:48 AM 
意思就是说我一定要在REAL TERM里 SEND TEXT BOX 里打字,然后按“SEND"
然后DISPLAY SCREEN 显示我所SEND的TEXT 就表示成功?请问是这样吗?
谢谢。~ |
|
|
|
|
|
|
|

楼主 |
发表于 25-9-2011 08:04 PM
|
显示全部楼层
请问各位大大
[img]
Uploaded with ImageShack.us[/img]
这张图用4个CAPACITORS 而已,是否是对的呢?
谢谢 |
|
|
|
|
|
|
|

楼主 |
发表于 5-10-2011 11:51 PM
|
显示全部楼层
问题解决到了
现在新的问题来了关于LOOPING问题~
不知道该如何解决~如果不用LOOP的话,就会进入SLEEP MODE,可是用了,那些MESSAGE 又会一直重复不停。。请问各位大大有任何解决方案吗?
谢谢
#include "16f877a.h"
#fuses HS,PROTECT,NoWDT,put,brownout
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
void main()
{
while(1)
{
if(input(pin_a0)==1)
{
output_low(pin_b0);
printf("No1");
}
else
{
output_high(pin_b0);
printf("yes1");
}
if(input(pin_a1)==1)
{
output_low(pin_b1);
printf("No2");
}
else
{
output_high(pin_b1);
printf("yes2");
}
}
} |
|
|
|
|
|
|
|
发表于 8-10-2011 10:13 AM
|
显示全部楼层
本帖最后由 pic 于 8-10-2011 10:26 AM 编辑
回复 86# pikachew
简单的方法是加flag, 记录之前输入的状态。
只是输出到RS232, 当flag 和输入有所改变时。
- #include "16f877a.h"
- #fuses HS,PROTECT,NoWDT,put,brownout
- #use delay(clock=4000000)
- #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
- int1 fiA0=0; // Flag
- int1 fiA1=0;
- void main()
- {
- while(1)
- {
- if(fiA0!=input(pin_a0)) // Test if Flag is change status
- {
- fiA0=input(pin_a0); // lock Flag
- if(input(pin_a0))
- {
- output_low(pin_b0);
- printf("No1\n\r");
- }
- else
- {
- output_high(pin_b0);
- printf("yes1\n\r");
- }
- }
-
- if(fiA1!=input(pin_a1)) // Test Flag
- {
- fiA1=input(pin_a1); // lock Flag
- if(input(pin_a1)==1)
- {
- output_low(pin_b1);
- printf("No2\n\r");
- }
- else
- {
- output_high(pin_b1);
- printf("yes2\n\r");
- }
- }
- }
- }
复制代码 |
|
|
|
|
|
|
|

楼主 |
发表于 8-10-2011 03:06 PM
|
显示全部楼层
本帖最后由 pikachew 于 8-10-2011 03:07 PM 编辑
回复 pikachew
简单的方法是加flag, 记录之前输入的状态。
只是输出到RS232, 当flag 和输入有所改变 ...
pic 发表于 8-10-2011 10:13 AM 
我想用LCD来DISPLAY,可是我用了PROTEUS 7.5 SIMULATION 来跑。
SIMULATION LCD里无法拿到我想要的RESULT.
可是 LOW时,TWO AND FOUR却无法正常的SHOW出来,会有一些很奇怪的符号和要开关SWITCH很多次。
HIGH 时,也会有一些很奇怪的符号出现。
请问会是CODE有问题还是PROTEUS有问题呢?
#include "16f877a.h"
#fuses HS,PROTECT,NoWDT,put,brownout
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
#include "lcd.c"
int1 fiA0=0; // Flag
int1 fiA1=0;
void main()
{
lcd_init();
lcd_gotoxy(1,1);
while(1)
{
if(fiA0!=input(pin_a0)) // Test if Flag is change status
{
fiA0=input(pin_a0); // lock Flag
if(input(pin_a0))
{
output_low(pin_b0);
printf("No1\n\r");
lcd_putc("\fone");
}
else
{
output_high(pin_b0);
printf("yes1\n\r");
lcd_putc("\ftwo");
}
}
if(fiA1!=input(pin_a1)) // Test Flag
{
fiA1=input(pin_a1); // lock Flag
if(input(pin_a1)==1)
{
output_low(pin_b1);
printf("No2\n\r");
lcd_putc("\f\nthree");
}
else
{
output_high(pin_b1);
printf("yes2\n\r");
lcd_putc("\f\nfour");
}
}
}
}
[img] [/img]
谢谢。 |
|
|
|
|
|
|
|
发表于 8-10-2011 03:31 PM
|
显示全部楼层
回复 88# pikachew
你的LCD 接错了吧。。
试试接去PortD |
|
|
|
|
|
|
|

楼主 |
发表于 9-10-2011 09:25 AM
|
显示全部楼层
回复 pikachew
你的LCD 接错了吧。。
试试接去PortD
pic 发表于 8-10-2011 03:31 PM 
刚刚试了
接取PORTD 完全没反应
觉得应该是PROTEUS问题 |
|
|
|
|
|
|
|
发表于 9-10-2011 08:54 PM
|
显示全部楼层
刚刚试了
接取PORTD 完全没反应
觉得应该是PROTEUS问题
pikachew 发表于 9-10-2011 09:25 AM 
编辑 LCD.C
按下面的接去Port D
Driver 支持Port B 或Port D
要用PortB, 要有这行, 如果没有, 默认是PortD
#define use_portb_lcd TRUE
- // As defined in the following structure the pin connection is as follows:
- // D0 enable
- // D1 rs
- // D2 rw
- // D4 D4
- // D5 D5
- // D6 D6
- // D7 D7
- //
- // LCD pins D0-D3 are not used and PIC D3 is not used.
- // Un-comment the following define to use port B
- // #define use_portb_lcd TRUE
复制代码 |
|
|
|
|
|
|
|

楼主 |
发表于 9-10-2011 11:23 PM
|
显示全部楼层
编辑 LCD.C
按下面的接去Port D
Driver 支持Port B 或Port D
要用PortB, 要有这行, 如果没有, 默 ...
pic 发表于 9-10-2011 08:54 PM 
在RUN这SIMULATION我已经把PORTB 的“//"这个给移除了。可是问题还是存在m其实真真我要的是LDR AS INPUT.如图中的,可是LDR 在SIMULATION 里没反应,所以我改用了SWITCHES. 我GOOGLE SEARCH,有人说是SWITCHES会影响奇怪的CHARACTER在LCD
[img]
Uploaded with ImageShack.us[/img]
谢谢,该如何让LDR 在SIMULATION里WORK呢? |
|
|
|
|
|
|
|
发表于 10-10-2011 12:18 AM
|
显示全部楼层
回复 92# pikachew
发你的源码.C+ proteus .dsn (zip 起来)给我看看。。 |
|
|
|
|
|
|
|

楼主 |
发表于 10-10-2011 11:33 PM
|
显示全部楼层
回复 pikachew
发你的源码.C+ proteus .dsn (zip 起来)给我看看。。
pic 发表于 10-10-2011 12:18 AM 
.C+ proteus .dsn
这东西要到哪里找啊?
谢谢。 |
|
|
|
|
|
|
|
发表于 11-10-2011 08:56 AM
|
显示全部楼层
.C+ proteus .dsn
这东西要到哪里找啊?
谢谢。
pikachew 发表于 10-10-2011 11:33 PM 
就是你目前的
1. CCS C 源码 *.C
和
2. Proteus 的*.dsn |
|
|
|
|
|
|
|

楼主 |
发表于 12-10-2011 01:07 PM
|
显示全部楼层
回复 95# pic
我刚刚买了LCD 来试了
CODE1:
#include "16f877a.h"
#fuses HS,PROTECT,NoWDT,put,brownout
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
#include "lcd.c"
int1 fiA0=0; // Flag
int1 fiA1=0;
void main()
{
lcd_init();
while(1)
{
if(fiA0!=input(pin_a0)) // Test if Flag is change status
{
fiA0=input(pin_a0); // lock Flag
if(input(pin_a0))
{
output_low(pin_b0);
printf("No1\n\r");
lcd_putc("one");
}
else
{
output_high(pin_b0);
printf("yes1\n\r");
lcd_putc("two");
}
}
if(fiA1!=input(pin_a1)) // Test Flag
{
fiA1=input(pin_a1); // lock Flag
if(input(pin_a1)==1)
{
output_low(pin_b1);
printf("No2\n\r");
lcd_putc("\nthree");
}
else
{
output_high(pin_b1);
printf("yes2\n\r");
lcd_putc("\nfour");
}
}
}
}
放这CODE,LDR 完全没有FUNCTION 到,不知道是什么原因。
可是放这CODE,却可以FUNCTION.
#include "16f877a.h"
#fuses HS,PROTECT,NoWDT,put,brownout
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
int1 fiA0=0; // Flag
int1 fiA1=0;
void main()
{
printf("PARKING LOT 1 - OK\r");
printf("PARKING LOT 2 - OK\r");
while(1)
{
if(fiA0!=input(pin_a0)) // Test if Flag is change status
{
fiA0=input(pin_a0); // lock Flag
if(input(pin_a0))
{
output_low(pin_b0);
printf("Parking lot1 is unavailable\n\r");
}
else
{
output_high(pin_b0);
printf("Parking lot1 is available\n\r");
}
}
if(fiA1!=input(pin_a1)) // Test Flag
{
fiA1=input(pin_a1); // lock Flag
if(input(pin_a1)==1)
{
output_low(pin_b1);
printf("Parking lot2 is unavailable\n\r");
}
else
{
output_high(pin_b1);
printf("Parking lot2 is available\n\r");
}
}
}
}
为何有LCD的CODE在里面,LDR就不能FUNCTION呢?
。拆掉LCD了,用CODE1也是不行。
一个PORT不能有2个OUTPUT?谢谢 |
|
|
|
|
|
|
|
发表于 12-10-2011 02:40 PM
|
显示全部楼层
回复 96# pikachew
你怎样接LCD? 接法?PortB? Port D?
LCD.C 怎样设定?
你用4Mhz的 crystal?
那么fuse 要用XT, 不是HS
发表code 用“代码 ”, 会比较容易阅读。 |
|
|
|
|
|
|
|

楼主 |
发表于 13-10-2011 12:53 PM
|
显示全部楼层
回复 pikachew
你怎样接LCD? 接法?PortB? Port D?
LCD.C 怎样设定?
你用4Mhz的 crystal?
那么 ...
pic 发表于 12-10-2011 02:40 PM  - #include "16f877a.h"
- #fuses XT,PROTECT,NoWDT,put,brownout
- #use delay(clock=4000000)
- #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ERRORS)
- #include "lcd.c"
- int1 fiA0=0; // Flag
- int1 fiA1=0;
- void main()
- {
- lcd_init();
- lcd_putc("one");
- lcd_putc("one");
- while(1)
- {
- if(fiA0!=input(pin_a0)) // Test if Flag is change status
- {
- fiA0=input(pin_a0); // lock Flag
- if(input(pin_a0))
- {
- output_low(pin_d6);
- printf("No1\n\r");
- lcd_putc("one");
- }
- else
- {
- output_high(pin_d6);
- printf("yes1\n\r");
-
- lcd_putc("two");
-
- }
- }
-
- if(fiA1!=input(pin_a1)) // Test Flag
- {
- fiA1=input(pin_a1); // lock Flag
- if(input(pin_a1)==1)
- {
- output_low(pin_d7);
- printf("No2\n\r");
- lcd_putc("\nthree");
-
- }
- else
- {
- output_high(pin_d7);
- printf("yes2\n\r");
-
- lcd_putc("\nfour");
- }
- }
- }
- }
复制代码
换了OUTPUTPORT 现在可一走了。
问题是为什么比如说从YES1换取NO1是会显示:YES1,YES1,NO1
而不是YES1,NO1呢?是因为LOCK FLAG的关系吗?
谢谢 |
|
|
|
|
|
|
|
发表于 13-10-2011 05:06 PM
|
显示全部楼层
回复 98# pikachew
没有debounce。
21: fiA0=input(pin_a0); // lock Flag
delay_ms(100); // 加入这个试试看是否可以解决问题。
22: if(input(pin_a0)) |
|
|
|
|
|
|
|
发表于 13-10-2011 07:42 PM
|
显示全部楼层
本帖最后由 pic 于 13-10-2011 08:21 PM 编辑
回复 96# pikachew
看了你的图和源码, 发现你是把input接去PortB, LCD 又接去Port B, 就有冲突, 所以不会运行。
1. LDR 是要显示用没有障碍物?
2. LDR 的光源是什么?
3. 还有你的LED,目的是什么?
4. LED 是作为LDR 的光源?
5. 还是LED 是要显示LDR 的状态?
感觉错误百出, 要帮你, 要先明白1~5的问题. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|