tháng 10 2014

10 4.104 8051 9 Acquy adc pic All datasheet ALTIUM Altium Designer AM-FM Arduino ARM ARM là gì Ấn Tượng Bản tin công nghệ Bản tin Thiết Bị Số Barobo bất động sản biến Binary Bit board lpc2378 Bộ chuyển đổi ADC Bộ Đếm Bộ điều khiển cửa cuốn Bộ Định Thời Buy Khóa Số Điện Tử Buy Mạch đếm sản phẩm Buy Mạch giao thông Buy Mạch nạp Buy Matrix Byte C cho AVR các hàm vào ra các loại lõi arm các mạch DAC cơ bản các ngắt trong pic Cách đọc điện trở Cách Đọc Giá Trị Điện Trở Cách đọc giá trị tụ điện Cách hàn linh kiện dán cách làm mạch khóa số cách tạo linh kiện dán cad/cam Cài Đặt cài đặt proteus 8 cảm biến Cấu Kiện Logic Khả Trình cấu tạo cấu trúc arm cấu trúc lệnh CCS Chân chân Transistor Chip Khả Trình chuyển đổi Chuyển đổi số tương tự Chuyển Đổi Tương Tự/Số - ADC Chuyển động số chương trình City Clip Điện Tử Code 8051 - ASM Code 8051 - C Code 8051-C code ASM code ASM mẫu 8086 Code AVR - C code C Code Lập Trình Code led sao băng code maupic code mẫu 8051 Code Mẫu 8086 Code Mẫu cho ARM - LPC1343 code mẫu pic Code PIC - C codemaupic Counter Cổng Vào Ra Cơ Bản Cuộn Cảm Cửa cuốn DA DAC Debug Decimal Delay8051 Dev-C++ Diode DIY Dò đường Do It Yourself doanh nghiệp Download DTMF Mobile đảo chiều động cơ Điện Trở Điện Tử Điện Tử Cơ Bản điều chế độ rộng xung điều chế xung PWM điều khiển bằng điện thoại Điều khiển cửa cuốn Điều khiển cửa cuốn bằng điện thoại điều khiển động cơ đo điện áp đo nhiệt độ đo nhiệt độ hiển thị lên lcd trên 8051 Đo Nhiệt Độ LM35 + LCD Đo Nhiệt Độ LM35 + Led 7 thanh đọc màu điện trở đồ chơi động cơ chân không Động cơ nhiên liệu Động cơ robo đồng hồ thời gian thực Ebook Đại Học ebook điện tử Ebook đồ án Ebook Tin Học Encoder Encoder là gì Full Giải Thuật Giải thuật PID Giáo Dục giao tiếp i2c pic 16f877a giao tiếp i2c pic16f877a với ic ds1307 giao tiếp máy tính qua rs232 Giao Tiếp Máy Tính VB6 giao tiếp rs232 giao tiếp spi giữa 2 pic giao tiếp spi trong pic Giáo Trình Điện Tử Giới thiệu 8051 Giới thiệu cơ bản GPIO Graphic Design hàm Hàn linh kiện dán Hexadecimal Hệ Hexa Hệ Nhị Phân Hệ Thập Lục Phân Hệ Thập Phân hiển thị lên lcd 16x2 Hoạt Động Học Học 8051 qua các ví dụ đơn giản Học ALtium Designer học AVR Học Corel Draw X3 Học Eagle HỌC LẬP TRÌNH 16F877A Học Lập Trình 8051 Học Lập Trình C Học Orcad Học Protues hoc-lam-robot-do-duong-qua-video Hồng ngoại hướng dẫn hướng dẫn Altium Designer hướng dẫn đo đồng hồ VOM hướng dẫn keil - C lập trình 8051 hướng dẫn làm led sao băng hướng dẫn làm led trái tim hướng dẫn lập trình ARM Hướng Dẫn Lập Trình ARM - LPC1343 hướng dẫn lập trình ARM-LPC2378 hướng dẫn lập trình CCS hướng dẫn lập trình PIC Hướng Dẫn Led Trái Tim hướng dẫn module sim548c hướng dẫn sử dụng keil hướng dẫn sử dụng proteus 8 Hyper Terminal hercules 3.2.4 I/O IC 555 IC 7447 IC 74HC151 IC 74HC154 IC 74HC245 IC 74HC595 IC 74LS138 IC DS1307 IC đồng hồ thời gian thực IC LM324 IC LM342 IC LM7805 IC số IC số opamp LM324 IC Thông Dụng IC555 Interrupt Keil 4 Full keil arm Keil C Keil uVision3 kế toán kiểm toán khái niệm Khái Niệm Cơ Bản Kho Vật Liệu khóa điện tử khóa số dùng 8051 khóa số dùng 89s52 Khóa Số Điện Tử khuếch đại kiểm tra Kinh doanh maketing kinh tế quản lí Kỹ Thuật Kỹ Thuật Vi Xử Lý làm mạch điện lý thú Làm quen AVR Lap Trinh Dieu Khien Robot Lập Trình lập trình 8051 Lập Trình AVR Lập Trình C lập trình c++ Lập Trình Led Quảng Cáo Lập Trình Nhúng Lập trình pic Lập trình Robot Lập Trình Vi Điều Khiển Lập Trình Với AVR Studio LCD 16x2 Lcd16x2 Led Clock Led Quay led sao băng led trai tim Led Trái Tim Lịch sử ra đời Linh Kiện Cơ Bản linh kiện điện tử Loa LPC 2378 LSB lý thú Mã AVR - C Mạch 7seg Mạch Amply.Mạch Loa Mạch Autorobo Mạch bảo vệ Mạch Cảm Biến mạch cảm ứng sờ tay Mạch Cầu H Mạch cube Mạch Đếm Sản Phẩm Mạch điện cơ bản Mạch điện hay Mạch Điện Ứng Dụng Mạch Điều khiển động cơ Mạch Động Cơ Mạch đồng hồ Mạch đồng hồ 4 led Mạch giao thông Mạch IC số Mạch in mạch khóa số mạch khuếch đại thuật toán mạch led chúc mừng năm mới mạch led đẹp Mạch Led đơn Mạch Led Quảng Cáo mach led trai tim mạch led trái tim Mạch Led Vumeter mạch lý thú Mạch Ma trận Phím Mạch Matrix Mạch nạp Mạch nguồn Mạch Nút Bấm mạch sóng rf mạch tăng áp Mạch thu phát Mạch tổ hợp MSI Mạch trái tim Mạch Vi điều khiển Microbicho module module GSM/GPS Module Sim548 Module Sim548 giao tiếp với vi điều khiển PIC Module Sim548C Mosfet Motor Mô Phỏng Phần Cứng Mô Tả Phần Cứng MSB mua led sao băng News Ngắt Ngắt Trong LPC23xx ngân hàng Ngôn Ngữ Ngôn Ngữ C Ngôn Ngữ Tự Học Lập Trình C Ngôn Ngữ VHDL Nguyên Lý nguyên lý ic 555 Nguyên Tắc nháy led Nhập môn C Nhỏ Gọn Nibble opamp People Phần Mềm phần mềm altium Designer Phần mềm điện tử Phần Mềm Điện Tử Phần Mềm Điện Tử Hay Phần Mềm Hay Phần Mềm Led Quảng Cáo phần mềm proteus 8 Phần mềm vi tính Phần Mền Phương pháp hàn linh kiện dán PIC pic16f877a Print Design Proteus Proteus 7.8 SP2 FULL PWM quà tặng bạn gái quà tặng độc đáo quản trị doanh nghiệp quản trị kinh doanh quét led 7 đoạn Relay robocon Robot ROBOT DÒ ĐƯỜNG rút gọn mạch logic tổ hợp Sach Dien Tu Sản Phẩm Thú Vị Sản Phẩm Thương Mại Sáng tạo Short Smart Home SMD sơ đồ nguyên lý spi Sports Sử Dụng Sử Dụng Đồng Hồ sử dụng đồng hồ VOM sử dụng ngắt trong pic sự khác nhau Sức mạnh số Tải tài chính tài chính doanh nghiệp tài chính ngân hàng Tài Khoản Chia Sẻ Tài Liệu Tài Liệu 8051 tài liệu avr Tài liệu Điện Tử Tài Liệu Pic Tài liệu robocon tài liệu về ngân hàng Tài Liệu Vi Điều Khiển tailieuvn Tạo cổng Com ảo Tạo cổng nối tiếp ảo tạo dự án trong keil arm Tạo Project trong Vi Xử Lý ARM tạo thư viện altium designer tạo xung vuông Tạp chí Tạp Chí Hay tăng áp Tập lệnh AT Team Support TEAMPLATE PROTEUS Test thị trường tài chính Thiết Bị Thú Vị Thiết kế robot Thiết lập Fuse Bits Thiết Lập Pin Thuật Toán Thuật Toán Điều Khiển PID Thuật Toán Quine MCCluskey Thư viện Protues Thực Hành Thyristor Timer Timer/Counter Tin Học Chia Sẻ Tổ Chức Bộ Nhớ tổng quan về proteus 8 Transistor Tranzito Tranzitor Trao đổi học tập Travel Trình Biên Dịch Trình Dịch Trong Suốt Truyền Thông Nối Tiếp Không Đồng Bộ- UART truyền thông nối tiếp RS232 Tụ điện TUT - 8051 - ASM TUT - 8051 - KeilC tự hành Tự Học C Tự Học Lập Trình C Tý hon UART Update USB Ứng Dụng Led Quảng Cáo ứng dụng mạch khuếch đại thuật toán vẽ mạch in vẽ mạch nguyên lý VHDL Vi Điều Khiển Vi điều khiển - Ứng dụng vi điều khiển PIC Vi mạch số Vi Xử Lý Vi Xử Lý 8051 Vi Xử Lý 8086 Vi Xử Lý ARM Vi Xử Lý PIC Video Video Mach Điện Virtual Serial Port Driver VOM vxl Web Design xác định góc quay động cơ xử lý chuỗi

Dạo này nghe tin lắm trộm đột nhập quá, chip lại ở 1 mình cũng sợ sợ ^^" nên tính làm mạch chống trộm báo động đột nhập cho yên tâm chút..Phần mạch thu phát hồng ngoại chip test cũng tạm ổn, đợi khi nào làm được mạch sẽ tung tên cho các bạn mổ xẻ,..rảnh chip lập trình phần vi điều khiển giao tiếp cảm biến hồng ngoại, biết đầu có lắm trộm cùng đột nhập qua nhiều cửa sổ thì vỡ mặt ^^" Ý tưởng chip là chỗ Switch ấy, là chỗ mắc tín hiệu hồng ngoại vào, còn chỗ led báo sau này dùng còi báo động, LCD dùng hiển thị vị trí trộm ghé thăm....chip chưa có thêm ý tưởng gì nữa, có gì sai các bạn góp ý nhé...để sau này chip xong mạch sẽ có thêm thứ để chơi.



Code C:
#include <REGX51.H>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include <string.h>
// Dinh nghia chan Dieu Khien
#define K1 P1_0
#define K2 P1_1
#define K3 P1_2
#define K4 P1_3
#define K5 P1_4
// Dinh nghia chan LCD
#define RS P2_0
#define RW P2_1
#define EN P2_2
#define LCDdata P0
#define BF P0_7 
// Dinh nghia chan Led
#define LED1 P2_3
#define LED2 P2_4
#define LED3 P2_5
#define LED4 P2_6
#define LED5 P2_7
// Khai bao chuoi hien thi
unsigned char code string1[] = "www.echipkool.com";
unsigned char code string2[] = "Simple Is The Best";
unsigned char i,j,k;
/*********HAM DELAY***********/
void delay(unsigned char ms)
{
for(i =0;i<ms;i++)
 {for(j=0;j<125;j++){;}
 }
}

/*************HAM CHO***************/
void wait(void)
{
RS=0;//thanh ghi lenh
RW=1;//doc du lieu tu lcd
LCDdata=0xff;//gia tri 11111111 // khoi dong ngo vao
while(BF) //kiem tra co ban
{
EN =0;//dua xung thap en cao de chot
EN =1;//dua xung len cao
}
}
////////////////thiet lap Dieu khien LCD//////////////
void LCDcontrol(unsigned char x)
{
RS = 0;//chon thanh ghi lenh
RW =0;//ghi du lieu len lcd
LCDdata =x;
EN=1; //dua xung cao xuong thap de mo
EN=0;
wait();//doi LCD san sang
}
//////////////////Khoi tao LCD////////////
void LCDinit(void)
{
LCDcontrol(0x38);//2 dong va ma tran 5x7
LCDcontrol(0x0e);//bat man hinh,bat con tro
LCDcontrol(0x01);//xoa man hinh
}
///////////////Thiet lap du lieu co LCD/////////
void LCDwrite(unsigned char c)
{
RS=1;//Ghi du lieu
RW=0;//ghi du lieu len LCD
LCDdata=c;
EN=1;
EN=0;
wait();
}
///////////////////
void LCDwrites(unsigned char*s)
{
unsigned char data lens,count;
lens=strlen(s);
for(count=0;count<lens;count++)
{
LCDwrite(*(s+count));
}
}
//////////////HAM HIEN THI CHUOI KY TU//////////////
 void SendString2LCD(unsigned char code *p)
{
unsigned char i=0;
while(p[i]!=0)
{
LCDwrite(p[i]);
i++;
delay(200);
}
}
/////////////////HAM HIEN THI DONG CHU///////////////////
void DisplayText(void)
{
// Dich con tro den vi tri thu 1, dong thu nhat
LCDcontrol(0x80);
SendString2LCD(string1);
// Dich con tro den dau dong thu hai
LCDcontrol(0xC0);
SendString2LCD(string2);
}
/////////////// XOA LCD///////////////////
void LCDclear(void)
{
LCDcontrol(0x01);
wait();
}
////////////// HIEN THI 1 SO LEN LCD < 100
void putnum(unsigned char val)
 {
if(val<10){
LCDwrite(val+48);
}else if(val<100){
LCDwrite(val/10+48);
LCDwrite(val%10+48);
}
 }
 //////////////////HIEN THI SO LEN LCD > 100
 void LCD_putnum(int num)
 {
 unsigned char nghin,tram,chuc,donv;
 nghin=num/1000;
 tram=(num%1000)/100;
 chuc=((num%1000)%100)/10;
 donv=((num%1000)%100)%10;
 LCDwrite(nghin+48);
 LCDwrite(tram+48);
 LCDwrite(chuc+48);
 LCDwrite(donv+48);
 }
//////////////////HAM PHIM BAM DIEU KHIEN/////////////////////
void dieukhien_hn(void)
{
if(K1==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom  ");
LCD_putnum(1);// vi tri co trom
delay(100);
LED1=1;
}
else{LED1=0;}// Neu khong co trom thi led bao dong tat
/*LCDclear();
LCDcontrol(0x0f);//nhap nhay con tro
DisplayText();//viet chuoi ky tu  */

if(K2==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom  ");
LCD_putnum(2);// vi tri co trom
delay(100);
LED2=1;
}
else{LED2=0;} // Neu khong cos trom thi led bao dong tat
if(K3==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom  ");
LCD_putnum(3);// vi tri co trom
delay(100);
LED3=1;
}
else{LED3=0;} // Neu khong cos trom thi led bao dong tat
if(K4==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom  ");
LCD_putnum(4);// vi tri co trom
delay(100);
LED4=1;
}
else{LED4=0;} // Neu khong cos trom thi led bao dong tat
if(K5==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom  ");
LCD_putnum(5);// vi tri co trom
delay(100);
LED5=1;
}
else{LED5=0;} // Neu khong cos trom thi led bao dong tat
}
void main(void)
{
LCDinit();//Khoi tao LCD
LCDcontrol(0x82); // dua con tro den vi tri thu 4 dong 1
LCDwrite('C');
LCDwrite('H');
LCDwrite('I');
LCDwrite('P'); 
LCDwrite(' ');
LCDwrite('K');
LCDwrite('O');
LCDwrite('O');
LCDwrite('L');
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites("MACH CHONG TROM");
/*LCDclear();
LCDcontrol(0x0f);//nhap nhay con tro
DisplayText();//viet chuoi ky tu   */
LED1=LED2=LED3=LED4=LED5=0; // Khoi tao gia tri Tat Led Bao dong 
while(1)//vong lap vo han
{
dieukhien_hn();
}
}
Nguồn: Echipkool - Chia sẻ kiến thức - Kết nối đam mê điện tử

Để làm việc với truyền thông thì phải biết khung truyền, tốc độ truyền...
Hướng Dẫn - Giao Tiếp Máy Tính + Viết Giao Diện VB6
Hình ảnh chỉ mang tính chất minh họa
+ khung truyền (frame) Dữ liệu đi vào ở đầu thu của đường dữ liệu trong truyền dữ liệu nối tiếp là một dãy các số 0 và 1, và rất khó để hiểu được ý nghĩa của các dữ liệu ấy nếu bên phát và bên thu không cùng thống nhất về một tập các luật, một thủ tục, về cách dữ liệu được đóng gói, bao nhiêu bit tạo nên một ký tự và khi nào dữ liệu bắt đầu và kết thúc. Bên cạnh tốc độ baud, khung truyền là một yếu tố quan trọng tạo nên sự thành công khi truyền và nhận.
Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền.
+ start bit: là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Start là bit bắt buộc phải có trong khung truyền, và nó là một bit thấp (0).
+ Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận. Data không nhất thiết phải là gói 8 bit, với 8051 ta có thể quy định số lượng bit của data là 08 hoặc 09 bit. Trong truyền thông nối tiếp UART, bit có trọng số nhỏ nhất của data sẽ được truyền trước và cuối cùng là bit có trọng số lớn nhất.
+ Parity là bit dùng để kiểm tra dữ liệu truyền có đúng không (một cách tương đối). Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn nghĩa là số lượng số “1” trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại tổng số lượng các số “1” trong parity lẻ luôn là số lẻ.
+ Stop bits là 01 hoặc nhiều bit báo cho thiết bị nhận rằng một gói dữ liệu đã được gởi xong. Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bit bắt buộc xuất hiện trong khung truyền, trong 8051 có thể là 01 hoặc 02 bit, và chúng là các bit cao (1).

Tiếp theo là lập trình phần mềm.
- thanh ghi đệm dữ liệu SBUF là thanh ghi 8 bit được dùng riêng cho truyền thông nối tiếp trong 8051. Đối với một byte dữ liệu muốn truyền qua đường TxD thì nó phải được đặt trong thanh ghi SBUF. Tương tự, SBUF cũng giữ một byte dữ liệu khi nó được nhận từ đường RxD của 8051
Khi một byte được ghi vào thanh ghi SBUF nó sẽ được đóng khung với các bit Start, Stop và được truyền nối tiếp quan chân TxD.
Khi các bit được nhận nối tiếp từ RxD thì 8051 mở khung đó để loại trừ các bit Start, Stop để lấy ra một byte từ dữ liệu nhận được và đặt byte đó vào thanh ghi SBUF.

+ thanh ghi SCON là thanh ghi là thanh ghi 8 bit được dùng để lập trình việc đóng khung dữ liệu, xác định các chế độ làm việc của truyền thông nối tiếp. SCON là thanh ghi có thể đánh địa chỉ theo bit.

Hướng Dẫn - Giao Tiếp Máy Tính + Viết Giao Diện VB6
Bằng các set 2 bit SM0 và SM1 của thanh ghi scon cho có thể cài đặt các chế độ truyền thông.
Hướng Dẫn - Giao Tiếp Máy Tính + Viết Giao Diện VB6

Còn vấn đề quan trọng là tính tốc độ truyền và nhận là như thế nào. Nếu như tính tốc độ không khớp giữa truyền và nhận thì chắc chắn không nhận đúng dữ liệu.
Đối với 8051 thì tốc độ truyền được tính dựa vào timer 1. Phương pháp phổ biến nhất là cài đặt Timer1 ở chế độ tự động nạp lại 8-bit (chế độ 2) và thiết lập một giá trị nạp lại (cho TH1) để tạo ra một tốc độ truyền.
- công thức tính tốc độ truyền của 8051 là.
TH1 = 256 - ((Crystal / (12*32)) / Baud) = 256 - ((Crystal / 384) / Baud) 
ví dụ : tính tốc độ 9600 baub với thạch anh 11.0592 thì TH1 được tính như sau:
TH1=256 - ((11059200/384) /9600)= 253
các bước lập trình truyền thông usart là

1. Nạp thanh ghi TMOD giá trị 20H: báo rằng sử dụng Timer1 ở chế độ 2 để thiết lập chế độ baud.
2. Nạp thanh ghi TH1 các giá trị phù hợp để thiết lập chế độ baud truyền dữ liệu nối tiếp.
3. Nạp thanh ghi SCON giá trị 50H báo chế độ nối tiếp 1 để đóng khung 8 bit dữ liệu, 1 bit Start và 1 bit Stop.
4. Bật TR1=1 để khởi động Timer1.
5. Xoá bit cờ truyền dữ liệu: TI=0.
6. Byte ký tự cần phải truyền được ghi vào SBUF.
7. Bit cờ truyền TI được kiểm tra bằng một vòng lặp để đợi đến lúc dữ liệu được truyền xong (cờ TI=1).
8. Để truyền ký tự tiếp theo quay trở về bước 5.

Bây giờ chúng ta vẽ 1 mạch mô phỏng trên proteus và download 2 phần mềm vspe dùng để tạo com ảo và hercules tạm thời demo thay cho giao diện máy tính. 2 phần mềm này bạn có thể download tại file đính kèm
Hướng Dẫn - Giao Tiếp Máy Tính + Viết Giao Diện VB6

( Phần mềm VSPE)

Mình viết 1 chương trinh nhỏ truyền ký tự A lên máy tính như sau:

#include<at89x51.h>                      //khai báo thu vi?n cho 89c51

void delay(int x)
{
int y;
for(y=0;y<x;y++);
}
void send(unsigned char a);          //khai báo nguyên m?u hàm g?i 1 ký t?
void main(void)                                                            //Chuong trình chính
{
            TMOD=0x20;                      //chon timer1 che do 2
            TH1=0xFD;                          //toc do 9600 baud
            SCON=0x50;                                    //0101 0000: che do 1
            TR1=1;                                  //Khoi dong Timer1


            while(1)                                //Vvong lap vo han
            {
              send('A');
delay(1000);                      
            }
}
void send(unsigned char a)                        // ham gui 1 ky tu
{
            SBUF=a;                                //ghi byte a vao SBUF
            while(TI==0){}                    //doi truyen xong du lieu co ti bat len 1
            TI=0;                                      //xoa
}

để truyền chuỗi ký tự lên máy tính thì làm như sau:

#include<at89x51.h>                      //khai báo thu vi?n cho 89c51
#include <string.h>
void delay(int x)
{
int y;
for(y=0;y<x;y++);
}
void send(unsigned char a);          //khai báo nguyên m?u hàm g?i 1 ký t?
void sendchuoi(char *a);

void main(void)                                                            //Chuong trình chính
{
            TMOD=0x20;                      //chon timer1 che do 2
            TH1=0xFD;                          //toc do 9600 baud
            SCON=0x50;                                    //0101 0000: che do 1
            TR1=1;                                  //Khoi dong Timer1


            while(1)                                //Vvong lap vo han
            {
              sendchuoi("codientu.org");
                            send(10);
delay(1000);                      
            }
}
void send(unsigned char a)                        // ham gui 1 ky tu
{
            SBUF=a;                                //ghi byte a vao SBUF
            while(TI==0){}                    //doi truyen xong du lieu co ti bat len 1
            TI=0;                                      //xoa
}
void sendchuoi(char *a)                //Ð?nh nghia hàm g?i 1 chu?i ký t?
{
            int i,n;                                    //Khai báo bi?n c?c b? s? nguyên: i,n
            n=strlen(a);                          //Tính d? dài c?a chu?i *a, luu vào bi?n n
            for(i=0;i<n;i++)                  //Vòng l?p d? g?i l?n lu?t t?ng ký t? lên,
            {                                              //cho d?n khi h?t chu?i *a (ký t? th? n-1).
                        send(a[i]);                //G?i hàm g?i 1 ký t?.
            }      
}

ở đây mình chọn thạch anh 11.0592 để set thạch anh vào project chọn options for taget1 chọn tab taget và điền 11.0592 vào ô xtal


tiếp theo tiến hành cài đặt phần mềm vspe lên thiết lập cổng com ảo. 1 cho con chip 89 trên proteus 1 cho herculer trên máy tính. Tiến hành mô phỏng ta được kết quả là


Nhưng với những yêu cầu như truyền vận tốc hay là nhiệt độ hoặc độ ẩm thì có nên truyền ký tự hay không. Mà có thể thay việc truyền 1 ký tự bằng truyền 1 số nguyên (có thể là nhiệt độ, độ ẩm hoặc vận tốc...) lên máy tính.
Ví dụ sau mình truyền các số từ 1 đến 30 lên máy tính.
#include<at89x51.h>                      //khai báo thu vi?n cho 89c51 sử dụng ở thạch anh 11.0592

unsigned char i;
void delay(int x)
{
int y;
for(y=0;y<x;y++);
}
void send(unsigned char a);          //khai báo nguyên m?u hàm g?i 1 ký t?
void main(void)                                                            //Chuong trình chính
{
            TMOD=0x20;                      //chon timer1 che do 2
            TH1=0xFD;                          //toc do 9600 baud
            SCON=0x50;                                    //0101 0000: che do 1
            TR1=1;                                  //Khoi dong Timer1


            while(1)                                //Vvong lap vo han
            {for(i=0;i<30;i++)
                            {
              send(i);
              delay(1000);                          
            }
            }
}
void send(unsigned char a)                        // ham gui 1 ky tu
{
            SBUF=a;                                //ghi byte a vao SBUF
            while(TI==0){}                    //doi truyen xong du lieu co ti bat len 1
            TI=0;                                      //xoa
}




Để nhận về quan tâm đến cờ RI.Khi 8051 nhận được dữ liệu nối tiếp qua RXD và nó tách các bit start và stop để lấy 8 bit dữ liệu đặt vào SBUF, sau khi hoàn tất nó bật cờ RI để báo đã nhận đủ và cần phải lấy nó ra để chuẩn bị nhận byte tiếp.
- khác với khi truyền khi nhận thì nên sử dụng ngắt. Mục đích sử dụng ngắt vì 8051 không biết khi nào máy tính truyền xuống. Vậy nên khi không có dữ liệu truyền xuống vi điều khiển thì vi điều khiển còn thực hiện những công việc khác nữa, không phải cứ nằm chờ máy tính truyền xuống.
- Nhìn vào bảng vecto ngắt
vecto ngat
ta thấy ngắt truyền thông có số thứ tự là 4.
- Còn để kích hoạt ngắt dựa vào thanh ghi điều khiển ngắt. IE
hinh2

Ngắt truyền thông là ES để kích hoạt ngắt truyền thông cần cho phép ngắt toàn cục và ngắt truyền thông hoạt động (EA=1; ES=1;)
Rồi giờ bắt đầu thực hành nhận từ dữ liệu qua cổng usart nhé.
vẽ 1 sơ đồ mạch gồm có cổng com 89c51 vài con led và tiến hành mô phỏng với code
Mã:
#include

unsigned char temp; // bien tam luu du lieu nhan ve
void send(unsigned char a)                        // ham gui 1 ky tu
{
            SBUF=a;                                //ghi byte a vao SBUF
            while(TI==0){}                    //doi truyen xong du lieu co ti bat len 1
            TI=0;                                      //xoa
}

void main(void)                                    //Chuong trình chính
{
            TMOD=0x20;    //timer1 che do 2
            TH1=0xFD;    // toc do 9600
            SCON=0x50;    //che do 1 cho phep nhan
            TR1=1;          //khoi dong Timer1
            IE=0x90;        //cho phép ngat truyen thong
    P1=0x00;
            while(1)      
            {  if(temp=='1'){P10=1;}                  
                      if(temp=='2'){P11=1;}
              if(temp=='3'){P12=1;}
              if(temp=='4'){P13=1;}                  
                      if(temp=='5'){P14=1;}
              if(temp=='6'){P15=1;}
              if(temp=='0'){P1=0x00;}
                  }
}
void nhandulieu(void) interrupt 4  // khai bao ngat truyen thong
{        
            if(RI==1)              // kiem tra xem co phai ngat nhan hay khong
            {
                temp=SBUF;      // lây du lieu luu vao bien temp
                RI=0;              //xóa co nhan chuyen bi cho nhan du lieu tiep theo
                }
         
                    send(temp);// gui nguoc lai may tinh                        
}



(code và file mô phỏng )

vậy là đến đây phần gửi và nhận của 8051 cơ bản là được rồi. Tiếp theo để thay cho cái phần mềm dùng để test herculer thì chúng ta viết 1 giao diện và có thể xuất ra 1 phần mềm và có thể chạy độc lập.Có rât nhiều phần mềm viết giao diện, mình vẫn quen sử dụng VB6.

sau khi cài đặt xong VB6 bật lên được giao diện như sau.



chọn standard exe rồi open được.




Ví dụ để điều khiển 6 led thì viết 1 giao diện như sau.




để tạo ra 6 nút điều khiển led1 led 2 led 3 led 4 led 5 led 6 mình sử dụng nút lệnh (command button) để tạo ra chữ giao tiếp máy tính thì mình dùng label (biểu tượng có chữ A).
Tiếp theo là phải lấy ra cái cổng com-control để giao tiếp qua cổng com. Vì com không phải là control cơ bản nên phải lôi nó ra trong thư viện.
Kích chuột phải vào thanh các control cơ bản rồi chọn Component

sau đó chọn tiếp.

nhấn apply ok sẽ thấy 1 cái biểu tượng hộp điện thoại xuất hiện.


giờ viết code cho nó thôi. Muốn viết cho đối tượng nào thì ta đúp chuột vào đối tượng đó.
Trước tiên là load form.
Mã:
Private Sub Form_Load()
MSComm1.CommPort = 2 ' chon cong com so 2
MSComm1.Settings = "9600,n,8,1" 'toc do 9600, 0 bit party,8bit data, 1 bit stop
MSComm1.PortOpen = True ' mo cong com
End Sub
sau đó đến 7 nút điều khiển led và nút exit
Mã:
Private Sub Command1_Click()
End ' lenh end de thoat
End Sub

Private Sub Command2_Click()
MSComm1.Output = "1" ' xuat ra cong com ky tu 1
End Sub

Private Sub Command3_Click()
MSComm1.Output = "2"
End Sub

Private Sub Command4_Click()
MSComm1.Output = "3"
End Sub

Private Sub Command5_Click()
MSComm1.Output = "4"
End Sub

Private Sub Command6_Click()
MSComm1.Output = "5"
End Sub

Private Sub Command7_Click()
MSComm1.Output = "6"
End Sub

Private Sub Command8_Click()
MSComm1.Output = "0"
End Sub
giờ bật phần mềm mô phỏng và code ở #6 và nhớ cài com ảo để xem kết quả nhé.



(toàn bộ code và file mô phỏng download ở file đính kèm)

Theo Codientu.org

Phiên bản mạch Trái Tim Final  - Món quà tình yêu nhỏ, được rất nhiều bạn đọc yêu thích và làm chạy, nay Chip sẽ cho ra mắt phiên bản mạch Trái Tim gắn I ♥ U lên sẽ làm cho trái tim thêm phần sinh động, hài hòa đẹp mắt hơn. Tuy sẽ loằng ngoằng hơn 1 chút nhưng với niềm yêu điện tử Chip tin rằng các bạn sẽ thích và tự mình làm 1 cái để tặng người yêu thương gia đình..^^
I. Nguyên liệu chuẩn bị.
So với mạch trái tim Final - Mạch Trái Tim I ♥ U này sẽ tốn linh kiện hơn chút xíu nhé..nên các bạn chú ý:
-IC 89C52 số lượng 1
- IC 74HC595 số lượng 4
- Đế IC 40 SL 1
- Đế IC 16 chân SL 4
- Dây BUS 8 SL 6
- Jumper đựcSL 4
- Trở 330 SL 60
- LM 7805 SL 
- Tụ 100uF/50V SL 2
- Tụ 10uF/50V SL 2
- Thạch anh 12Mhz SL 1
- Tụ 33pF SL 2
- Trở 10k SL 2
- Led đỏ đục quảng cáo SL 33 con
- Led xanh Dương QC SL 9
- Led xanh Lá QC SL 9
- Led Vàng QC SL 13




Hình ảnh 1 số linh kiện cho các bạn nhận biết:

IC 74hc 595 - 16 chân





Led  đục màu đỏ làm mạch trái tim 

Chip 89C52 nè
Nút bấm 4 chân chọn loại bé bên cạnh na.Chú ý cắm..ko cẩn thận ko chạy mạch và ko reset được mạch nhớ đo chân 2 chân ko kết nối,ai ko làm được PM chip
Chân led thì các bạn nhìn chân dài là dường ngắn là âm..chân dài bẻ nối vào nhau nối lên nguồn 5+ còn chân ngắn tách ra nối vào các chân jump trên mạch


IC LM 7805 nè chỗ ô vuông trên mạch cắm chân Input na
Tụ gốm 33pF bé lắm đó na
Tụ hóa 10uF
Thạch anh 12MHZ
Dien trở băng như này
Đây là bus cắm 8 chân các bạn cắt đôi ra nối với chân led còn phàn đầu cắm nối với jump


Đây là Jumper cắm
II. Sơ đồ nguyên lý mạch KIT chủ 89C52 và KIT mạch 74HC595

Nguyên lý CPU

Layout CPU
Nguyên lý KIT 74HC595
Layout KIT 74hc595

III. Hướng dẫn Ráp mạch.

Phần này rất quan trọng vì không đơn giản như mạch trái tim phiên bản Final .Mạch này đặc thù sẽ phải câu dây ở mạch KIT 74hc595 và Nối nhiều dây. Chính vì thế các bạn cần làm cẩn thận từng bước.
- Bước 1.Làm mạch KIT CPU trái tỉm: Bên dưới là sơ đồ lắp ráp mạch KIT trái tim bạn nào làm mạch trái tim rồi sẽ hiểu.


File mạch KIT CPUTẢI XUỐNG
Mạch sau khi Ráp Xong:( Khuyên các bạn nào chưa biết về nút bấm đừng lắp vì lắp vào mạch ko chạy)








- Bước 2: Làm mạch KIT 74HC595: Mạch này các bạn sẽ phải câu dây , tức là móc dây sắt qua lớp trên của mạch, những chỗ nào đánh dấu màu vàng là đường câu dây, phải câu hết dây và kiểm tra cham chậm thật cần thận cho mạch này.




File mạch KIT 74HC595: TẢI XUỐNG
Mạch Sau khi ráp xong Do còn mạch 595 cũ nên chip tận dụng:


 - Bước 3:  Kết nối mạch: Sau khi làm xong 2 mạch trên các bạn sẽ thực hiện bước kết nối mạch KIT 74HC595 bước 2 với Mạch led của mình như sau: bắt đầu từ A0 - A7 , B0 - B7 , C0 - C7, D0 - D7 nối chính xác và theo đúng thứ tự trên sơ đồ ( chú ý.mỗi chân led đều mắc tích cực âm và nối với 1 con điện trở Hay chính là chân dài led bẻ chung với nhau nối lên nguồn + của DC OUT 5V trên mạch KIT CPU còn các chân ngắn thì cắt bớt rồi nối thêm điện trở rồi nối lên mạch KIT 74HC 595)

+ Các chữ I ♥ U bên trong các bạn sẽ mắc theo thứ tự chân trên mạch KIT CPU ở bước 1 và chú ý mỗi con led cũng mắc chân dài với nhau mắc lên DC OUT 5V của KIT CPU và các chân ngắn cũng mắc thêm điện trở 330R sau đó mới được nối vào chân Vi Điều Khiển tức các chân KIT CPU bước 1)
Các bạn ráp mạch thêm điện trở 330R tại các chân ngắn Led như sau.




Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất
Nối bằng dây BUS 8
Mạch sau khi ráp xong nhìn dây thật đáng sợ.
Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất



Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất

Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất
Do trời mưa tối quá chip chụp không được sáng
Thông Báo: Ra mắt mạch In Thu gọn hạn chế lỗi mạch
Phiên bản mạch trước là sự kết hợp của 2 bản mạch: Mạch KIT CPU 89XXX với mạch KIT 74HC595 làm các bạn kết nối gặp nhiều phiền toái. Hôm nay chip cho ra mắt phiên bản mạch THU GỌN là sự kết hợp 2 mạch riêng thành 1 mạch tổng hợp sẽ rất tiện lợi, gọn dây, dễ lắp ráp, chỉ việc nối led là chạy...Kích thước 10x12cm

Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất
Mạch In KIT

Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất
Layout KIT các đoạn dây màu đỏ là dùng để câu dây, đặc biệt phải câu dây trước mới ráp linh kiện.

Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất
Lớp Hiển Thị Linh Kiện
IV: Nạp chương trình vào IC.

Nhiều bạn vẫn hay thắc mắc bước này. Ban đầu IC mua về là IC trắng ( giống như đĩa CD trắng mua về ghi chương trình, file...) thì các bạn nhớ mua IC 89C52 về , bạn nào dân điện tử có mạch nạp 8051 thì nạp chương trình bên dưới vào, bạn nào mà không phải dân điện tử thì sẽ mang ra quán quảng cáo bảo là "Chú nạp cho cháu file chương trình ( nhớ copy vào USB ) vào ic 89C52 này với" khi nạp chú ý xem chương trình nạp họ làm ..chạy xong sẽ xong..có khi họ nạp die chip của mình đấy..toàn chém 20k 1 em..Nếu là Chip nạp free cho..^^
Mạch nạp có hình dạng như sau:

Hướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết NhấtHướng dẫn Mạch Trái Tim I LOVE IU - Dùng 74HC595 Chi Tiết Nhất
File code Hex nạp Chip 89C52 phiên bản Lite TẢI XUỐNG ( Free)
V. Nối nguồn: Cắm nguồn nên dùng nguồn sạc điện thoại dòng ổn định ( mua sạc Nokia 20 - 25k ) là ổn. Sản phẩm sau khi hoàn thiện.....Chip quay bằng điện thoại với phòng tối quá...các bạn xem tạm...sản phẩm nhìn ngoài thật đẹp lắm

Author Name

{picture https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN0PUWA2genMqX3Sm26mBTX_30OJgDenoIi4K6BR-E1vl3nI7LALp0X759QZgzqrMcGBB7jEbdZnubJbp4n2ZZ22KT196CWCg9DLs3MfEivocdmkjZEPEn-A42hyphenhyphen9dmsca0VIDQr_LjqM/s512-Ic42/pham-van-ngoc-anh.jpg}

Tôi là Ngọc Anh. Tôi đến từ Nghệ An. Tôi tốt nghiệp một trường đại học tại Sài Gòn. Hiện tôi đang phát triển công ty riêng. Liên lạc với tôi qua:

{facebook https://www.facebook.com/phamvanngocanh}
{twitter https://twitter.com/nghiphong1993}
{google https://plus.google.com/+dientuchiase/posts}
{youtube https://www.youtube.com/channel/UCeJKhA_goBNFmDw6RKNtmYQ}

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.