Các bạn xem code và mạch nguyên lý trong file đính kèm, tại sao khi bấm nút tăng mà nó không tăng nhỉ?
Mạch đếm dùng 8051
Collapse
X
-
Tags: None
-
- Bạn sửa lại data 7 đoạn : mức 0 led sáng.Nguyên văn bởi eclipse_bk47 Xem bài viếtCác bạn xem code và mạch nguyên lý trong file đính kèm, tại sao khi bấm nút tăng mà nó không tăng nhỉ?
- Bạn sửa lại hàm main : để giá trị value = 0 ra ngoài vòng lặp while.
- Bạn sửa lại hàm hiển thị : xuất data 7 đoạn -> chọn led cần hiển thị -> delay.
-
Nguyên văn bởi tramng Xem bài viết- Bạn sửa lại data 7 đoạn : mức 0 led sáng.
- Bạn sửa lại hàm main : để giá trị value = 0 ra ngoài vòng lặp while.
- Bạn sửa lại hàm hiển thị : xuất data 7 đoạn -> chọn led cần hiển thị -> delay.Mình đã sửa theo ý bạn nhưng vẫn không chạy được, bạn xem sơ đồ nguyên lý mình có gì sai không?#include <REGX51.H>
#include <stdlib.h>
#include <stdio.h>
/*********************************define var.port*******************************/
#define data P2
sbit tang = P3^2;
sbit giam = P3^1;
sbit tram = P0^0;
sbit chuc = P0^1;
sbit donvi = P0^2;
/*******************************sub program***********************/
unsigned char code seg[]=(0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x8f,0x80,0x9 0);
unsigned int value;
void display();
/************************************************** ***********************/
/////////////////////////////////////////////////////////////////////////////
// Main //
/////////////////////////////////////////////////////////////////////////////
void Main()
{
value = 3;
while(1)
{
display();
if(tang==0)
{
while (tang==0) { display();}
value++;
}
}
}
/////////////////////////////////////////////////////////////////////////////
// delay //
/////////////////////////////////////////////////////////////////////////////
void delay(long time)
{
long i;
for(i=0;i<time;i++)
{
;
}
}
/////////////////////////////////////////////////////////////////////////////
// Display //
/////////////////////////////////////////////////////////////////////////////
void display()
{
data = seg[value/100];
tram =1;
delay(1);
tram = 0;
data = seg[value%100/10];
chuc = 1;
delay(1);
chuc = 0;
data = seg[value%100%10];
donvi = 1;
delay(1);
donvi = 0;
}
Comment
-
Nguyên văn bởi eclipse_bk47 Xem bài viếtMình đã sửa theo ý bạn nhưng vẫn không chạy được, bạn xem sơ đồ nguyên lý mình có gì sai không?Bạn đọc code chắc là bạn biết sai chỗ nào rồi ! Bạn sử dụng port 0 mà không dùng trở treo nguồn là sai cơ bản nhé ! Bạn dùng BJT dòng A mà không có trở phân cực B cũng là sai cơ bản lun nhé !#include <REGX51.H>
#include <stdlib.h>
#include <stdio.h>
/*********************************define var.port*******************************/
#define data P2
sbit tang = P3^2;
sbit giam = P3^1;
sbit tram = P0^0;
sbit chuc = P0^1;
sbit donvi = P0^2;
/*******************************sub program***********************/
//unsigned char code seg[]=(0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x8f,0x80,0x9 0);
const unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
unsigned char value;
void display();
/************************************************** ***********************/
/////////////////////////////////////////////////////////////////////////////
// Main //
/////////////////////////////////////////////////////////////////////////////
void Main()
{
value = 0;
while(1)
{
display();
if(tang==0)
{
while (tang==0)
{
display();
}
value++;
}
}
}
/////////////////////////////////////////////////////////////////////////////
// delay //
/////////////////////////////////////////////////////////////////////////////
void delay(long time)
{
long i;
for(i=0;i<time;i++)
{
;
}
}
/////////////////////////////////////////////////////////////////////////////
// Display //
/////////////////////////////////////////////////////////////////////////////
void display()
{
data = seg[value/100];
tram =0;
delay(50);
tram = 1;
P2 = seg[value%100/10];
chuc = 0;
delay(50);
chuc = 1;
P2 = seg[(value%100)%10];
donvi = 0;
delay(50);
donvi = 1;
}Last edited by tramng; 12-02-2014, 17:19.
Comment
Bài viết mới nhất
Collapse

Comment