Tình hình là thế này các Bác ạ, Em đang quyết tâm học 8051, đang còn dư 2 con 89S52 , 1 con 89c2051, led 7 thanh đủ lắp 1 cái đồng hồ, Loay hoay tìm mãi trên mạng thấy có mạch đồng hồ 89c2051 của Bác Duy phi là dễ nhất và đơn giản nhất, (chỉ gồm có 1 con 89c2051 và 4 led 7 đoạn, 4trans, 1IC 7805), Backup time bằng 3 pin 1,5V, không cần IC RTC, nhưng lại không có mạch nạp 89c2051 (Em không có con IC74LS373 để lắp mạch nạp này), vậy có thể thay 89c2051 bằng 89s52 được không, khi đó phải thay đổi sơ đồ mạch ntn? thay đổi code những gì?. Cám ơn các bác nhé!
Thông báo
Collapse
No announcement yet.
cần giúp mạch đồng hồ 89c2051
Collapse
X
-
có cần phải thay đổi lại code không vậy bạn?
#include c:\mc51\8051io.h
#include c:\mc51\8051reg.h
extern register char cputick;
unsigned register char
sec100,sec,sec5,min,hour,flag1,command,ACC,temp,op to;
/* above must be defined as register for tiny model */
unsigned register char i,digit,buffer[4],onHour1,onMin1,offHour1,offMin1;
register char key,delay,count1;
char convert[10] = {0x3F,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0e,0x7f,0x5f };
main()
{
opto = 0xff;
cputick = 0;
hour = 18;
min = 0;
sec = 0;
key = -1;
flag1 = 0;
onHour1 = 18; /* 18:30 turn lamp on */
onMin1 = 01;
offHour1 = 18; /* 21:30 turn off */
offMin1 = 02;
count1 = 0;
buffer[0] = 0x40;
buffer[1] = 0x40;
buffer[2] = 0x40;
buffer[3] = 0x40;
serinit(9600); /* must be invoked for tiny model */
while(1)
{
while ( cputick < 1)
scanLED();
cputick = 0;
/*------------- the following tasks execute every 10ms ------*/
time();
timeToBuffer();
blink();
offmsd();
keyexe();
keydelay();
comparetime();
/*-----------------------------------------------------------*/
}
}
/* ****************** change constant below for other X-tal ********/
time ()
/* update real-time clock */
{
sec100++;
if (sec100 >= 100) /* 100 * 10 ms = 1 s */
{sec100 = 0;
flag1 |= 0x05; /* set bit 0, bit 2 */
temp = 50;
sec++;
if (sec >= 60)
{sec = 0;
flag1 |= 0x02; /* set bit 1 */
min++;
if (min >= 60)
{min = 0;
hour++;
if (hour >= 24)
{hour = 0;
}
}
}
}
}
scanLED() /* scan 4-digit LED and 4-key switch, if key pressed key = 0-3
else key = -1 */
{
int i;
digit = 0x08;
key = -1;
for( i = 0; i < 4; i++) /* 4-DIGIT scanning */
{
P3 = ~digit & opto; /* send complement[digit] */
P1 = ~buffer[i]; /* send complement[segment] */
pause(1); /* delay a while */
P1 = 0xff; /* off LED */
if ((P3 & 0x10) == 0) /* if key pressed P3.4 became low */
key = i; /* save key position to key variable */
digit>>=1; /* next digit */
}
}
timeToBuffer()
{
buffer[0] = convert[min%10];
buffer[1] = convert[min/10];
buffer[2] = convert[hour%10];
buffer[3] = convert[hour/10];
}
blink()
{
if((flag1 & 0x04) != 0) /* check bit 2 if set decrement temp until zero
*/
{temp--;
if (temp != 0)
{
buffer[1] |= 0x80;
buffer[2] |= 0x80;
}
else( flag1 &= ~0x04);
}
}
keyexe()
{
if (key != -1)
{
if ((flag1 & 0x80) == 0) /* within 0.5 sec after 1st press
the following execution is not allowed
*/
{
flag1 |= 0x80;
delay = 50;
switch(key){
case (0): /* key position 0 */
manualOnOff(); /* service key 0 */
break;
case (1): /* key position 1 */
savetimeOnOff1(); /* service key 1 */
break;
case (2): /* key position 2 */
setmin(); /* service key 2 */
break;
case (3): /* key position 3 */
sethour();
}
}
}
}
sethour()
{
hour++;
if ( hour== 24)
hour = 0;
}
setmin()
{
min++;
sec = 0;
if( min == 60 )
min = 0;
}
savetimeOnOff1()
{
count1++;
if (count1 == 1)
{
onHour1 = hour;
onMin1 = min;
buffer[0] = 0x00;
buffer[1] = 0x68;
buffer[2] = 0x78;
buffer[3] = 0x71;
showOnce();
}
else
{
count1 = 0;
savetimeOff1();
}
}
savetimeOff1()
{
offHour1 = hour;
offMin1 = min;
buffer[0] = 0x63;
buffer[1] = 0x63;
buffer[2] = 0x78;
buffer[3] = 0x71;
showOnce();
}
manualOnOff()
{
opto= ~opto | 0x7f; /* complement bit 7 which in turn activates P3.7
*/
if ((opto & 0x80) == 0)
{
buffer[0] = 0;
buffer[1] = 0;
buffer[2] = 0x68;
buffer[3] = 0x78;
showOnce();
}
else
{
buffer[0] = 0;
buffer[1] = 0x63;
buffer[2] = 0x63;
buffer[3] = 0x78;
showOnce();
}
}
showOnce()
{
int i;
for(i=0;i<500;i++)
scanLED();
}
keydelay()
{
if ((flag1 & 0x80) !=0)
{
delay--;
if(delay == 0)
flag1 &= ~0x80;
}
}
comparetime()
{
if((flag1 & 0x01) != 0 )
{
flag1 &= ~0x01;
if(hour == onHour1 && min == onMin1)
opto = 0x7f; /* clear P3.7 turning opto on */
if(hour == offHour1 && min == offMin1)
opto = 0xff; /* set bit P3.7 turning opto off */
}
}
offmsd()
{
if (buffer[3] == 0x3f) /* if msd = '0' then put blank unstead */
buffer[3] = 0x00;
}
pause(j)
int j;
{
int i;
for (i = 0; i < j; i++)
;
}
Ví dụ như chỗ
#include c:\mc51\8051io.h
#include c:\mc51\8051reg.h
thì phải thay đổi thành 89c52 chứ nhỉ?, Mình hiểu lơ mơ lắm, giúp mình nhé!Email:
Đau đầu vì điện tử
Comment
-
Nguyên văn bởi romance_qt Xem bài viếtbạn làm vậy thì khi cúp điện lấy đâu ra nguồn nuôi cho 89S52 liệu máy cục pin kia được bao lâu thời gian,hết pin resert.lại phải chỉnh lại giờ,tốt nhất làm có RTC DS1307 là hay nhấtEmail:
Đau đầu vì điện tử
Comment
-
Mình dùng 89s52, mô phỏng bằng proteus7.1 nó ko chạy là sao nhỉ, sao Bác Phi viết bài mà ko kiểm tra lại, ở chỗ led7 chung anode trong hình bác lại viết là catod chung là sao?
còn cái code của nó nữa, liệu có sai sót gì không?Email:
Đau đầu vì điện tử
Comment
-
Nguyên văn bởi lowpass Xem bài viếtMình dùng 89s52, mô phỏng bằng proteus7.1 nó ko chạy là sao nhỉ, sao Bác Phi viết bài mà ko kiểm tra lại, ở chỗ led7 chung anode trong hình bác lại viết là catod chung là sao?
còn cái code của nó nữa, liệu có sai sót gì không?
Comment
-
Nguyên văn bởi chung1608 Xem bài viếtđưa mạch và code lên đây mình hô biến cho ^^!
và đây là hướng dẫn
code ở bài trên mình đã post, giúp mình với!Last edited by lowpass; 08-10-2011, 18:24.Email:
Đau đầu vì điện tử
Comment
-
Nguyên văn bởi chung1608 Xem bài viếttình hình là code C, mạch muốn led sáng phải thay trans PNP thành cỗng NOT (protues mô phỏng quét led ko dùng trans được )Email:
Đau đầu vì điện tử
Comment
-
Nguyên văn bởi lowpass Xem bài viếtcode C hay ASM thì cũng chuyển sang file .hex chứ nhỉ? mình chẳng hiểu, còn cái cổng NOT lắp thế nào vậy? mình chạy mô phỏng bằng file .hex copy được ở trong bài hướng dẫn ấy, mà nó vẫn không chạy, toàn báo lỗi?
Cổng NOT thay cho trans, chân B của trans là chân vào cổng NOT chân C của trans là chân ra của công NOT
Comment
-
Mình đã vẽ lại rồi dùng IC cổng NOT 74LS05, mạch chạy không báo lỗi nữa, nhưng không có led nào sáng, chỉ thấy các cổng có tín hiệu nhấp nháy, giúp mình một lần nữa đi nhé, nếu không mô phỏng được thì mình làm mạch thật thôi vậy.Attached FilesEmail:
Đau đầu vì điện tử
Comment
Bài viết mới nhất
Collapse
-
bởi mantruongepuNhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 14:40 -
-
bởi TherulCảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
-
Channel: từ PIC tới dsPIC
Hôm qua, 07:20 -
-
Trả lời cho Em muốn hỏi mọi người về nguyên lý hoạt động, tần số của mạch công suất trong máy rửa siêu âm ạ.bởi nguyendinhvanBạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...-
Channel: Hỗ trợ học tập
19-11-2024, 22:44 -
-
bởi yname11 E có 1 laptop bị hỏng màn hình, e tháo ra thì thấy nó có 4 lớp , lớp ngoài cùng là 1 lớp nhựa rất mỏng màu hơi đen ( chắc là 1 loại film dán), tiếp theo là 1 lớp thủy tinh bị vỡ (màu đen) , đến 1 lớp thủy tinh trắng ( lớp này có...
-
Channel: Thiết bị điện tử cá nhân
18-11-2024, 19:12 -
-
Trả lời cho Mua anten ở đâu?bởi tmcodonAnten bạn thu nguồn sóng nào vậy? Nếu xem truyền hình thì giờ k làm đc anten nữa rồi
-
Channel: Ăng ten và truyền sóng
16-11-2024, 15:34 -
-
Trả lời cho Mạch nguồn đôi dùng 7812 và 7912bởi tmcodonThank bác nhá. Tìm mãi mới thấy. Giờ vọc đã xem sao...
-
Channel: Hỗ trợ học tập
16-11-2024, 10:39 -
-
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
15-11-2024, 08:27 -
Comment