佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: xin777_88

(求助)无线(Miwi)广告版

  [复制链接]
 楼主| 发表于 17-3-2010 11:46 PM | 显示全部楼层
回复 19# fritlizt 嗨版主,我已经开始学用74hc595了。我的方式是,每一排的leds我都放一个 74hc595,意思是所,如果是7X5 dot matrix我就用五个74hc595。我shirt的方式是把八个bits一次过送到的一排,然后在送到第二个74hc595。可是我怀疑我用的方式有点不对,请问能不能做到一个dot matrix一个74hc595?


图:




coding:
#include <P18f4520.h>
#define sh PORTDbits.RD0
#define ds PORTDbits.RD1
#define st PORTDbits.RD2
void MSDelay (unsigned int);
void main(void)
{
unsigned char x;
unsigned int q;
unsigned char convert;
unsigned char mydata[] = {0x7E,0x90,0x90,0x90,0x7E,0x00};
TRISDbits.TRISD0=0;
TRISDbits.TRISD1=0;
TRISDbits.TRISD2=0;


while(1)
{
for(x=0;x<=5;x++)
{

convert=mydata[x];

for(q=0;q<8;q++)

{

ds = (convert & 0x01);

sh= 1;

sh= 0;

convert = convert >> 1;

}
ds=0;
st=1;
st=0;
MSDelay(50);
}
}
}
void MSDelay(unsigned int itime)
{
unsigned int i;
unsigned char j;
for (i=0;i<itime;i++)

for(j=0;j<165;j++);
}

希望能得到你的帮助。。。。谢谢。
回复

使用道具 举报


ADVERTISEMENT

发表于 19-3-2010 09:00 PM | 显示全部楼层
回复 21# xin777_88


   

不太明白你的schematics.太蒙咯。有没有HD的??
一般上dot matrix 5x7的都会是common athode或者是common anode.也就是只有7+5个led pin而已。。。。
所以我觉得你的dot matrix方面接法好像有点问题。这样的话一个shift register就够了。
common cathode/anode就用i/o来控制吧。。。。电流量大就加个2803可以sink 500ma应该够吧。
回复

使用道具 举报

 楼主| 发表于 19-3-2010 10:55 PM | 显示全部楼层
本帖最后由 xin777_88 于 19-3-2010 10:58 PM 编辑

谢谢版主的回复。其实你说的一点多没错。我也明白dot matrix的意思(你放的图)。就是因为我不会控制单一shift register的单独output pin,只好把dot matrix改成用led的方式。如果要利用dot matrix的话,由于只有一个shift register就放在column的pin 13,3,4,11,10,16(你的图)所以应该要把7个data bits送到 shift register的第一个output pin才shift去第二个output pin。可是问题出在当第二个data bit送到shift register的第一个output pin时,第一个data bit就已经shift到第二个output pin了。所以我为了简单来做只好把shift register的每一个output pin都接一个led。
就如下图:


##我上一楼的circuit diagram就是重复以上的图五次。。。。。##
 
其实只要我能够控制shift register的单独output pin我就能利用如你所说的一个dot matrix一个shift register。所以希望版主您可以指路,让我知道如何去控制单独output pin。
谢谢。
回复

使用道具 举报

发表于 20-3-2010 12:13 AM | 显示全部楼层
回复 23# xin777_88


   

控制ST_CP.
DS & SH_CP用来把serial data clock 进去shift register.这个时候是不会update output的。

clock ST_CP就会把shift 进去的data output出来。
其实就是一大堆d flip flop.只要你不要给他clock,input任你改。output维持不变。
回复

使用道具 举报

 楼主| 发表于 21-3-2010 09:11 AM | 显示全部楼层
回复 24# fritlizt
谢谢您的教导。其实我的data应该要clock进row的shirt register比较好? 还是column的shirt register?我一直烦恼在要如何scroll那个msg.
回复

使用道具 举报

发表于 21-3-2010 12:36 PM | 显示全部楼层
回复 25# xin777_88


   

先别烦。用一个dot matrix.显示单字不会scroll先。
学走才跑, 连shift register使用都有问题,还想要一步登天?
回复

使用道具 举报

Follow Us
 楼主| 发表于 21-3-2010 08:38 PM | 显示全部楼层
我已经依照您的方式去做,而且做到了。已经可以把一个英文字母呈现在dot matrix了。我的方式是把data clock进 row的 shift register,然后column是负责开关。
图片如下:





coding:

#include <P18f4520.h>
#define sh PORTDbits.RD0  //column clock
#define ds PORTDbits.RD1  //column serial data
#define st PORTDbits.RD2  //column  store clock
#define sh1 PORTCbits.RC0 //row clock
#define ds1 PORTCbits.RC1 //row serial data
#define st1 PORTCbits.RC2  //row store clock

void MSDelay (unsigned int);
void main(void)
{
unsigned int b;
unsigned int x;
unsigned int q;
unsigned int a;
unsigned int i;
unsigned char convert;
unsigned char mydata[] = {0x01,0xEF,0xEF,0xEF,0x01,0xFF};
TRISDbits.TRISD0=0;
TRISDbits.TRISD1=0;
TRISDbits.TRISD2=0;
TRISCbits.TRISC0=0;
TRISCbits.TRISC1=0;
TRISCbits.TRISC2=0;

while(1)
{
a=0;

  
for(x=0;x<=5;x++)
{
if(x==0)
{

  ds=1;

sh=1;

sh=0;

ds=0;

st=1;

st=0;

//MSDelay(1);
}


else
{
ds=0;

sh=1;

sh=0;

ds=0;

st=1;

st=0;

//MSDelay(1);
}






//MSDelay(1);


convert=mydata[x];


for(i=0;i<8;i++)                         // send data into the row shift register bit by bit

{

ds1 = (convert & 0x01);

sh1= 1;

sh1= 0;

convert = convert >> 1;

//MSDelay(1);

}

ds1=0;

st1=1;

st1=0;








MSDelay(2);


}


}
}

void MSDelay(unsigned int itime)
{
unsigned int i;
unsigned char j;
for (i=0;i<itime;i++)

for(j=0;j<165;j++);
}







那请问现在该怎样做??
回复

使用道具 举报

发表于 22-3-2010 08:50 PM | 显示全部楼层
回复 27# xin777_88


   

老兄, 可以用代码来quote你的coding吗?
我读到很幸苦
要做到scrolling不难,最重要是concept.你有什么concept?没有concept我只能讲sorry...
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 25-3-2010 06:39 PM | 显示全部楼层
回复 28# fritlizt
谢谢您的教导我已经做到scrolling msg 了。而且在hardware 上也做到了。下来我将会做wireless和scrolling msg的合并,可是我暂时会停工因为要面对assignment如果有什么问题我会在发问。 在次谢谢你。
回复

使用道具 举报

发表于 25-3-2010 08:41 PM | 显示全部楼层
回复 29# xin777_88


   

其实我也没帮到什么。 不过哦。。。请你把code用代码quote起来可以吗?
你靠自己多一点。 做到这种地步, 离你要的不远了。
回复

使用道具 举报

 楼主| 发表于 6-4-2010 01:29 AM | 显示全部楼层
回复 30# fritlizt

fritlizt 我现在想慢慢开始做wireless 和 message scrolling 的合并。所以应该要很了解wireless 的example code 才能运作。在这几天我都在看我学长^Hins86^的楼。在里边我有很多的疑问。1)我现在需要到6个pin 那如果我有学长的pic18f25k20是否足够?
2) 在我做gui interface 时有没有必要把user key in 的 message 存在array然后才一个一个character 送到transmiter 在由miwi 送到 receiver。我问这个问题的原因是因为在学长的coding里 我在猜rxMessage.Payload[0]应该是把receive 的 data 都save在这个array。如果是的话那我应该都不需要把user key in 的 message 存在array然后才一个一个character 送出去。

意思是说当user key in "ABCD"在vb(visual basic) 时, receiver就会把这四个英文字母都存在rxMessage.Payload[x]
     rxMessage.Payload[0]="A"
     rxMessage.Payload[1]="B"
     rxMessage.Payload[2]="C"
     rxMessage.Payload[3]="D"  

请问是不是这样?


3)由于学长是利用16Mhz internal oscillator.....如果我用pic18f25k20是不是可以set 20Mhz internal oscillator取代external oscillator呢?
回复

使用道具 举报

发表于 8-4-2010 11:05 PM | 显示全部楼层
回复 31# xin777_88


用两个mcu.
如果一个18f25k20要做完是没问题的。不过 你要merge program,没有这样direct。 你要知道miwi task在哪里运行等。一不小心会导致miwi task hang,而收不到data.用一个mcu 负责wireless,收data .另一个做scrolling.两者之间可以用uart, spi i2c等等来communicate.
回复

使用道具 举报

 楼主| 发表于 10-4-2010 12:20 PM | 显示全部楼层
本帖最后由 xin777_88 于 10-4-2010 12:28 PM 编辑

回复 32# fritlizt 看了您的回复,我开始在google什么是spi,uart,和i2c,而现在大概有一点概念。可是问题是我的SDI 和 SDO 和SCL 的ports 都被receiver的circuit用掉了.那请问我是不是可以把普通的i/o port来做pic18f25k20和pic18f4520之间的沟通呢????
回复

使用道具 举报

发表于 11-4-2010 07:42 PM | 显示全部楼层
回复 33# xin777_88


   

未必要是spi,可以是uart.
我影响中uart是available的。
回复

使用道具 举报

 楼主| 发表于 11-4-2010 11:06 PM | 显示全部楼层
本帖最后由 xin777_88 于 11-4-2010 11:26 PM 编辑

回复 34# fritlizt

好的fritlizt我在式找看...其实我一点头绪都没有。请问您可以引导我该这样做吗?
回复

使用道具 举报

 楼主| 发表于 13-4-2010 12:49 PM | 显示全部楼层
找了一些资料,请问uart是不是只是用两个ports pin?那就是Tx 和 Rx也就是说 RC7和 RC6?
回复

使用道具 举报


ADVERTISEMENT

发表于 21-4-2010 06:40 PM | 显示全部楼层
回复 36# xin777_88


   
还有ground. 一般使用tx rx ground就可以了。
回复

使用道具 举报

 楼主| 发表于 22-4-2010 09:30 PM | 显示全部楼层
回复 37# fritlizt
造你的意识是说我只需要在MIWI P2P node 2 的 common file 里加自己写的UART function然后在用在application的 example code就可以了?可是在console.c 已经enable UART了意识是说TX 和RX被用了窝。可以在从用吗?
回复

使用道具 举报

发表于 26-4-2010 08:15 AM | 显示全部楼层
回复 38# xin777_88


   

他用uart是给debug purpose.整个circuit没有uart也没关系。只是通过uart让你知道node在miwi network里面的状况。
你可以disable他的uart.自己来决定要用uart send什么。
回复

使用道具 举报

 楼主| 发表于 27-4-2010 10:42 AM | 显示全部楼层
回复 39# fritlizt

好的我会去尝试,可是由于下个星期是我的final所以暂时会停两个星期。。。 最后真的要谢谢你的帮忙和回复。
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


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

GMT+8, 29-3-2024 01:49 PM , Processed in 0.067778 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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