السلام عليكم
انا طالبة وعندي مشروع تخرج عن
fingerprint based door lock
وبدنا نستخدم sm630 for fingerprint scanner
بس المشكله انو القطعه مش متوافرة لحد الان وما بنعرف متى ممكن توصل
لهيك قررنا نعمل simulator
للقطعة بحيث تقدر تتواصل مع PIC وتستجيب متل القطعة الاصلية ولان الها 2 output (Rx,Tx)
فقررنا نستخدم كمان pic لتتواصل مع البيك الاصلية من خلال Rx , TX
فسؤالي اذا بقدر حدا يساعدني هل ممكن اربط two PIC
من خلال Rx,TX pins
وكيف ممكن يتم التوصيل لانو بدنا مجرد ما وصلة القطعة الاصلية بس نركبها مكان البيك وتشتغل عادي .
ممكن تعمل هيك بس لما تنقل بيانات بينهم بكون على اساس serial وكأنه كل pic موصوله مع الكومبيوتر
يعني بتستخدم USART
RX1 with RT2
RT1 with RX2
و 2 PIC لازم يكون الهم نفس Frequency
بالتوفيق
فعلا النقطه الي اشار الها الاخ eabueida بخصوصا الفولت الي على RX1 , RT2
RT1, RX2 اذا كان اكبر من 5 فولت او اقل من صفر لازم تستخدمي MAX232
بس على الاغلب انه من 0-5 لانه
picxxxxx’s are sink and source to 0-5v
[SIZE=4]شكرا كتتتير للجميع
انا الحمدلله زبطت معي التوصيله بس المشكله الجديدة اني كتبت الكود على الميكروبيسك على اساس ابعت اكتر من بايت بس ما كان يبعت الا اول 2 byte
ما بعرف ليش يعني لما بعتت كلمة hello من البيك الاولى ووصلت التانية على
[/size] lcd ما وصل الا 2 بايت وهي الكود لكل وحدة منهم اذا بقدر حدا يساعدني [LEFT][SIZE=4]received PIC (1)
program test[/size] [SIZE=4]
dim s2 , i as byte[/size] [SIZE=4]
dim received_byte as byte
dim ss1 as char[20]
صباح الخير
eabueida:) بالفعل انا قصي عن البيك لانه بتستقبل وبتبعث اكثر اشي 5 فولت
وبالنسبه لـ sm630 for fingerprint scanner بكون موجود في الداتا شيت كم الفولت عند الـ output
wishes22 الكود تاعك صحيح جربته ال 2 بيك بستجيبو لبعض بس بدون ما ينقلو داتا يعني بس كونترول سيقنال
وممكن انحل هاي المشكله من خلال ربط البيك في الكومبيوتر والربط سهل كثير وكمان من خلال السيريال بورت وههيك بنقدر ننقل داتا و كونترول سيقنال واذا بدك بشرح الك كي الربط وكيف نعمل البرمجه على vb6
وياريت تحكي النا شوي عن المشروع حتى نقدر نتخيل حل يكون فعال
السلام عليكم
اتوقع ان في البداية كانت المشكلة في موقع Delay
لانه لما عدلنا الكود كالتالي اشتغل …
[LEFT]PIC 1
program pic1
dim s2 as byte
dim received_byte as byte
dim ss1 as byte
main:
Usart_Init(2400)
adcon1 = 255
Lcd_Init(PORTB)
Lcd_Cmd(LCD_CLEAR)
Lcd_Cmd(LCD_CURSOR_OFF)
for s2 = 0 to 5
if Usart_Data_Ready = 1 then ’ If data is received
ss1 = Usart_Read ’ Read received data
LCD_Chr(1,s2+1,ss1)
Delay_ms(500)
end if
next s2
end
PIC 2
program pic2
dim r2 as char[20]
dim a2 , d2 as byte
main:
r2="hello"
Usart_Init(2400)
for a2 = 0 to 5
Usart_Write(r2[a2])
Delay_ms(500)
next a2
end
if Usart_Data_Ready = 1 then ' If data is received
for s2 = 0 to 5 ' enter for-loop when data is recevied
ss1 = Usart_Read ' Read received data
LCD_Chr(1,s2+1,ss1) ' or LCD_Chr_Cp(ss1) /// print at a pointer
Delay_ms(500)
next s2
end if
السلام عليكم سؤال جديد …
اذا بدي اضيف button ولما اكبس عليه بدي يبعت قيمة معينة على السيرال للبيك التانية
مثلا اذا كنت موصل ال button على PORTA.0 ببعت القيمة اذا كانت قيمة ال PORTA = 1
وكتبت جملة الشرط بس اتوقع انها ما زبطت لانه ما دخل عليها من الاساس , لاني طبعت جملة عادية على LCD اذا ;كبس على BUTTON
if PORTA.0 = 1 then
LCD_Out(1,1,“hello”)
end i f
بس ما كتب اشي على LCD
وشكرا …
اهلا وسهلا احنا بخدمتكم بلي بنعرفه
اول شي لازم تنتبهي لـ button كيف واصل
اعملت الك برنامج لما button ينضغط بدخل 0 على البيك واذا ما كان مضغوط بدخل 1
شوفي توصيل ال button في الصوره
اسألي اي اشي لا تترددي وياريت تبعثي الي الدائرة تاعتك حتى اشوفها
program test
main:
TRISB=0x00 ' set port B as output for LCD
TRISA=0X01 ' Set pin A0 as input
LCD_init(PORTB)
Lcd_Cmd(LCD_CURSOR_OFF)
Lcd_Cmd(LCD_CLEAR)
ADCON1=7 'to disable the digial pins on PORT A
X:
IF PORTA.0=0 THEN '' push button if pushed , pic will recive a 0 (see the circuit)
Lcd_Cmd(LCD_CLEAR)
LCD_Out(1,1,"wishes22 ")
end if
goto X
goto main
end.
السلام عليكم سؤال جديد اذا سمحتولي
هلا انا بدي اقرا رقم من المستخدم بدخلة من خلال keypad وهو لازم يكون رقم من 1-790 بس لازم يتحول هاد الرقم لمكافئه من ال hex يعني لو دخل 200 لازم توصل البيك التانية من خلال السيريال c8 هلا الكود يلي كتبته هوو التالي
:
//////////////////////*********************************///////////////////////////
[LEFT]program keypad_test
dim s2 as byte
dim received_byte as byte
dim ss1, head1 ,ii, head2, kp as byte
dim position as char[20]
main:
head1 =0x4D ’ define the head of the packet
head2 =0x58 ’ define the second byte of the head of the packet
TRISD =255
PORTD =255
’ 57600bps communiaction bud rate for the sm630
Usart_Init(2400)
adcon1 = 255 ’ configure RA5 pin as digital I/O
Keypad_Init(PORTD)
Lcd_Init(PORTB) ’ Initialize LCD on PORTC
Lcd_Cmd(LCD_CLEAR) ’ Clear display
Lcd_Cmd(LCD_CURSOR_OFF) ’ Cursor off
ADCON1=7 ‘to disable the digial pins on PORT A
’ position = 0x00
while true
’ 0x4D + 0x58 + 0x10 + 0x03 + 0x40 + 0x00 + 0x00 + 0xF8
IF PORTA.0=0 THEN
for ii = 0 to 2
kp = 0
’— Wait for key to be pressed
while kp = 0
’— un-comment one of the keypad reading functions
kp = Keypad_Released
wend
if kp > 10 then
kp = kp + 54
else
kp = kp + 47
end if
position[ii]= kp
LCD_Chr(1,ii+1,kp)
'Delay_ms(500)
next ii
’ Usart_Write(0x4D) ’ Send data via USART
’ Delay_ms(500)
’ Usart_Write(0x58)
’ Delay_ms(500)
’ Usart_Write(0x10)
’ Delay_ms(500)
’ Usart_Write(0x03)
’ Delay_ms(500)
‘Usart_Write(0x40)
‘Delay_ms(500)
Usart_Write(position[0])
Delay_ms(1000)
Usart_Write(position[1])
Delay_ms(1000)
Usart_Write(position[2])
Delay_ms(1000)
’ Usart_Write(0xf8)
’ Delay_ms(500)
’ position = position + 0x03
end if
wend
end.
[/left]