View Single Post
Old 04-10-2011, 10:47 AM   #6
pstin
Đệ tử 7 túi
 
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 190
:
Chương trình xuất 03 chữ "vạn" (1 thuận, 2 nghịch), để thử nghiệm xuất 24 bit, chân D0 la data, chân D1 là xung clock, các chân D2, D3, D4 là 3 chân xuất dữ liệu riêng biệt của 3 con 595 (trường hợp của bạn nên nối chung các đường xuất dữ liệu lại với nhau), portB điều khiển quét hàng, bạn chế lại là xuất các con số được.
#include <16F877A.h>
#include <DEFS_16F877A.h>
#device *=16 ADC=10
#include <stdlib.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG
#use delay(clock=16000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)

//=========================functions use========================================
int8 y,i;
int8 Cot1[]={0b10000101, 0b11100101, 0b11100101, 0b10000001, 0b10000001, 0b10100111, 0b10100111, 0b10100001};
int8 Cot2[]={0b10100001, 0b10100111, 0b10100111, 0b10000001, 0b10000001, 0b11100101, 0b11100101, 0b10000101};
int8 Cot3[]={0b10100001, 0b10100111, 0b10100111, 0b10000001, 0b10000001, 0b11100101, 0b11100101, 0b10000101};
int8 Hang[]={0b11111110, 0b11111101, 0b11111011, 0b11110111, 0b11101111, 0b11011111, 0b10111111, 0b01111111};

void sen595(int8 x)
{
#bit fla=x.7;
for (i=0;i<8;i++)
{
if (fla==1)
{output_high(PIN_D0);}
else
{output_low(PIN_D0);}
output_high(PIN_D1);
output_low(PIN_D1);
x = x<<1;
}
}

void main()
{
set_tris_b(0x00);
set_tris_d(0x00);
while(1)
{
for (y=0;y<8;y++)
{
sen595(Cot3[y]);
sen595(Cot2[y]);
sen595(Cot1[y]);
output_high(PIN_D2);
output_high(PIN_D3);
output_high(PIN_D4);
output_b(Hang[y]);
delay_ms(3);
output_b(0xff);
output_low(PIN_D2);
output_low(PIN_D3);
output_low(PIN_D4);
}
}
}
pstin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn