các bác cho em xin thuật giải của chương trình hiển thị số dấu phảy động lên màn LCD với ạ! Em đang làm bài tập lớn nhưng bí ở chỗ này quá!
Thông báo
Collapse
No announcement yet.
Hiển thị dấu phảy động trên LCD?????????
Collapse
X
-
Em vẫn chưa hiểu lắm bác ơi! Ví dụ em muốn hiện kết quả của phép chia 1:3=0,3333 thì phải làm thế nào đây ạ. Các bác chỉ giúp em với?Nguyên văn bởi dt_love Xem bài viếtchắc là bạn tách lấy phần sau dấu phẩy t phân, sau đó muốn hiển thị bao nhiêu số sau dấu phẩy thì nhân với 10 mũ bấy nhiêu, sau đó chỉ việc chia và hiển thị là ổn.
hic, đơn giản nhất mà chẳng cần g thuật gì cả.
ai có g thuật hay chỉ giáo với.
Comment
-
Việc này bạn có thể hiện thực bằng cách tách số trong lập trình.
Mình đề xuất 1 kĩ thuật thế này.
Bạn tra tài liệu về chuẩn IEEE 754 đối với việc lưu trữ số thực trong bộ nhớ.
http://en.wikipedia.org/wiki/IEEE_754
sau đó bạn dùng kiểu Union để phân tích trong chương trình có bao nhiêu phần phân và bao nhiêu phần nguyên
Phần nguyên có thể lấy bằng cách ép kiểu điều này hỗ trợ bởi compiler.
Phần Phân có thể lấy bằng cách nhân tương ứng số dấu phẩy phía sau.
Bất lợi của kĩ thuật này.
-->Siêu chậm vì tốn rất nhiều chu kì máy.
Do các kiểu thực đều ở dạng 32 bit
mà các loại MCU thì 8 bit 16 bit thì phổ biến chứ 32 bit thì có lẽ đồ án mà xài nó thì ....
Sông dài, Thuyền lớn, Biển rộng bao la.
Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.
Comment
-
Thuật giải loại bài toán này của mình như sau :Nguyên văn bởi vulongdt10 Xem bài viếtEm vẫn chưa hiểu lắm bác ơi! Ví dụ em muốn hiện kết quả của phép chia 1:3=0,3333 thì phải làm thế nào đây ạ. Các bác chỉ giúp em với?
- Kiều dữ liệu của bạn muốn hiển thị là số thực (float) với giá trị "x" nào đấy.
- Bạn lấy khai báo 1 biến nào đấy "y" kiểu số ngyên. số nguyên này có giá trị phải nằm trong giới hạn của phần nguyên số thực của bạn
- Tiếp theo bạn thực hiện phép tính tách phần nguyên của số thực bằng lệnh : y = x / 1. thì giá trị y sẽ là phần nguyên mà bạn muốn qua tâm.
- Hiển thị giá trị này ra màn hình LCD
- Tiếp theo là hiển thị ký tự dấu chấm "." ra LCD
- Bây giờ thì hiện thị phần thập phân. bạn làm phép : x = x - y
- Bây giờ giá trị thập phân được chứa trong bến x.
- Bạn muốn lấy sau dấu phẩy mấy số thì hãy làm 1 vòng lặp ( for,while ) cho biến x này nhân với 10. " VD for(i=0;i<2;i++) x *= 10; // Tôi lấy sau dấu phẩy 2 chữ số "
- Bây giờ lại chia tiếp y = x / 1; Hiển thị giá trị y ra LCD là xong.
Đây là thuật giải mà tôi hay sử dụng. Không biết các Bác có bác nào có thuật giải khác đơn giản hay làm tăng tốc độ xữ lý hơn chỉ cho em biết với.
Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện
Comment
-
Nếu bạn sử dụng hàm sprintf() với chuỗi string format của kiểu số thực là %f thì vấn đề rất đơn giản, không cần nhân chia gì hết.Nguyên văn bởi vulongdt10 Xem bài viếtEm vẫn chưa hiểu lắm bác ơi! Ví dụ em muốn hiện kết quả của phép chia 1:3=0,3333 thì phải làm thế nào đây ạ. Các bác chỉ giúp em với?
Ví dụ:
Code:#include <stdio.h> char lcdBuff[10]; ... sprintf(lcdBuff,"%05f",(float)1/3); --> lcdBuff="0.33333" sprintf(lcdBuff,"%08f",(float)1/3); --> lcdBuff="0.33333333" ... printf(lcd_putc,"%s",lcdBuff);
Email:
Phone: 0905.034.086
Comment
-
Nguyên văn bởi cskiller Xem bài viếtNếu bạn sử dụng hàm sprintf() với chuỗi string format của kiểu số thực là %f thì vấn đề rất đơn giản, không cần nhân chia gì hết.
Ví dụ:
Code:#include <stdio.h> char lcdBuff[10]; ... sprintf(lcdBuff,"%05f",(float)1/3); --> lcdBuff="0.33333" sprintf(lcdBuff,"%08f",(float)1/3); --> lcdBuff="0.33333333" ... printf(lcd_putc,"%s",lcdBuff);
Cách này khá hay,Việc của bạn chỉ cần tìm cách làm cho thư viện stdio.h có thể hoạt động.
Nhưng phương thức này đôi khi tốn đến cả nghìn chu kì máy.
Mình từng thử.
Sau này không muốn đụng đến.
Sông dài, Thuyền lớn, Biển rộng bao la.
Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.
Comment
-
Mình đang lập trình CV cho AVR. Bây h mình muốn hiển thị 1 số kiểu float lên LCD vơi đoạn code sau:
Nhưng không hiểu sao khi chạy mô phỏng thì lại ko hiện dc giá trị j cả#include <stdlib.h>
...
float a;
unsigned char * str;
...
ftoa(a, 3, str);
lcd_puts(str);
...
Mọi người giúp mình với!* Bùi Quang Minh
* Lớp: Điện tử 10 - K51 - Đại học Bách khoa Hà Nội
* Email:
* Sdt: 01682524028
Comment
-
thực ra thì sử dụng các hàm hỗ trợ sẵn trong thư viện < stdlib.h> vẫn tốt hơn. Gần như lập trình LCD chẳng khác j mình lập trình với turbo C cả
Còn việc kiểm tra trước đây của mình lỗi là do thằng Proteus lỗi, hình như mấy bản ***** hoạt động ko ổn định lắm.
Nếu như có mạch thật thì test là OK!* Bùi Quang Minh
* Lớp: Điện tử 10 - K51 - Đại học Bách khoa Hà Nội
* Email:
* Sdt: 01682524028
Comment
-
Chào mọi người! em có hàm muốn hiển thị số thập phân F lên LCD:
#include<stdio.h>
char dist[6]
.....................
sprintf(disf,"%3.1f",F);
print_LCD(dist,6);
.........................................
hàm print_LCD:
void print_LCD(char*str,unsigned char len){
unsigned char i;
for(i=0;i<len;i++){
if(str[i]>0)putChar_LCD(str[i]);
else putChar_LCD(' ');
}
}
em đã thử nhưng LCD chỉ hiện mỗ dấu "?", em ko biết lỗi sai ở đâu, mong các bác giúp em. Cảm ơn!
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamHôn nhân của tôi dường như có bàn tay sắp đặt của ông tơ, bà nguyệt. Bà xả nói tôi viết hồi ký duyên số này. Tôi đã viết vào tập 100 trang học sinh. Sau 50 năm lật tới, lật lui xem quyển hối ký có nơi rách nát. Tôi viết lại bằng AI, giọng đọc VBBe, ca sĩ hát là là Synthesizer V.
...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:18 -
-
Trả lời cho Công thức tính định luật kirchhoffbởi nguyendinhvanCông thức này chắc là để áp dụng cho UAV để bắn máy bay F15....
-
Channel: Hỗ trợ học tập
14-05-2026, 21:17 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92GIỚI THIỆU CA KHÚC VỀ CHA MẸ:
Nặng Nghĩa Mẹ Cha
Sáng tác: Hoàng Đình Thường
Giọng hát: AI
Công cha cao tựa như Thái Sơn
Nghĩa mẹ sâu nước biếc xanh trong
Mong con khôn lớn đời hạnh phúc
Mẹ cha...-
Channel: Tâm tình dân kỹ thuật
12-05-2026, 16:22 -
-
bởi afrendlyCảm ơn bạn. Mình hỏi để thợ có thể tham khảo thôi chứ không đủ kiển thức để sửa, mà cũng không có đồ nghề, mua đồ nghề quá tiền máy. Gọi nhiều lần mà thợ hẹn mãi chưa có tới ấy bạn. Mình muốn sửa được chứ bỏ thì uống, nhưng sợ là được mỗi người thợ mà lại không sửa nổi....
-
Channel: Điện tử gia dụng
11-05-2026, 00:34 -
-
bởi mèomướpDạ nó bị tắc ẩm hoặc rò thiếu gas hoặc lốc yếu hoặc van tiết lưu có vấn đề hoặc tất cả những nguyên nhân trên ạ. Chú ko chuyên về mảng này thì bán đi, giành thời gian trồng rau sạch đem ra chợ bán lấy tiền mua tủ mới ạ. Còn...
-
Channel: Điện tử gia dụng
10-05-2026, 17:01 -
-
bởi afrendlyXin chào mọi người. Mình lại có vấn đề về đồ điện cần nhờ mọi người hỗ trợ giúp. Mình có tủ lạnh Sharp dùng cũng lâu rồi. Trước có bị kém lạnh, không đông đá thì có thợ họ mang về, sục đường ga gì đó hết 900k và đã dùng...
-
Channel: Điện tử gia dụng
10-05-2026, 16:53 -
-
bởi dinhthuong92Đấy, cái tôi thắc mắc là chỗ màu hồng ấy bạn, để áp vào cao chứ không bị sụt gần bằng áp pin thì rất cần cuộc cảm để làm điều đó. Tuy nhiên, trong công thức bác thớt dẫn không thấy mặt L, và một vài mạch MPPT tôi đã kiểm...
-
Channel: Nguồn!
09-05-2026, 10:01 -
-
bởi mèomướpDạ mạch sạc là 1 cục nguồn, nó sẽ điều chỉnh công suất đầu ra để có tổng trở bằng nội trở của pin ạ. Và cái cách nó chỉnh công suất đầu ra sẽ là dạng buck, boot. Đều cần đến cuộn cảm ạ. Tất nhiên chú thích thì có thể dùng dạng tuyến tính transistor để bù trừ nhưng mà nó đốt năng lượng vô ích ạ...
-
Channel: Nguồn!
08-05-2026, 16:26 -
-
bởi dinhthuong92Tng trở R của tải (gồm pin và mạch sạc) trong công thức đó rõ ràng khống có L xuất hiện. Nếu tính các dây dẫn thì rất nhỏ, bỏ qua. Vì nội trở pin là rất nhỏ, có thể nói luôn lớn hơn nội trở solar, nên mạch MPPT sẽ hầu như luôn tính...
-
Channel: Nguồn!
08-05-2026, 11:00 -

Comment