mình có cái máy tính bỏ túi =89s52 nhưng mà mình chỉ làm với 16 phím thôi chứ ko làm với 30 phím như chủ topic, muốn mở rộng phím đơn giản thôi
Thông báo
Collapse
No announcement yet.
Làm máy tính bỏ túi bằng 89s52
Collapse
X
-
thật hả?cài bản bao nhiêu vậy bạn?mình cài 7.6 hình như ko có?bạn gửi cho mình được không?thank?
phudubathanh@gmail.com
Comment
-
vậy cao thủ cho tớ xin bản 16 phím đi.gửi vào mail của mình nhé.thank.cho cả code nhé?hj
phudubathanh@gmail.com
Comment
-
các pro làm xong cho e xin 1 bản nhé.e cũng đang làm đồ án về cái này.thank!!!!
phudubathanh@gmail.com
Comment
-
mình đang làm đồ án thiết kế máy tính bỏ tui. làm mạch xong rùi mà k hiển thị LCD. ai pro giúp kiểm tra hộ vs. cảm ơn nhiều...
COde:
#include <at89x51.h>
#define BTN_PORT P1 //dinh nghia phim (ma tran 4x4)
#define LCD_PORT P0 //dinh nghia chan du lieu cua lcd
#define LCD_RS P2_5
#define LCD_RW P2_6
#define LCD_EN P2_7
#define uchar unsigned char //dinh nghia cac kieu ky tu
#define uint unsigned int
#define ulong unsigned long
#define lcdPutc LCDPutChar
#define lcdPuti LCDPutInt
#define lcdPuts LCDPutStr
#define lcdPutb LCDWriteByte
#define lcdLine1() lcdPutb(0, 0x80) // tro ve dong dau thu nhat
#define lcdLine2() lcdPutb(0, 0xc0) //tro va dong dau thu hai
uchar btn = 0, lKey = 0, hang = 0, cot = 0, Signed = 0;
uint cKey;
uchar M[4][4] ={{'C', '0', '=', '/'}, // Gan ki tu xuat hien cac phim vao mang M;
{'1', '2', '3', '*'},
{'4', '5', '6', '-'},
{'7', '8', '9', '+'} } ;
ulong so1;
uint so;
void delay(uint i) //ham tao tre delay
{
while(i--);
}
void LCDWriteByte(uchar mode, uchar d)
{
LCD_PORT = d; // Chan LCD ;
LCD_RW = 0; // Ghi du lieu vao LCD;
if(mode == 1) // Chon thanh ghi du lieu;
LCD_RS = 1; //
else
LCD_RS = 0; // Chon thanh ghi lenh ;
LCD_EN = 1; // Tin hieu Cho phep LCD;
delay(4); // Tao tre;
LCD_EN = 0; // Tin hieu khong cho phep LCD;
delay(40); // Tao tre;
}
void LCDPutChar(uchar byte) // Ghi du lieu can hien thi ra LCD;
{
LCDWriteByte(1, byte);
}
void LCDPutStr(char const *str) // Ghi chuoi ki tu ra LCD;
{
char const *sPtr;
sPtr = str;
while(*sPtr != '\0')
{
LCDWriteByte(1, *sPtr);
sPtr++;
}
}
void LCDPutInt(long x)
{
long tmp, val;
int lenght = 0;
uchar str[10]={0};
if(x<0) tmp = 0-x;
else tmp = x;
do
{
val = tmp%10;
str[lenght] = val + '0';
lenght++;
tmp = tmp/10;
} while(tmp !=0);
if(x <0)
{
str[lenght] = '-';
lenght++;
}
do
{
lenght--;
LCDPutChar(str[lenght]);
} while(lenght);
}
void lcdClrL(uchar l)
{
if(l == 1)
{
lcdLine1();
lcdPuts(" ");
lcdLine1();
}
else
{
lcdLine2();
lcdPuts(" ");
lcdLine2();
}
}
void khoitao() //khoi tao lcd
{
LCDWriteByte(0, 0x38); //LCD 2 dong, font 5*7;
LCDWriteByte(0, 0x0C); //Bat hien thi, tat con tro, con tro khong nhap nhay;
LCDWriteByte(0, 0x01); // Xoa man hinh;
delay(1700);
}
void Quetphim(void) {
uchar i, gKey;
i = 1;
i = i<< hang;
BTN_PORT = ~i; //hang=0 BTN_PORT=0xfe;hang=1 BTN_PORT=0xfd;hang=2 BTN_PORT=0xfb;hang=3 BTN_PORT=0xf7
delay(1);
gKey = BTN_PORT;
if((gKey&0xf0) != 0xf0) //phim duoc nhan( Dat gia tri 1 cho tung cot, kiem tra tung hang )
{
if(gKey == lKey)
{
cKey++;
if(cKey == 3000) //chong doi phim
{
if((lKey&0xe0) == 0xe0) cot = 0;
else if((lKey&0xd0) == 0xd0) cot = 1; //gan cho cot 2 gia tri =1
else if((lKey&0xb0) == 0xb0) cot = 2; //gan cho cot 3 gia tri =2
else if((lKey&0x70) == 0x70) cot = 3; //gan cho cot 4 gia tri =3
cKey = 0; btn = 1;
}
}
else
{
cKey = 0;
lKey = gKey;
}
}
else{
hang++;
btn = 0;
}
if(hang > 3) hang = 0;
}
void Hienthi(void)
{
uchar ma = M[cot][hang], sig;
if((ma<= '9') && (ma >= '0'))
{
so = so *10 + ma - '0';
lcdPutc(ma);
}
else if((ma == '+') || (ma == '-') || (ma == '*') || (ma == '/'))
{
sig = ma;
if(Signed == 0){
so1 = so; so = 0;
lcdPutc(ma);
Signed = 1;
}
else
{
lcdClrL(2); lcdPuts("Error #2");
}
}
else if(ma == '=')
{
switch(sig)
{
case '-': so1 = so1 - so; break;
case '+': so1 = so1 + so; break;
case '*': so1 = so1 * so; break;
case '/':
if(so == 0) {
lcdClrL(2); lcdPuts("Error #1");
}
else
so1 = so1 / so;
break;
}
lcdPutb(0, 0x0c); // Bat hien thi, tat con tro;
lcdLine2(); lcdPutc('=');
lcdPuti(so1);
Signed = 0; so = 0; so1 = 0;
btn = 0; while(btn == 0) Quetphim();
lcdPutb(0, 0x01); // Xoa man hinh;
delay(5000);
lcdPutb(0, 0x0f); // Bat hien thhi, bat con tro, bat nhap nhay;
}
else{
so = so1 = 0;
lcdPutb(0, 0x01);
delay(5000);
lcdPutb(0, 0x0f);
}
}
void main(void)
{
khoitao();
lcdPuts("May Tinh Bo Tui");
lcdLine2();
lcdPuts(" Vi Dieu Khien");
btn = 0;
while(btn == 0) Quetphim();
lcdPutb(0, 0x01); delay(1700);
lcdPutb(0, 0x0f);
while(1){
btn = 0;
while(btn == 0) Quetphim();
Hienthi();
}
}
Comment
-
Em chỉ cần cái 4*4 thôi ạ. Với LCD 2*16. Pro nào có cho Em xin với được không.
Mail: ducthuanpham10@gmail.com.
Cảm ơn nhiều.
Comment
-
bạn ơi Link die rùi bạn post lại giúp mình vs nha! mình đang cần gấp. Thanks bạn nhiều.Nguyên văn bởi gamowaxaky Xem bài viếtĐây là đồ án môn học II của mình, làm một máy tính bỏ túi bằng 89s52, hiển thị bằng LCD16x2, lập trình bằng asm, có kèm theo file mô phỏng bằng proteus, và mạch in vẽ bằng proteus.

Download
Comment
-
bạn ơi Link die rùi bạn post lại giúp mình vs nha! mình đang cần gấp. Thanks bạn nhiều.Nguyên văn bởi gamowaxaky Xem bài viếtĐây là đồ án môn học II của mình, làm một máy tính bỏ túi bằng 89s52, hiển thị bằng LCD16x2, lập trình bằng asm, có kèm theo file mô phỏng bằng proteus, và mạch in vẽ bằng proteus.

Download
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm bạn thân quen cũ.bởi mèomướpDạ cháu đọc 1 số bài viết của bác vi... thì nhớ đc bác là 1 cụ già gần 80 tuổi, sức khỏe yếu. Đam mê và làm vc về kỹ thuật điện. Thích thơ ca. Có nhìu bài chia sẻ quý báu cho thế hệ sau. Tuy nhiên già rồi nên khái tính, bảo thủ, nhưng vẫn đáng kính ạ... còn lão nhathung... thì kiểu bố đời
-
Channel: Tâm tình dân kỹ thuật
31-07-2026, 12:52 -
-
bởi lvhnHãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
-
Channel: Tâm tình dân kỹ thuật
30-07-2026, 15:49 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnNhớ không nhầm thì lúc còn đi học có gặp chú 1 lần cf bãi xe Nguyễn Kim, giờ quán cf đó nghỉ bán rồi
-
Channel: Tâm tình dân kỹ thuật
30-07-2026, 15:44 -
-
Trả lời cho Thắc mắc pin 21v ?bởi lvhnCon số đấy biểu thị gần đúng thôi, cái đồng hồ đó có đảm bảo chính xác hay không? pin có cục lên 4v4 vẫn bình thường. Cái gì cũng có sai số trong phạm vi không quá lớn thì không ảnh hưởng gì đâu, bàn ngay ngón ngắn ngón dài mà
-
Channel: Điện tử dành cho người mới bắt đầu
30-07-2026, 15:32 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnThay mấy con transisto nhỏ đầu vào, thường vi sai lỗi hay bị. Khám tổng quát chân các linh kiện xem có bị rỉ sét nhiều không?
-
Channel: Điện thanh
30-07-2026, 15:24 -
-
bởi dinhthuong92Mạch này hiệu suất ra led đạt khoảng 90.7% tại 12V in, 40W out.
-
Channel: Nguồn!
27-07-2026, 10:15 -
-
bởi dinhthuong92Có lẽ nguồn viết bài này chỉ mang tính định tính để nói rằng cần thay đổi tổng trở tải để có Pmax chứ trình bày chưa chi tiết và thấu đáo một cách định lượng. Công thức tổng quát phải có mặt L mới được, và nói là "tổng...
-
Channel: Nguồn!
27-07-2026, 10:09 -
-
Trả lời cho [Chia sẻ] Tổng hợp các công ty AI Việt Nam đang làm gì thật sự — Từ voicebot, computer vision đến AI agentsbởi nguyendinhvanCàng ngày, CNTT càng trở nên lôi thôi , rách việc.
Cái AI và Ge... trên trình duyệt chỉ tổ làm vướng mắt, mất thì gian.
Tôi toàm phải mất cộng tắt nó đi.-
Channel: Xu hướng, nhu cầu và thị trường
25-07-2026, 14:59 -

Comment