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
-
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
-
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
-
bởi dinhthuong80Một số kết quả test với mô-tơ quạt khác.
Kết luận cá nhân người mở chủ đề: Quạt dân dụng 47-65W không nên dùng cánh 7 lá lớn vì hiệu suất thấp, lưu lượng gió không cao như NSX công bố!
[Video test các loại cánh quạt chứng tỏ loại 7 cánh hiệu...-
Channel: Điện tử gia dụng
Hôm qua, 15:07 -
-
Trả lời cho Load buffer là gì?bởi pia2k1Thêm kiến thức mới cho thuật ngữ mới nè
-
Channel: Thuật ngữ chuyên ngành
10-04-2025, 17:07 -
-
bởi dinhthuong80Xin upload kết quả thí nghiệm, mọi người sẽ tự hiểu và biết phân tích đúng sai hợp lí hay không. Ai không biết kĩ thuật thì chẳng dám tin vào cảm giác của bản thân, chỉ tin những gì nsx nói, dù họ có nói phét thế nào!!!
Còn...-
Channel: Điện tử gia dụng
09-04-2025, 22:10 -
-
bởi nguyendinhvanEm rất là quý bac, nhưng hôm nay em thấy bác sai đấy.
Cái sai của bác là đem cái cơ sở lý luận kỹ thuật công nghệ của Tư bản Chủ nghĩa để trao đổi với người theo Chủ Nghĩa Kinh Nghiệm.
...
-
Channel: Điện tử gia dụng
08-04-2025, 20:54 -
-
bởi nguyendinhvanTốn wifi 4G quá !
Nào là lưu lượng , nào là tốc độ, nào là đường kính, nào là diện tích, nào là vòng quay, nào là hiệu suất, nào là dụng cụ, nào là thiết bị nào là máy đo, nào là phương pháp....
Cộng với một bản số liệu...-
Channel: Điện tử gia dụng
08-04-2025, 20:45 -
-
bởi tuyennhanCánh nhỏ là của tàu đem qua giờ mình copy theo mà tàu thì chuyên ăn bớt vật liệu để giảm giá thành từ cánh cho đến mô tơ mới thành ra vậy .
Cách thử của dinhthuong có đúng thì chỉ đúng với cái quạt Senko còn với quạt khác mô tơ...-
Channel: Điện tử gia dụng
08-04-2025, 20:28 -
-
bởi nhathung1101Lão Phàm có biết lịch sử cái quạt không?
Ngày xưa chỉ có 1 cánh vẫn chạy tốt.
Sau này thêm 2 thành 3 cánh, chạy tốt.
Đến khi ông Cờ Rít Tóp Mỡ muốn buôn quạt sang châu Phi, để được tai tiếng ngang với...-
Channel: Điện tử gia dụng
08-04-2025, 18:42 -
-
bởi nhathung1101Bình tĩnh bình tĩnh bình tĩnh
Hít thở hít thở hít thở....
Mai họ còn sản xuất loại siêu mỏng cánh, chỉ dán vào là xong.
Họ còn đảm bảo dùng 1 cánh tự tin cả ngày, dùng 10 cánh tự tin cả đời...
Lão cứ mất...-
Channel: Điện tử gia dụng
08-04-2025, 18:17 -
-
bởi vi van phamĐơn giản như thế mà cháu cũng không hiểu ư? Cứ lôi 2 cái motor vào?
Tôi nói muốn kiểm tra phải cho 2 CÁNH QUẠT cùng thông số RPM rồi mới kết luận.
Kiểm tra như thế khác gì Trọng tài ăn hối lộ? ....-
Channel: Điện tử gia dụng
08-04-2025, 17:07 -
-
bởi dinhthuong80Thôi, bác cứ tin nsx thì để tối nay cháu sẽ test 2 cây quạt cùng hãng Senko, một cây 3 cánh lớn 47W-57.6m3/min và 1 cây 65W-88.6m3/min xem nsx có nói láo không ạ, cứ cái nào cùng số bật mà thổi cho cái quạt hư kia quay được nhiều vòng hơn là...
-
Channel: Điện tử gia dụng
08-04-2025, 16:54 -
Comment