Trờng đại học quốc gia hà nội Trờng đại học công nghệ Nguyễn Hữu Nhận Xây dựng hệ thống đo áp suất, hiển thị hình tinh thể lỏng Khoá luận tốt nghiệp hệ quy Ngành: Điện tử kỹ thuật máy tính Hà nội 2005 Trờng đại học quốc gia hà nội Trờng đại học công nghệ Nguyễn Hữu Nhận Xây dựng hệ thống đo áp suất, hiển thị hình tinh thể lỏng Khoá luận tốt nghiệp hệ quy Ngành: Điện tử kỹ thuật máy tính Cán hớng dẫn: Ngô Diên Tập Hà nội 2005 Lời cảm ơn Trớc hết em xin bày tỏ lòng biết ơn xâu sắc tới thầy Ngô Diên Tập, ngời hớng dẫn em suốt thời gian qua, giúp em hoàn thành nhiệm vụ đặt cho khoá luận Em xin chân thành cảm ơn thầy, cô trờng đại học Công Nghệ dạy dỗ em, tao điều kiện cho em học tập hoàn thành khoa luận Xin chân thành cảm ơn góp ý giúp đỡ bạn lớp k46DC thời gian qua Hà nội tháng năm 2005 Nguyễn hữu Nhận Tóm tắt khoá luận Sau thời gian tìm hiểu em hoàn thành khoá luận với đề tài: Xây dựng hệ thống đo áp suất, hiển thị với màm hình tinh thể lỏng Nội dung đợc tóm tắt nh sau Trớc hết việc tìm hiểu sở lý thuyết, để xây dựng hệ thống đo lờng em sử dụng vi điều khiển, đặc điểm bật vi điều khiển AVR đặc biệt vi điều khiển ATMEGA8535 Sau sở lý thuyết áp suất, cảm biến áp suất, hiển thị màm hình tinh thể lỏng (LCD), sơ đồ nguyên lý chung hệ thống mạch nạp cho vi điều khiển Phần phần thực nghiệm Phần trình bày việc xây dựng hệ thống đo áp suất thực tế theo nh lý thuyết tìm hiểu, kết thu đợc từ hệ thống, nhận xét hệ thống, sai số hệ thống hớng phát triển s¶n phÈm thùc tÕ cho øng dơng Mơc lơc Mở đầu Phần sở lý thuyết Chơng1 tổng quan vi điều khiển 1.1 Tổng quan vi mạch vi điều khiển 1.2 sè vi ®iỊu khiĨn phỉ biÕn 1.2.1 Vi ®iỊu khiĨn Microchip PIC 12Xxxx, 16Xxxx, 17Xxxx, 18Xxxx 1.2.2 Intel 8051 1.2.3 Motorola 86HCxx 1.2.4 Atmel avr 7 Chơng kiến trúc vi điều khiển AVR 2.1 Bộ nhớ chơng trình 10 10 2.2 Bộ nhớ liệu 2.2.1Tệp ghi 2.2.2 Thanh ghi vào/ra(I/O) 2.2.3 Bé nhí SRAM bªn 2.2.4 Bé nhí SRAM bªn ngoµi 2.2.5 EEPROM 2.3 Khèi sè häc logic 11 11 11 12 12 12 12 2.4 Bộ định thời 2.5 Bé trun nhËn AURT 12 13 2.5.1 ViƯc trun 2.5.2 ViƯc nhËn 2.6 CÊu tróc ng¾t 13 13 14 2.7 Bộ so sánh analog 14 2.8 Bộ biến đổi A/D bên 15 2.9 Bộ định thời WATCHDOG bên 17 18 18 Chơng Sơ đồ khối hệ thống 3.1 Đăc trng vi điều khiển ATMEGA8535 3.1.1 Cấu hình chân 20 3.1.2 Sơ đồ khối cấu trúc vi điều khiển AVR ATMEGA8535 3.2 Đôi nét vÒ LCD 22 23 3.3 Cảm biến áp suất 3.3.1 i cng v ỏp sut 25 25 3.3.2 đôi nétCm bin ỏp sut 3.3.3 Cảm biến áp suất MPX6115 Chơng 4: Thực ghép nối khối chức 4.1 Nguån nu«i 29 32 34 34 34 35 36 37 Chơng 5: Xây dụng nạp phần mềm nạp chơng 39 trình cho vi điều khiển 39 5.1 Thit kế nguồn 5V cho MCU AVR: 40 5.2 Tiến hành làm mạch nạp: 4.2 GhÐp nèi bé céng h−ëng t¹o xung nhÞp cho hƯ thèng 4.3 GhÐp nèi LCD víi vi điều khiển 4.4 Ghép nối ngoại vi sử dụng biến đổi ADC bên 4.5 Sơ đồ nguyªn lý tỉng thĨ cđa hƯ thèng 5.3 Nối mạch nạp với AVR: 41 5.4 Phần mềm: 5.4.1 Tr×nh bày tóm tắt cách sử dụng phần mềm 42 42 Phần kết thực nghiệm 49 I Phần cứng hệ thống II Chơng trình phần mềm hệ thống III Kết thu đợc từ hệ thống: 49 49 50 KÕt luËn 53 Phô lôc 54 A Chơng trình phần mềm hệ thống 54 B Định hớng sản phẩm thực tế 58 Mở Đầu Bộ vi xử lý đời năn 1971 mở thời đại công nghệ điện tử tin học, có ảnh hởng sâu sắc đến lĩnh vực khoa học công nghệ Các hệ thống đợc thiết kế dựa tảng vi xử lý có khả mà hệ thống điện tử tơng tự/số thông thờng thực đợc Với mục tiêu hạn chế tối đa linh kiện x©y dùng mét hƯ thèng cã sư dơng vi xử lý, hãng chế tạo bán dẫn tích hợp cách mạng ngoại vi vi xử lý lên chíp để tạo vi điều khiển Những vi điều kiện MICROCHIP, MOTOROLA, ATMEL, AVR, chứa bên nhiều thiết bị ngoại vi nh loại nhớ, đếm 16 bít, khối ADC phân giải 10 12 bít với nhiều lối vào, cổng truyền thông loại PSP/ UART / I2C / CAN/ USB, khối điều khiển biểu thị tinh thể lỏng, chí khối điều chế / giải điều chế dải tần UHF dùng cho kết nối không dây Giải pháp làm cho việc ứng dụng vi điều khiển để chế tạo hệ thống có vi xử lý thêm thuận lợi, thu gọn đáng kể kích thớc mạch điện đạt tỷ số hiệu / giá thành cao Trong mét sè lÜnh vùc s¶n xt còng nh− đời sống, việc đo đạc, theo rõi thu thập thông số điều kiện môi trờng nh nhiệt độ, độ ẩm, áp suất, gió nhu cầu cần thiết việc xây dựng đợc hệ thống tự động đáp ứng đợc yêu cầu cã ý nghÜa thùc tiƠn T tõng lÜnh vùc kh¸c mà thông số khác đợc sử dụng Nhng theo thống kê nhiệt độ áp suất hai thông số đợc quan quan tâm nhièu nhất, khoá luận em lấy việc xây dựng hệ thống áp suất làm ví dụ Những hệ thống tự động theo dõi thu thập số liệu thực đợc máy tính bàng cách lắp giáp thêm Card mở rộng, để ghép nối máy tính với phận cảm biến Giải pháp có u điểm khai thác đợc khả đa nhiệm vụ máy tính: máy tính để ®iỊu khiĨn viªc thu thËp sè liƯu ®ång thêi dïng để xử lý kết Tuy nhiên số công tác quan trắc cụ thể, việc sử dụng hệ thống xây dựng sở máy tính tỏ cha hẳn phù hợp hệ thống có kích thớc lớn, không hoạt động lâu dài điều kiện đo đạc trờng có điều kiện thời tiết khắc nghiệt, địa điểm xa nguồn điện lới Một hớng khác để xây dựng hệ thèng thu thËp sè liƯu lµ sư dơng bé vi ®iỊu khiĨn ®ãng vai trß nh− bé xư lý trung tâm, điều khiển toàn hoạt động hệ thống Theo xu hớng áp dụng vi điều khiển để thiết kế hệ thống đo lờng điều khiển tự động, khuôn khổ luận văn em tập trung nghiên cứu, tìm hiểu, áp dụng vi điều khiển ATMEGA8535 ATMER để thiết kế chế tạo hệ thèng thu thËp sè liƯu vỊ ¸p st phơc vơ công tác nghiên cứu giám sát môi trờng Với mục đích hiểu rõ chức làm chủ phơng pháp lập trình cho khối bên vi điều khiển ATMEGA8535 gồm cổng vào/ra số, đếm, cổng truyền nhận đông không đồng bộ, khối biến đổi tơng tự số DAC Tìm hiểu xây dựng sơ đồ khối tổng thể cho hệ thống đo đo lờng (đo áp suất) Tìm hiểu khối chức hiển thị kết đo (modun LCD) ghép nối chúng với vi điều khiển Tìm hiểu cảm biến (cảm biến áp suất), nguyên lý hoạt động lựa chon cảm biến Thiết kế lắp ráp phần cứng phần mền điều khiển hệ thống Phần I: c¬ së lý thut Ch−¬ng 1: Tỉng quan vỊ vi ®iỊu khiĨn 1.1 Tỉng quan vỊ vi m¹ch vi ®iỊu khiển Hiện việc thiết kế chế tạo c¸c bé vi xư lý ph¸t triĨn theo hai h−íng Hớng thứ thiết kế vi xử lý mạnh tốc độ cao- thực hàng tỉ lệnh giây, độ dài từ liệu lớn 32 64 bit, truy cập không gian nhớ tới hàng trăm Mbyte Các vi xử lý đợc dùng hệ thống cần có công suất tính toán cao nh máy tính cá nhân, hệ thống điều khiển công nghiệp Hớng thứ hai thiết kế, chế tạo vi điều khiển (microcontroller), mét vi khèi: bé nhí, bé ®Õm, bé biÕn ®ỉi tơng tự số, so sánh, cổng truyền thông Nói khác đi, hệ thống máy tính vi mạch Các vi điều khiển điển hình Motorola 68HC11, Intel 8051, microchip PIC, ATMEL AVR Nhân tố thúc đẩy việc nghiên cứu chế tạo vi mạch vi điều khiển tính đa dụng, dễ lập trình, nhỏ gon, tiết kiệm lợng giá thành thấp Vi điều khiển hấp dẫn hệ thống điều khiển điện tử có kích thớc nhỏ, chức đa dạng, dễ dàng tích hợp vào hệ thống để thực hiên tất chức điều khiển Bộ vi điều khiển đợc dùng rộng rãi thiết bị điện tử: Chúng có mặt thiết bị viễn thông, máy văn phòng, thiết bị giải trí, đồ điện tử gia dụng đồ chơi cho trẻ em Các thiết bị nói chung cần sở điều khiển thông minh, có khả tơng tác với ngời sử dụng Hình sơ đồ khối vi điều khiển có đầy đủ tính thiết bị bên nối đợc với vi điều khiển Các thành phần vi điều khiển lµ CPU, RAM, ROM, cỉng vµo/ra sè, giao diƯn trun thông nối tiếp, đếm thời gian, chuyển đổi tơng tự số A/D số tơng tự D/A CPU thực thị đợc lu nhớ chơng trình ROM để điều khiển tất phần lại RAM đợc dùng để lu thiết lập biến đợc sử dụng chơng trình ROM dùng để lu chơng trình số liệu cố định Bộ nhớ ROM vi điều khiển sau đợc nạp chơng trình chở thành phần sụn Bộ nhớ chơng trình ROM loại ROM mặt nạ: chơng trình đợc đa vào trình chế tạo vi mạch, loại OTP ROM cho phep nạp chơng trình lần, loại EPRROM ghi xoá nhiều lần, chúng đợc lập trình nhà thiết kế hệ thống Chơng trình cho vi điều khiển tập lệnh dịch thành mã máy(thờng đợc nạp trực tiếp từ máy tính vào nhớ ROM bên vi điều khiển thông qua nạp chơng trình) Một phía nạp chơng trình nhận liệu từ cổng máy tính, phía khác đa liệu vào vi điều khiển qua chân nạp chơng trình vi mạch, chân lại chân vào/ra thông thờng sau vi điều khiển đă đợc nạp chơng trình Các cổng vào/ra số cho liệu nhị phân di chuyển vào qua cá chân vi mạch Các chân dùng để ghép nối vi điều khiển với thiết bị vào/ra số hay ghép nối với vi điều khiển khác để thực chức khác Cổng truyền liệu nối tiếp tạo khả giao tiếp hệ thống với hệ thèng kh¸c qua chuÈn giao thøc bao gåm SPI, I2C, UART, CAN… Khèi chun ®ỉi A/D cho phÐp vi ®iỊu khiển chuyển đổi mức điện áp tơng tự từ lối vào thành số để xử lý số lu trữ Khối D/A tạo cho vi điều khiển đa mức điện áp tơng tự cho thiết bị không tơng thích với điều khiển số Các đếm dùng để tạo nhịp thời gian xác để đếm số lợng xung 1.2 Một sè hä vi ®iỊu khiĨn phỉ biÕn 1.2.1 Microchip PIC 12Xxxx, 16Xxxx, 17Xxxx, 18Xxxx - Đóng vỏ 8-18-28-40 chân, tơng ứng với 5-13-22-33 chân vào/ra Dung lợng nhớ ROM chơng trình 512 byte đến Kbyte Có 25 byte đến 400 byte RAM Có khối UART loại cÊp trung, cÊp cao Cã ®Õn timer bit,16 bit Bé DAC ®Õn 10 bit, ®Õn kênh vào Có nhớ EEPROM dung lợng 64 đến 512 byte họ Fxxx Tần số xung nhịp tõ ®Õn 40 MHz TËp lƯnh RISC Download ti cỏc a ch: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 http://www.avrfreaks.net/Tools/showtools.php?ToolID=258 Ngoài số chơng trình khác nh: AVR_ASSEMBLER(của ATM, IAR), trình dịch C_COMPILER( IMGECARFT, GNU) Các công cụ phần cứng cã rÊt nhiỊu nh− : STK100, STK200, STK300,STK500 Còng cã nhiều công ty cung cấp kíp nạp nhng đặc điểm thay đổi Kíp nạp làm hài lòng ngời muốn tiếp cận với vi điều khiển AVR, nhng khoá luân em không sử dụng nó, mà em ứng dụng khả tiện dụng (sức mạnh AVR) để xây dựng hai mach nạp nh Phần kết thực nghiệm I Phần cứng hệ thống Sau nghiên cứu lý thuyết hệ thống đo lờng dùng vi điều khiển cung nh phần em xây dựng lắp ráp hệ thống mô hệ thống đo áp suất, sử dụng vi điều khiển ATMEGA8535 kết đợc hiển thị hình tinh thể lỏng LCD 16x2 Hình biểu diễn hệ thống xây dựng: II Chơng trình phần mềm hệ thống : Phần mềm cho hệ thống đợc viết ngôn ngũ C Đợc dịch CodeVisionAVR Sau cảm biến biến đổi thông số cần đo (áp suất, nhiệt độ, ®é Èm ) sang tÝn hiƯu ®iƯn (d¹ng analog), tÝn hiệu đợc đa tới lối vào ADC vi điều khiển ATMEGA8535 Chơng trình phần mềm có nhiệm vụ liên tục biến đổi tín hiệu thành tín hiệu số thc việc tính toán để đa kết Kết đợc hiển thị hình tinh thể lỏng LCD 16x2 đợc điều khiển chơng trình phần mềm Công việc lặp di lặp lại nh tao cho hệ thống có tinh thời gian thực đáp ứng đợc nhu cầu đo lờng Chơng trình cụ thể đợc trình bày phụ lục A III Kết thu đợc từ hệ thống: Sau xây dựng hoàn thiện hệ thống mô Hệ thống cho phép kết nối nhiều cảm biến khác (ở mức đơn giản nhiều 8) Từ cho phép đo nhiều thông số khác nhau, thông số nhng nhiều nơi khác Điều thể tính đa hệ thống, hệ thống đợc xây dựng còng nhá gän dƠ di chun cã thĨ dïng PIN dùng nguồn hạ áp từ điện lới tạo cho hệ thống tính động dễ sử dụng Nhận xét kết đo Hệ thống đợc xây dựng có nhiều u điểm nhng không chánh khỏi sai số phép đo Có sai số xảy có nhiều nguyên nhân khác nhau, sai số cảm biến áp suất, sai số biến đổi ADC, sai số tính toán việc đánh giá sai số kết đo mang tính tơng đối Sai sè phÐp ®o bé biÕn ®ỉi ADC: Bé biến đổi ADC đợc sử dụng có độ phân giải 10 bit Trớc tiên ta không xét đến sai số lợng tử hoá biến đổi ADC mà xét sai số biến đổi gây biến đổi giá trị thông số cần đo (áp suất) dạng liên tục sang dạng số Bộ biến đổi ADC 10 bit có nghĩa lợng tử hoá tới 1024 mức Giả sử cảm biến đo dải đo áp suất từ đến 200 mmHg tơng ứng với giá trị diện áp tơng tụ lối vào đến V nghĩa độ phân giải cỡ 200/1024 =0,1953 mmHg Đây độ phân giải cao dù kết hợp với sai số lợng tử hoá sai số chấp nhận đợc Sai số gây cảm biến (áp suất) : Tuỳ vào phẩm chất cảm biến mà gây sai sè nhiỊu hay Ýt Sai sè cđa c¶m biÕn đợc nhà sản suất đề sẵn với loại cảm biến khác gây cho hệ thống đo luờng sai số khác Ví dụ cảm biến áp suất MPX10 có độ tuyến tính cao : 1%VFss với VFss điện áp toàn dải (giá trị điện áp thay đổi tơng ứng với giá trị áp suất từ Pmin-Pmax) cỡ 50 mV Khi đợc khyếch đại lên AD620 với hệ số khuyếch đại cỡ 24 lần độ lệch cỡ khoảng 12 mV mà độ phân giải ADC 5/1024= 4,88 mV từ gây sai số làm 12/4.88= 2,459 møc suy sai sè cđa hƯ thèng cha tinh chễ 2.459*200/1024=0,48 mmHg Sai số gây độ chễ biến đổi tính toán: Hệ thống đo lờng xây dựng từ vi điều khiển ATMEGA8535 với tần số hoạt dộng cao 8MHz nên thời gian trễ ngắn cỡ vài trục ms nên, mà thông số môi trờng có thay đổi chậm nh nhiều mà sai số trễ không đáng kể Nh tổng sai số hệ thống vào khoảng 0,5 mmHg, giá trị sai số tơng đối nho, chấp nhận đợc Nh vậy, hệ thống đợc xây dựng sở vi điều khiển ATMEGA8535 với tần số hoạt dộng 8MHz có phẩm chất tơng đối tốt, chọn cảm biến có phẩm chất tốt ta xẽ có hệ thống đo lờng với phảm chất cao, đáp ứng đợc nhu cầu đo lờng điều khiển Hớng phát triển hoàn thiện hệ thống: Sau nghiên cứu xây dụng hệ thống, em thấy hoàn thiện hệ thống này, tạo đợc sản phẩm thực tế Bớc đầu mô nh sau: Hình III.1 Máy đo đa Hệ thống hoạt động trạng thái đơn giản cho phép đo thông số khác nhau, để đo đợc nhiều thông số ta cã thĨ thùc hiƯn viƯc ghÐp kªnh, nhiªn việc ghép nhiều kênh gây nên sè h¹n chÕ cho hƯ thèng (sù sai sè sÏ lớn phải tính đến thời gian trễ, phức tạp chơng trình phần mềm) Hơn ta còng cã thĨ ghÐp nèi nã víi m¸y tÝnh hay mạng tryền thông, thông qua chuẩn RS-232, RS-485 ®Ĩ øng dơng hƯ thèng ®iỊu khiĨn c«ng nghiƯp còng nh− hƯ thèng ghi ®o tõ xa nãi chung Để thay đổi chơng trình hệ thống thay đổi thông số ghi đo, yêu cầu ®èi víi hƯ thèng, ta chØ viƯc nèi nã víi cổng LPT máy tính thực việc nạp lai chơng trình cho phù hợp dùng nạp chơng trình để nạp Hệ thống lại gọn nhẹ dùng dùng nguồn PIN nguồn hạ áp từ điện áp lới PIN đợc nạp nguồn hạ áp, điều tạo tính đa năng, tính động hệ thông Phức tạp thÕ ta cã thĨ coi hƯ thèng nh− mét m¸y đo đa Có thể đo nhiều thông số khác nhau, ta cã thĨ chän thang ®o cho hƯ thèng, đa lối để điều khiển thiết bị (từ thông số thu đợc ta điều khiển thiết bị cần thiêt) Khi máy đo không đơn đo mà cho phép điều khiển thiết bị khác tạo nên tính ứng dụng cao Máy đo sản phẩm có tính ứng dụng thiết thực có chỗ đứng thị trờng cân nhắc tốt việc tính toán hiệu kinh tế Kết luận Sau trình học tập nghiên cứu dới giúp đỡ bảo tận tình Thầy Ngô Diên Tập, anh, chị bạn, em hoàn thành đợc khoá luận tốt nghiệp với đề tài: Xây dựng hệ thống đo áp suất, hiển thị kết tinh thể lỏng Với kết bớc đầu nh em hi vọng tiếp tục hoàn thiện nó, để tăng cờng tính độ xác cho hệ thống, để có đợc sản phẩm thiết thực với sống Phần phụ lục A Chơng trình phần mỊm hƯ thèng /********************************************* Compiler : CodeVision Hardware : AVR-Ctrl : Poti (10k) at AD-Channel Chip type : ATMEGA8535 Clock frequency : 8,000000 MHz Memory model : Small Internal SRAM size : 512 External SRAM size : Data Stack size : 128 *********************************************/ #include #include #include float nhan; #define DISPLAY // remove, if you have no display ! #ifdef DISPLAY // Alphanumeric LCD Module functions #asm equ lcd_port=0x15 #endasm #include #endif // this code is generated by the compiler -#define FIRST_ADC_INPUT #define LAST_ADC_INPUT unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1]; #define ADC_VREF_TYPE 0x00 // ADC interrupt service routine // with auto input scanning #pragma savereginterrupt [ADC_INT] void adc_isr(void) { #asm push r26 push r27 push r30 push r31 in r30,sreg push r30 #endasm register static unsigned char input_index=0; // Read the ADC conversion result adc_data[input_index]=ADCW; // Select next ADC input if (++input_index>(LAST_ADC_INPUT-FIRST_ADC_INPUT)) input_index=0; ADMUX=input_index+FIRST_ADC_INPUT|ADC_VREF_TYPE; // Start the next ADC conversion ADCSRA.6=1; //ADCSRA #asm pop r30 out sreg,r30 pop r31 pop r30 pop r27 pop r26 #endasm } #pragma savereg+ // - end of generated functions -// Declare your global variables here void main(void) { // Declare your local variables here char text[16]; delay_ms(100); // gives ISP a chance to reset the AVR (bug in AVR) // Input/Output Ports initialization // Port A PORTA=0x00; DDRA=0x00; // Port B PORTB=0x00; DDRB=0xFF; // LEDs // Port C PORTC=0x00; DDRC=0x00; // Port D PORTD=0x00; DDRD=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Output Compare // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Output Compare // OC1A output: Discon // OC1B output: Discon // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Output Compare // OC2 output: Disconnected TCCR2=0x00; ASSR=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off TIMSK=0x00; //TIMSK MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; // ADC initialization // ADC Clock frequency: 62,500 kHz ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE; ADCSRA=0xCF; // LCD module initialization #ifdef DISPLAY lcd_init(16); lcd_putsf(" PRESSURE:(atm)"); #endif // Global enable interrupts #asm("sei") while (1) { //nhan=adc_data[0]/128; // Place your code here #ifdef DISPLAY sprintf(text, "%i %i(atm)",adc_data[0],adc_data[0]*200/1024); lcd_gotoxy(0,1); lcd_puts(text); #endif //PORTB = 0x01