Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý

KHÁI QUÁT VỀ VI ĐIỀU KHIỂN

- Vi điều khiển (Microcontroller_ thường được viết tắt là uC, MCU)

là một mạch tích hợp, bên trong được cấu tạo bởi các nhân xử lý, bộ nhớ

và có khả năng lập trình giao tiếp với thiết bị ngoại vi. Các bộ vi điều

khiển thường được sử dụng trong các sản phẩm, thiết bị điều khiển tự

động, các hệ thống điều khiển từ xa, và các hệ thống nhúng.

Các thành phần của mạch TNVXL:

- Module Microcontroller Unit: là đế gắn đưa ra nguồn có thể kết nối

các loại chip: 89Sxx, AVR, PIC

- J101: dùng liên kết mạch nạp cho Chip.

- J106: Chọn tín hiệu Reset Chip.

- Ở vị trí ATMEL 89: Thực hiện Reset chip Atmel 89Sxx.

- Ở vị trí AVR/PIC: Thực hiện Reset chip AVR/PIC.

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 1

Trang 1

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 2

Trang 2

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 3

Trang 3

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 4

Trang 4

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 5

Trang 5

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 6

Trang 6

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 7

Trang 7

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 8

Trang 8

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 9

Trang 9

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 137 trang baonam 15920
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý

Giáo trình Công nghệ kỹ thuật điện. Điện tử - Thí nghiệm vi xử lý
ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH 
TRƢỜNG CAO ĐẲNG GIAO THÔNG VẬN TẢI 
KHOA KỸ THUẬT ĐIỆN – ĐIỆN TỬ 
..o0o.. 
BÀI GIẢNG: 
THÍ NGHIỆM VI XỬ LÝ 
NGÀNH: CÔNG NGHỆ KỸ THUẬT ĐIỆN – ĐIỆN TỬ 
TRÌNH ĐỘ: CAO ĐẲNG 
 Giảng viên: NGUYỄN THỊ THU LAN 
TP.HỒ CHÍ MINH, THÁNG 9 NĂM 2016
LỜI MỞ ĐẦU 
Trong việc dạy và học giữa các môn lý thuyết và thực hành nhằm phát triển và 
nâng cao tay nghề cho sinh viên tạo nền tảng vững chắc cho sinh viên sau khi tốt 
nghiệp. Chính vì thế trải qua một thời gian đào tạo đúc kết kinh nghiệm dạy và học lý 
thuyết cơ sở cho môn học Vi Xử Lý quá trừu tượng thì môn học Thí Nghiệm Vi Xử 
Lý sẽ giúp các em nắm vững hơn về cấu trúc các phần cứng và lập trình trên các hợp 
ngữ Assembler hoặc ngôn ngữ C trong phòng thí nghiệm. 
Trong lập trình cho vi điều khiển, hợp ngữ thường được sử dụng khi cần viết 
những chương trình có kích thước nhỏ, hoặc những đoạn chương trình đòi hỏi tốc độ 
thực thi nhanh, có thể tính toán chính xác thời gian thực thi. 
Với sự phát triển của công nghệ vi mạch, ngày càng nhiều các họ vi điều khiển 
khác nhau ra đời, với dung lượng bộ nhớ lớn. Do đó, vấn đề tối ưu hóa kích thước 
chương trình trở nên không còn quá trong trọng. Thay vào đó, người lập trình đòi hỏi 
phải có khả năng học lập trình cho một vi điều khiển mới một cách nhanh chóng, có 
khả năng viết các chương trình phức tạp, và những mã nguồn cũ có thể dễ dàng sử 
dụng lại cho các họ vi điều khiển mới. 
Ngôn ngữ C, với các đặc điểm như là ngôn ngữ có cấu trúc, có khả năng tương 
tác phần cứng cao, mềm dẻo và có cộng động sử dụng rộng lớn, là ngôn ngữ thích 
hợp để lập trình cho các vi điều khiển. 
Đây cũng là mục tiêu chính trong chương trình đào tạo được biên soạn của 
tập thể giảng viên khoa Điện – Điện Tử “ Học phải đi đôi với thực tiễn ” chính điều 
này sẽ tạo nên tay nghề vững chắc cho sinh viên khi tham gia học tập tại trường. 
Để đáp ứng được nhu cầu và tính cấp thiết của người học thì việc xây dựng 
một giáo trình phù hợp với chuyên ngành là việc cấp bách hiện nay khi mà chương 
trình được chuyển đổi sang cơ quan quản lý Bộ Lao Động Thương Binh Và Xã Hội 
với tổng thời gian thực hành chuyên môn cao nhằm rèn luyện tay nghề và đúc kết 
kinh nghiệm thực tế cho các em trước khi ra trường. 
MỤC LỤC 
TUYÊN BỐ BẢN QUYỀN: .................................... Error! Bookmark not defined. 
LỜI MỞ ĐẦU ............................................................................................................ 0 
Bài thí nghiệm số 1: ................................................................................................... 2 
GIỚI THIỆU PHẦN MỀM MÔ PHỎNG PROTEUS .............................................. 2 
1.1. MỤC TIÊU ...................................................................................................... 2 
1.2. DỤNG VỤ, HỌC CỤ SỬ DỤNG ................................................................... 2 
1.3. NỘI DUNG ...................................................................................................... 2 
1.3.1 CƠ SỞ LÝ THUYẾT ...................................................................................... 2 
1.3.1.1. KHÁI QUÁT VỀ VI ĐIỀU KHIỂN .............................................................. 2 
1.3.1.2. GIỚI THIỆU BỘ KIT THÍ NGHIỆM VI XỬ LÝ .......................................... 3 
A. Các thành phần của mạch TNVXL: ..................................................................... 4 
B. Các chương trình sử dụng trong thí nghiệm: ...................................................... 13 
1.3.1.3. SƠ LƢỢC VỀ VI ĐIỀU KHIỂN 8 BIT, 16 BIT ......................................... 15 
A. Giới thiệu vi điều khiển 8 bit AT89S52 có đặc điểm như sau: .......................... 15 
B. Giới thiệu vi điều khiển 16 bit PIC 16F877A có đặc điểm chính như sau: ..... 17 
1.3.1.4. PHẦN MỀM MÔ PHỎNG ......................................................................... 22 
A. Phần mềm Proteus của hãng Labcenter Electronics hỗ trợ mô phỏng các mạch 
điện tử, đặc biệt là mô phỏng vi điều khiển. ............................................................ 22 
B. Hướng Dẫn Sử Dụng Chương Trình Keil C Mô Phỏng Vi Điều Khiển 8 BIT.. 30 
C. Hướng dẫn sử dụng phần mềm biên dịch PIC C COMPILER mô phỏng vi điều 
khiển 16 BIT cho PIC 16F877A .............................................................................. 41 
 Các bƣớc tạo một Project trong PIC C Compiler. .......................................... 42 
 Chƣơng trình nạp ( Pickit2 V2.61) .................................................................. 45 
 Nạp chƣơng trình vào PIC dùng PICkit 2 Programmer .................................. 45 
1.3.1.5. CHƢƠNG TRÌNH MẪU ............................................................................ 47 
1.3.2 TIỀN TRÌNH THÍ NGHIỆM ...................................................................... 48 
1.3.3 BÀI TẬP THÍ NGHIỆM ............................................................... ...  
 //********************* 
} 
} 
2. Bài tập 2: 
Vẽ sơ đồ phần cứng, tóm tắt bảng chức năng, thành lập lưu đồ, viết chương trình điều 
khiển hiển thị LED 7 đoạn lịch vạn niên lấy từ DS1307. 
a. Vẽ sơ đồ mạch hiển thị 
.. 
.. 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 109 
b. Lập lưu đồ chương trình 
.. 
.. 
c. Chương trình tham khảo 
/************************************************************* 
Chip type : PIC16F877A 
Program type : Application 
Clock frequency : 20 MHz 
Project : Realtime Clock 
Version : V1.0 
Date : 01/09/2020 
Author : NGUYEN THI THU LAN 
Gmail : nttlan@hcmct.edu.vn 
Mobile : 0908071828 
Company : Khoa KT Dien Dien Tu – Truong CD GiaoThong Van Tai 
Comments : Chuong trinh dong ho thoi gian thuc 
 Su dung RTC Ds1307 
 Hien thi Led 7 doan 
 Hien thi thoi gian, Gio, Phut 
 Hien thi ngay, thang, nam duong lich 
 Hien thi ngay, thang, nam am lich 
 Hien thi nhiet do su dung Ds1307 
************************************************************/ 
#include 
#include "ds1307.c" 
//#include 
//#include 
#include "PIC16F877A_registers.h" 
/******************* Khai bao bien toan cuc************************/ 
//int1 StEn=false; // 
unsigned char StSet=0; //bien tao nhap nhay vung cai dat // 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 110 
unsigned char StNumber=0;//bien cho phep cai dat 0-11 // 
unsigned char Number=0; //bien phuc vu quet led 0-22 // 
unsigned char Temp; //Nhuet do // 
unsigned char sec,min,hrs,day_d,month_d,year_d,date; //thoi gian duong lich // 
unsigned char day_a,month_a,year_a; //thoi gian am lich // 
unsigned char dsec=0; //bien phuc vu update time // 
//unsigned char 
CharCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 
/* Bang ma LED Anot chung */ 
unsigned char CharCode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
/* Bang ma LED CAtot chung */ 
unsigned char ADC_Convert(); //chuong trinh chuyen doi ADC 10bit chanel 0 // 
void VietNam_Calendar(unsigned char day_d,month_d,year_d);/*Chuyen doi am lich// 
 VietNam den nam 2030*/ 
void OutLed(unsigned char DATA);// Chuong trinh Xuat data ra PORTD // 
void Sys_init(); //Chuong trinh khoi tao chip // 
void Program_init(); // chuong trinh khoi tao // 
void Setup();//Chuong trinh cai dat thoi gian // 
void Led7segment(unsigned char day_d,month_d,year_d,day_a,month_a,year_a,date,// 
Temp,hrs,min,sec ); //chuong trinh quet LED dung ngat hoan toan tan so fV=25Hz// 
 // 
/*************************************************************/ 
/************************************************************* 
/////////////////Chuong trinh dinh thoi Timer0 1.8ms//////////////////////////// 
****************************************************************/ 
#int_RTCC 
void RTCC_isr(void) 
{ 
 Set_timer0(115); //tao tan so quet fV=25Hz 
 Number++; 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 111 
 //if(Number>22){Number=1;en=1;clk=0;clk=1;en=0;}//xoa khi Scan du 22led 
 if(Number>22){Number=1;en=0;clk=0;clk=1;en=1;}//xoa khi Scan du 22led 
 clk=0;clk=1; //tao xung clock 
 OutLed(0xFF); //xoa bong ma 
 Led7segment(day_d,month_d,year_d,day_a,month_a,year_a,date,Temp,hrs,min,sec); 
 } 
/************************************************************* 
/////////////////Chuong trinh dinh thoi Timer1 2ms////////////////////////////// 
*************************************************************/ 
#int_TIMER1 
void TIMER1_isr(void) 
{ 
 Set_timer1(0xBDB); 
 dsec++; 
 if(dsec>=10) { //sau 1s cap ngat time gom gio, phut,giay 
dsec=0; 
 ds1307_get_time(hrs,min,sec); 
 if((hrs==00)&&(min==00)&&(sec<=10))//10s ngay moi update time..... 
 { 
 ds1307_get_date(day_d,month_d,year_d,date); 
 VietNam_Calendar(day_d,month_d,year_d); 
 } 
 if(sec%10==0) Temp=ADC_convert(); //sau 10s update nhiet do 
 } 
} 
/************************************************************ 
/////////////////Chuong trinh quet LED7 dung timer khong dung delay///////////// 
**********************************************************/ 
void Led7segment( unsigned char day_d,month_d,year_d,day_a,month_a,year_a,date, 
Temp,hrs,min,sec ) 
{ 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 112 
 StSet++;if(StSet>=200) StSet=0; 
 Switch(Number) 
 { 
 case 1:{ 
 if(StNumber==1){if(StSet<=70) {OutLed(0);break;}} 
 if(day_d<10) OutLed(0); //tat so 0 
 else OutLed(CharCode[day_d/10]); 
 break; 
 }; 
 case 2:{ 
 if(StNumber==1){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[day_d%10]); 
 break; 
 }; 
 case 3:{ 
 if(StNumber==2){if(StSet<=70) {OutLed(0);break;}} 
 if(month_d<10) OutLed(0);//tat so 0 
 else OutLed(CharCode[month_d/10]); 
 break; 
 }; 
 case 4:{ 
 if(StNumber==2){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[month_d%10]); 
 break; 
 }; 
 case 5:{ 
 if(StNumber==3){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[year_d/10]); 
 break; 
 }; 
 case 6:{ 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 113 
 if(StNumber==3){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[year_d%10]); 
 break; 
 }; 
 case 7:{ 
 //if(StNumber==4){if(StSet<=200) {OutLed(0xff);break;}} 
 if(day_a<10) OutLed(0);//tat so 0 
 else OutLed(CharCode[day_a/10]); 
 break; 
 }; 
 case 8:{ 
 //if(StNumber==4){if(StSet<=200) {OutLed(0xff);break;}} 
 OutLed(CharCode[day_a%10]); 
 break; 
 }; 
 case 9:{ 
 //if(StNumber==5){if(StSet<=200) {OutLed(0xff);break;}} 
 if(month_a<10) OutLed(0);//tat so 0 
else OutLed(CharCode[month_a/10]); 
 break; 
 }; 
 case 10:{ 
 //if(StNumber==5){if(StSet<=200) {OutLed(0xff);break;}} 
 OutLed(CharCode[month_a%10]); 
 break; 
 }; 
 case 11:{ 
 //if(StNumber==6){if(StSet<=200) {OutLed(0xff);break;}} 
 OutLed(CharCode[year_a/10]); 
 break; 
 }; 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 114 
 case 12:{ 
 //if(StNumber==6){if(StSet<=200) {OutLed(0xff);break;}} 
 OutLed(CharCode[year_a%10]); 
 break; 
 }; 
 case 13:{ 
 if(StNumber==4){if(StSet<=70) {OutLed(0);break;}} 
 if(date==1) OutLed(0X39);//ngay CN hien thi chu C 
 else OutLed(0x78); //hien thi chu t 
 break; 
 }; 
 case 14:{ 
 if(StNumber==4){if(StSet<=70) {OutLed(0);break;}} 
 if(date==1) OutLed(0x37);//ngay CN hien thi chu n 
 else OutLed(CharCode[date%10]); 
 break; 
 }; 
 case 15:{ 
 //if(StNumber==8){if(StSet<=200) {OutLed(0xff);break;}} 
 if(Temp<10) OutLed(0);//tat so 0 
 else OutLed(CharCode[Temp/10]); 
 break; 
 }; 
 case 16:{ 
 //if(StNumber==8){if(StSet<=200) {OutLed(0xff);break;}} 
 OutLed(CharCode[Temp%10]); 
 break; 
 }; 
 case 17:{ 
 if(StNumber==5){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[hrs/10]); 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 115 
 break; 
 }; 
 case 18:{ 
 if(StNumber==5){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[hrs%10]); 
 break; 
 }; 
 case 19:{ 
 if(StNumber==6){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[min/10]); 
 break; 
 }; 
 case 20:{ 
 if(StNumber==6){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[min%10]); 
 break; 
 }; 
 case 21:{ 
 if(StNumber==7){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[sec/10]); 
 break; 
 }; 
 case 22:{ 
 if(StNumber==7){if(StSet<=70) {OutLed(0);break;}} 
 OutLed(CharCode[sec%10]); 
 }; 
 } 
} 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 116 
/************************************************************** 
/////////////////Chuong trinh chuyen doi ADC doc nhiet do tu LM35/////////////// 
**************************************************************/ 
unsigned char ADC_Convert() 
 { int16 Value; 
 Value=read_adc(); 
 Value=(FLOAT)((Value*500)/1023); 
 return((char)Value); //tra ve gia tri do C 
 } 
/*************************************************************** 
///////////////////////Chuong trinh am lich Viet Nam//////////////////////////// 
***************************************************************/ 
void VietNam_Calendar(unsigned char day_1,mon_1,year_1) 
{ 
 unsigned char luu,tam_1; 
 unsigned char da,db; 
 unsigned char lmon; 
 if(year_1<=30) //cho phep den nam 2030 
 { 
 da = ALdauthangDL[year_1-10][mon_1-1]; 
 db = DLdauthangAL[year_1-10][mon_1-1]; 
 luu= db-day_1; 
 if(luu<=0) 
 { 
 day_a = (day_1-db+1); 
 month_a = thangALdauthangAL[year_1-10][mon_1-1]; 
 } 
 else 
 { 
 if(luu>31){day_a = (day_1-db+1); 
 month_a = thangALdauthangDL[year_1-10][mon_1];} 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 117 
 else 
 { 
 day_a = (day_1+da-1); 
 month_a = thangALdauthangDL[year_1-10][mon_1-1]; 
 } 
 } 
 lmon = month_a; 
 tam_1=mon_1-lmon; 
 if(tam_1>100&&tam_1<255) 
 year_a = (year_1-1); 
 else year_a = year_1; 
 } 
} 
//!void VietNam_Calendar(unsigned char day,month,year) 
//!{ 
//! char da,db; 
//! if(year<=30) //cho phep den nam 2030 
//! { 
//! da = ALdauthangDL[year-10][month-1]; 
//! db = DLdauthangAL[year-10][month-1]; 
//! if(db <= day){ 
//! day_a = day-db+1; 
//! month_a = thangALdauthangAL[year-10][month-1]; 
//! } else { 
//! day_a = (day_d+da-1); 
//! month_a =thangALdauthangDL[year-10][month-1]; 
//! } 
//! if(month < day_a) 
//! year_a = year-1; 
//! else 
//! year_a = year; 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 118 
//! } 
//!} 
/************************************************************* 
///////////////////////Chuong trinh Xuat data ra PORTD////////////////////////// 
************************************************************/ 
void OutLed(unsigned char data) 
{ 
 PORTD = data; 
} 
char key(char data, char never) 
{ 
 //Cho phep tang ngay,thang,nam,thu 
 if((!Up)&&(StNumber<=4)){ 
 delay_ms(300); 
 data++; 
 if(data>never) data=1; 
 } 
 //Cho phep tang gio,phut,giay 
 if((!Up)&&(StNumber>4)){ 
 delay_ms(300); 
 data++; 
 if(data>never) data=0; 
 } 
 //Cho phep giam ngay,thang,nam,thu 
 if((!Down)&&(StNumber<=4)){ 
 delay_ms(300); 
 if(data>1) data--; 
 } 
 //Cho phep giam ngay,thang,nam,thu 
 if((!Down)&&(StNumber>4)){ 
 delay_ms(300); 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 119 
 (signed)data--; 
 if(data<0) data=never; 
 } 
 //thoat ra menu cai dat 
 if(!ESC){ 
 while(!ESC){;}; 
 StNumber=0; 
 break; 
 } 
 VietNam_Calendar(day_d,month_d,year_d); 
 return(data); 
} 
void Set_time() 
{ 
 switch(StNumber) 
 { 
 //restart_WDT(); //WDT 
 case 1:{ 
 day_d=key(day_d,31); 
 if((!Enter)) 
 { 
 while(!Enter){;}; 
 ds1307_set_date(day_d,month_d,year_d,date); 
 delay_ms(500); 
 StNumber++; 
 } 
 break; 
 }; 
 case 2:{ 
 month_d=key(month_d,12); 
 if((!Enter)) 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 120 
 { 
 while(!Enter){;}; 
 ds1307_set_date(day_d,month_d,year_d,date); 
 delay_ms(500); 
 StNumber++; 
 } 
 break; 
 }; 
 case 3:{ 
 year_d=key(year_d,30); 
 if((!Enter)) 
 { 
 while(!Enter){;}; 
 ds1307_set_date(day_d,month_d,year_d,date); 
 delay_ms(500); 
 StNumber++; 
 } 
 break; 
 }; 
 case 4:{ 
 date=key(date,7); 
 if((!Enter)) 
 { 
 while(!Enter){;}; 
 ds1307_set_date(day_d,month_d,year_d,date); 
 delay_ms(500); 
 StNumber++; 
 } 
 break; 
 }; 
 case 5:{ disable_interrupts(INT_TIMER1); 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 121 
 hrs=key(hrs,24); 
 if((!Enter)) 
 { 
 while(!Enter){;}; 
 ds1307_set_time(hrs,min,sec); 
 delay_ms(500); 
 StNumber++; 
 } 
 break; 
 }; 
 case 6:{ disable_interrupts(INT_TIMER1); 
 min=key(min,59); 
 if((!Enter)) 
 { 
 while(!Enter){;}; 
 ds1307_set_time(hrs,min,sec); 
 delay_ms(500); 
 StNumber++; 
 } 
 break; 
 }; 
 case 7:{ disable_interrupts(INT_TIMER1); 
 sec=key(sec,59); 
 if((!Enter)) 
 { 
 while(!Enter){;}; 
 ds1307_set_time(hrs,min,sec); 
 delay_ms(500); 
 StNumber=255; 
 } 
 break; 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 122 
 }; 
 case 255:{ 
 enable_interrupts(INT_TIMER1); 
 dsec=10; //update time 
 StNumber=0; 
 break; 
 } 
 } 
} 
void Setup() 
{ 
StNumber=1; 
while(StNumber!=0) 
{ 
 //restart_WDT(); //WDT 
 if(!Enter){ 
 while(!Enter){;} 
 if(StNumber<10)StNumber++; 
 } 
 if(!MenuDown){ 
 while(!MenuDown){;}; 
 if(StNumber>1)StNumber--; 
 } 
 if(!ESC){ 
 while(!ESC){;}; 
 StNumber=0; 
 break; 
 } 
 Set_time(); 
} 
 ds1307_get_date(day_d,month_d,year_d,date); 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 123 
 VietNam_Calendar(day_d,month_d,year_d); 
} 
/*********************************************************** 
/////////////////////////////Chuong trinh chinh //////////////////////////////// 
**************************************************************/ 
#zero_ram 
void main() 
{ 
 Sys_init(); 
 Program_init(); 
 while(TRUE) 
 { 
 restart_WDT(); //WDT 
 if(!Enter) {while(!Enter){;}; Setup();} 
 //if(StEn) {Setup();}; 
 } 
} 
void Sys_init() 
{ 
 TRISA=0X01; 
 TRISB=0X3F; 
 TRISD=0X00; 
 TRISE=0X00; 
 setup_adc_ports(AN0); //AN0 =ADC 10bit 
 setup_adc(ADC_CLOCK_DIV_32);// 
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64|RTCC_8_bit);//3.2 ms overflow 
 setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); //104 ms overflow flow 
 //setup_wdt(WDT_ON); 
 //setup_wdt(WDT_1152MS); 
 enable_interrupts(GLOBAL); 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 124 
} 
void Program_init() 
{ 
 ds1307_init(0,0,0); // initialize 1307 
 //ds1307_set_date_time(31,6,13,2,23,59,55); 
 //ds1307_set_date(1,1,13,3); 
 delay_ms(100); 
 ds1307_get_date(day_d,month_d,year_d,date); 
 ds1307_get_time(hrs,min,sec); 
 VietNam_Calendar(day_d,month_d,year_d); 
 Temp=ADC_convert(); 
 delay_ms(200); 
 enable_interrupts(INT_RTCC); 
 enable_interrupts(INT_TIMER1); 
 enable_interrupts(GLOBAL); 
} 
BÀI 7: LẬP TRÌNH ĐIỀU KHIỂN HIỂN THỊ ĐỒNG HỒ SỐ 
Trang 125 
TÀI LIỆU THAM KHẢO 
[1] Khoa Điện – Điện Tử – Vi Xử Lý – Trường Cao Đẳng Giao Thông Vận Tải 
[2] Hoàng Đức Hải – Họ vi điều khiển 8051 - NXB Lao Động Xã Hội -2007 
[3] Phạm Thanh Liêm – Giáo trình Cấu trúc máy vi tính và vi xử lý - NXB GD – 
2006 
[4] Lê Hải Sâm – Giáo trình Cấu trúc máy vi tính và vi xử lý - NXB GD – 2006 
[5] Hệ vi điều khiển 8051-NXB Lao động & Xã Hội, 2001. (Bản dịch quyển “The 
8051 Microcontroller”, I.Scott Mackenzie, NXB Prentice Hall ( 2nd Ed.) 1995 
[6] Ngô Diên Tập, Vi điều khiển với lập trình C, NXB KH&KT, 2006. 
[7] Nguyễn Đình Phú, Vi Xử Lý 2, Trường ĐH SPKT TP.HCM - 2007 
[8] Phụ lục kỹ thuật vi xử lý (tham khảo cho hệ vi điều khiển 8051), Bộ môn Kỹ 
thuật điện tử – Đại học Bách khoa TP HCM. 
[9] Bài thí nghiệm vi xử lý (hệ vi điều khiển 8051) , Bộ môn Kỹ thuật điện tử – Đại 
học Bách khoa TP HCM. 
[10] Martin Bates – Picmicrocontrollers an introduction to microelectronics, NXB 
Elsevier Linacre House – 2004. 
[11] Các trang web tham khảo:  

File đính kèm:

  • pdfgiao_trinh_cong_nghe_ky_thuat_dien_dien_tu_thi_nghiem_vi_xu.pdf