Trích:
Nguyên văn bởi mrsin
Em chỉ muốn hiện thị số lên thôi mà không được, dưới đây là code và mạch mô phỏng = protues, mong anh chị sửa giúp em. thanks
|
#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bi ts=9) //Baud_min=4800 Baud_max=115200
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
// Dinh nghia cac chan cho ket noi 74595
//#bit SCL=0x08.7
//#bit DATA=0x08.6
//#bit SCK=0x08.5
#define SCL RD5//đổi lại cho phù hợp phần cứng
#define DATA RD6
#define SCK RD7//đổi lại cho phù hợp phần cứng
#byte TRISD =0x88
void quet(unsigned char x);
unsigned int num=1;
unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};//ma led 7
void quet(unsigned char x)
{
int i,temp;
for(i=0;i<8;i++)
{
temp=x;//gan bien
temp=temp&0x80;//lay ra bit dau tien (bit 7)
if(temp==0x80)//so sanh bit
DATA=1; //bang 1 thi xuat vao chip =1
else
DATA=0; //nguoc lai bang 0
x*=2; //dich bit lay bit trong so thap
SCK=0; //tao xung tren chan 11
SCK=1; //1 xung dua vào 1 bít
}
SCL=0; //xuat du lieu ra output
SCL=1;
}
void main()
{
TRISD=0x00;//thiếu dòng này
num=5;
while(1)
{
quet(~ma[num]);//đảo lại mã cho phù hợp phần cứng
}
}