Em mới tập tành vđk mong các bạn giúp đỡ a. mình có bài tập thế này. bây h mình muốn đếm sườn xuống của 1 xung vuông rồi cho hiển thị bộ đếm đấy ra led7 đoạn và hiển thị lên máy tính thì làm thế nào ạ. mong các bạn giúp đỡ. e đang cần gấp ạ.
Thông báo
Collapse
No announcement yet.
Bộ đếm
Collapse
X
-
sao mình tìm không thây bạn ạ. mình viết bằng keil c . mong b giúp đỡ. mình dùng 89c51 mà. mình có code thế này mà sao k chạy vậy hichic.
#include <REGX52.H>
code unsigned char table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
unsigned char posit=0;
unsigned int count=0;
sbit int1 = P3^3;
sbit SMG_q = P1^0;
sbit SMG_b = P1^1;
sbit SMG_s = P1^2;
sbit SMG_g = P1^3;
void display(unsigned int da);
void delay(unsigned int timer);
void main(void)
{
IE=0x84;
EA=1; // tat ca moi ngat dc hoat dong.
EX1=1; // cho phep ngat ngoai 1
IT1=1; // thiet lap ngat theo suon am.
TL1=0;
TH1=0;
TMOD=0X10;
while(1){
display(count);
delay(100);
}
}
void hongwai(void) interrupt 2
{
TR1=1;
while(!int1);
TR1=0;
count=(int)(TH1<<8)+TL1;
count/=10;
EX1=0;
TF1=0;
}
void display(unsigned int da)
{
P0=0XFF;
da=da%10000;
switch(posit){
case 0:
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=table[da/1000];
break;
case 1:
SMG_q=1;
SMG_b=0;
SMG_s=1;
SMG_g=1;
P0=table[da%1000/100]&0x7f;
break;
case 2:
SMG_q=1;
SMG_b=1;
SMG_s=0;
SMG_g=1;
P0=table[da%100/10];
break;
case 3:
SMG_q=1;
SMG_b=1;
SMG_s=1;
SMG_g=0;
P0=table[da%10];
break;
}
posit++;
if(posit>3)
posit=0;
}
void delay(unsigned int timer){
while(timer--);
}
Comment
-
Của bác đây:
#include <REGX52.H>
#define seg P0
#define b0 P2_0
#define b1 P2_1
#define b2 P2_2
unsigned int dem;
unsigned char tr,ch,dv,matr,mach,madv;
unsigned char ma7doan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
void delay1ms()
{
unsigned char x;
for(x=0;x<164;x++)
{
}
}
void truyen()
{
unsigned char tam;
tam=dem;
if(TI==0)
{
}
else
{
TI=0;
SBUF=tam;
}
}
void hienthi()
{
seg=matr;
b0=0;
delay1ms();
b0=1;
seg=mach;
b1=0;
delay1ms();
b1=1;
seg=madv;
b2=0;
delay1ms();
b2=1;
}
void giaima()
{
dem=(TH0<<8)+TL0;
tr=dem/100;
ch=(dem-tr*100)/10;
dv=(dem-tr*100)%10;
matr=ma7doan[tr];
mach=ma7doan[ch];
madv=ma7doan[dv];
}
void main()
{
TMOD=0x25; //Counter 0 mode 1 16 bit
TH0=0;
TL0=0;
TR0=1;
SCON=0x52;
TH1=-3;
TL1=-3;
TR1=1;
while(1)
{
if(dem<1000)
{
giaima();
hienthi();
truyen();
}
}
}QTCP
Comment
Bài viết mới nhất
Collapse
-
bởi tungdqEm cần tìm sơ đồ mạch một số Main máy tính đời cao như Asrock B560M-HDV, các cao nhân chỉ giúp với. Thank!
-
Channel: Các mạch điện ứng dụng
hôm nay, 08:27 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677nhân tiện cho mình hỏi thêm về cái phần test hipot (cao áp),là để kiểm tra độ bền cách điện giưa các cuộn dây,mà thấy thông số test thường ở mức 4kvac,vậy nếu mấy con fail đó xài bình thường vẫn dduocj phải không ạ,vì điện mình làm gì lên tới mức đó
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:52 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677máy đo số vòng thì cty có ,mà nó to quá,tưởng có máy nào gọn gọn bỏ túi được thì tiện hơn,vì đi lại nhiều...
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:47 -
-
bởi tmcodonMình thấy diễn đàn có chuyên mục quảng cáo rồi mà. Bạn đóng góp để mở luồng riêng
-
Channel: Hướng dẫn sử dụng diễn đàn
09-11-2024, 13:36 -
-
bởi Nicole08Xin chào mọi người, tôi đã sử dụng Flashforge Inventor 2 được gần 5 năm và rất hài lòng với nó, nhưng tuần trước đã xảy ra sự cố. Có vẻ như động cơ bước đưa sợi in vào đầu nóng đã bị hỏng. Mọi thứ khác có vẻ ổn trên máy...
-
Channel: Điện tử dành cho người mới bắt đầu
09-11-2024, 12:55 -
Comment