mình đang muốn làm về LCD graphic màu nhưng không hiểu cách khởi tạo cho nó, không biết nó có khác so với GLCD nền xanh chữ đen ko, mình dùng PÍC6F887 để điều khiển. a e nào có làm rồi xin hướng dẫn mình bước cơ bản. àh với ở tphcm a e nào biết chổ bán con IC ADS7843 dùng cho màn hình cảm ứng. cảm ơn các bạn giúp đỡ.
Thông báo
Collapse
No announcement yet.
LCD graphic và touch screen
Collapse
X
-
Màn hình cảm ứng
Cuối cùng mình cũng xử lý xong cái glcd giờ tới con ADS7843 của màn hình cảm ứng. mình dùng PIC18f4620 để dk nhưng trong proteus ko mô phỏng dc nên dùng tạm 18f452 chương trình mình xem rất kỹ ko biết lỗi gì mà ko chạy. bạn nào nghiên cứu qua thì giúp mình.
đây là code:
#include <18f452.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //Reset when brownout detected
#FUSES NOPUT //No Power Up Timer
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)
#define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
////////////////////////////////////////////////////////////////////////////////
//////////////dinh nghia PIN/////////////////////
#define ADS7843_CS PIN_C1
#define ADS7843_BUSY PIN_C2
#define ADS7843_PENIRQ PIN_B0
////////////////////////////////////////////////////////////////////////////////
//////////////Cchuong trinh con/////////////////////
int16 ads7843_read(mode)
{
int8 lsb, msb;
int16 retval;
output_low(ADS7843_CS); //cho phep chon chip
spi_write(mode);
while (input (ADS7843_BUSY)== 1){;}
msb = spi_read(0);
lsb = spi_read(0);
output_high(ADS7843_CS); //khong phep chon chip
retval = make16(msb, lsb); // tra ve gia tri 16bit ket hop tu 2 bien (msb va lsb) msb la byte cao
retval >>= 4;
return(retval); //tra ve gia tri la: [x][x][x][x][x][x][x][x][x][x][x][x][] [] [] []
}
///////////////////////////////////////////////////////////////////////////////
void main()
{
output_high(ADS7843_CS); // Inactive state (disenable)
setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_4); //khoi tao chuan SPI
int16 x,y;
output_low(ADS7843_CS); // Inactive state (enable)
delay_ms(5);
while (TRUE)
{
while( input(ADS7843_PENIRQ) ==0 ) // is screen touch
{
x = ads7843_read (0x94);
delay_us (2);
y = ads7843_read (0xD4);
delay_ms (1);
if ((x<50)&& (y <50)) //neu vung duoc bam co gtri x,y <50 thi bat den chi thi RB7
{
output_bit( PIN_B7, 1);
delay_ms (100);
output_bit( PIN_B7, 0);
delay_ms (50);
}
}
}
}Attached Files
Comment
-
GLCD tôi đã giải quyết mượt mà phần hiển thị bitmap đa năng(Y chang led matrix) dùng phần mềm build bitmap của a Bvhoang. Phần hiển thị kí tự với font 5x7 cũng đã ok, nhưng hiện tại đang gặp rắc rối nhỏ là giờ mình muốn hiển thị cả 1 chuỗi kí tự dài vd"DTVN" thì chưa thực hiện đc, rắc rối nằm ở chỗ lấy mã ascii của từng phần tử trong chuỗi đó, giờ tôi chỉ cần cắt đc từng kí tự ra khỏi chuỗi đó là ok. CCS ko hỗ trợ hàm cắt kí tự như VB
. Pro nào có cao kiến xin chỉ giáo.
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
Comment
-
Mình không dùng CCS nên không biết nhiều về nó. Theo mình nghĩ bạn tạo một mảng "char string[]" rồi cho các kí tự vào đó sau đó khi nào cần lấy ra theo kiểu "string[i]" với i là biến chạy tăng dần. Hy vọng giúp đc bạn!Nguyên văn bởi hoangdai Xem bài viếtGLCD tôi đã giải quyết mượt mà phần hiển thị bitmap đa năng(Y chang led matrix) dùng phần mềm build bitmap của a Bvhoang. Phần hiển thị kí tự với font 5x7 cũng đã ok, nhưng hiện tại đang gặp rắc rối nhỏ là giờ mình muốn hiển thị cả 1 chuỗi kí tự dài vd"DTVN" thì chưa thực hiện đc, rắc rối nằm ở chỗ lấy mã ascii của từng phần tử trong chuỗi đó, giờ tôi chỉ cần cắt đc từng kí tự ra khỏi chuỗi đó là ok. CCS ko hỗ trợ hàm cắt kí tự như VB
. Pro nào có cao kiến xin chỉ giáo.
Ngô Đông Y
********
Mobile : 0984053088
Yahoo :
Email :
Comment
-
Nguyên văn bởi leson87 Xem bài viếtMàn hình cảm ứng
Cuối cùng mình cũng xử lý xong cái glcd giờ tới con ADS7843 của màn hình cảm ứng. mình dùng PIC18f4620 để dk nhưng trong proteus ko mô phỏng dc nên dùng tạm 18f452 chương trình mình xem rất kỹ ko biết lỗi gì mà ko chạy. bạn nào nghiên cứu qua thì giúp mình.
đây là code:
#include <18f452.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //Reset when brownout detected
#FUSES NOPUT //No Power Up Timer
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)
#define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
////////////////////////////////////////////////////////////////////////////////
//////////////dinh nghia PIN/////////////////////
#define ADS7843_CS PIN_C1
#define ADS7843_BUSY PIN_C2
#define ADS7843_PENIRQ PIN_B0
////////////////////////////////////////////////////////////////////////////////
//////////////Cchuong trinh con/////////////////////
int16 ads7843_read(mode)
{
int8 lsb, msb;
int16 retval;
output_low(ADS7843_CS); //cho phep chon chip
spi_write(mode);
while (input (ADS7843_BUSY)== 1){;}
msb = spi_read(0);
lsb = spi_read(0);
output_high(ADS7843_CS); //khong phep chon chip
retval = make16(msb, lsb); // tra ve gia tri 16bit ket hop tu 2 bien (msb va lsb) msb la byte cao
retval >>= 4;
return(retval); //tra ve gia tri la: [x][x][x][x][x][x][x][x][x][x][x][x][] [] [] []
}
///////////////////////////////////////////////////////////////////////////////
void main()
{
output_high(ADS7843_CS); // Inactive state (disenable)
setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_4); //khoi tao chuan SPI
int16 x,y;
output_low(ADS7843_CS); // Inactive state (enable)
delay_ms(5);
while (TRUE)
{
while( input(ADS7843_PENIRQ) ==0 ) // is screen touch
{
x = ads7843_read (0x94);
delay_us (2);
y = ads7843_read (0xD4);
delay_ms (1);
if ((x<50)&& (y <50)) //neu vung duoc bam co gtri x,y <50 thi bat den chi thi RB7
{
output_bit( PIN_B7, 1);
delay_ms (100);
output_bit( PIN_B7, 0);
delay_ms (50);
}
}
}
}
Địa chỉ toạ độ X ( 0x90), toạ độ Y( 0xD0);
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 dinhthuong92Dạ, cảm ơn bác đã nghe qua và có lời khích lệ cháu ạ.
Thật lòng cháu không dám nhận hai danh hiệu Kỹ sư và Nhạc sĩ đâu ạ, vì phải thật hiểu sâu nắm vững cơ, chứ thực lực cháu đây chỉ là biết chút ít thôi à. Về phần...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 11:58 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietĐơn giản thì có trải nghiệm này
http://www.dientuvietnam.net/forums/...ch%C3%AA%CC%81
Chỉ phần cứng,...-
Channel: Điện tử công suất
27-01-2026, 21:32 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pphức tạp quá, nếu mà có mạch làm sẵn thì ngon, e dùng 2 tấm pv loại 18v 55w thôi bác
-
Channel: Điện tử công suất
26-01-2026, 08:52 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi Nexus 6Pcảm ơn bác nhiều nha, để e nghiên cứu
-
Channel: Điện tử công suất
26-01-2026, 07:38 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamkỹ sư nhạc sĩ dinhthuong dạo này lên tay nghề khá quá.
-
Channel: Tâm tình dân kỹ thuật
25-01-2026, 21:29 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Hát Mừng Sinh Nhật, sáng tác: HĐT, hòa âm-thể hiện: AI
-
Channel: Tâm tình dân kỹ thuật
24-01-2026, 22:13 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Chào bác, gần Tết công việc bác bận lắm phải không?
Vâng mọi người đều thế cả.
Em mới trả phí cho nó 1 tháng, nhờ nó hát thử ấy ạ. Tiếc vì em đã dốt nhạc lí lại lười học nên sáng tác thì vụng về mà hát demo...-
Channel: Tâm tình dân kỹ thuật
24-01-2026, 21:53 -
-
Trả lời cho Có mạch sạc nlmt nào có mppt không các bácbởi bqvietCảm thấy cứng tay thì làm theo hướng dẫn khá chi tiết ở trang sau
https://www.instructables.com/DIY-1k...ge-Controller/-
Channel: Điện tử công suất
23-01-2026, 16:50 -
-
bởi Nexus 6PNhư tiêu đề, các bác giới thiệu e mạch sạc nlmt mppt có chức năng chỉnh dòng với, tấm PV của em 18V 55W, dùng để sạc cho khối pin sắt 3.2V 45A (sắp tới sẽ thay bằng ắc quy 12V)
e cảm ơn-
Channel: Điện tử công suất
23-01-2026, 11:23 -
-
bởi mylinhattNếu bạn đang tìm một dòng máy phay đứng CNC vận hành ổn định, gia công tinh chuẩn và tối ưu năng suất, thì Kitamura là lựa chọn rất đáng cân nhắc. Dòng máy này có kết cấu trục chính theo phương thẳng đứng, bàn máy nằm ngang và vận hành tự động thông qua điều khiển bằng máy tính...
-
Channel: Điều khiển - Tự động hóa
23-01-2026, 11:02 -

Comment