Keywords

September 2017
MonTueWedThuFriSatSun
    123
45678910
11121314151617
18192021222324
252627282930 

Calendar Calendar


Ứng dụng timer của 89xxx

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Ứng dụng timer của 89xxx

Bài gửi  thay Khai on Tue Jan 15, 2013 9:36 pm

/*
Lời thơ: Đỗ Trung Quân
Nhạc: Giáp Văn Thạch
Quê hương là chùm khế ngọt
Cho con trèo hái mỗi ngày
Quê hương là đường đi học
Con về rợp bướm vàng bay
Quê hương là con diều biếc
Tuổi thơ con thả trên đồng
Quê hương là con đò nhỏ
Êm đềm khua nước ven sông

ĐK:
Quê hương là cầu tre nhỏ
Mẹ về nón lá ngiêng che
Quê hương là đêm trăng tỏ
Hoa cau rụng trắng ngoài thềm

Quê hương mỗi người chỉ một
Như là chỉ một Mẹ thôi
Quê hương nếu ai không nhớ
Sẽ không lớn nổi thành người

*/
/////////////////////////////////////////////////////////
///Dùng VDK để mô phỏng
//==============================
#include <REGX51.H>
//que huong
//nhac : giap van thach
// tho: Do trung Quan
sbit phat = P2^7;

unsigned int code key[]={0,3821,3404,3032,2862,2550,2271,2023,
1910,1701,1516,1431,1274,1135,1011,
955,850,757,715,637,567,505,
477,424,378,357,318,283,252} ;
unsigned char code
note_truong[][2]={{13,4},{0,1},{13,8},{10,2},{0,1},{10,2},{13,2},{15,2},{9,4},{10,4},{13,4},{0,6},
{12,4},{0,1},{12,8},{10,4},{13,2},{14,2},{10,4},{0,1},{10,8},{0,8},
// que huong la duong di hoc
{10,4},{11,4},{0,1},{11,8},{9,4},{0,1},{9,2},{0,1},{9,2},{10,2},{9,2},{6,8},{0,8},
{10,2},{9,2},{7,8},{9,4},{10,4},{11,4},{9,4},{10,8},{0,8},
{13,4},{0,1},{13,8},{10,4},{13,4},{10,2},{13,2},{15,8},{0,4},
{13,2},{15,2},{16,8},{14,4},{0,1},{14,4},{16,4},{14,2},{13,2},{12,2},{0,1},{12,10},{0,8}
//que huong la con do nho
,{13,4},{0,1},{13,8},{11,4},{13,4},{11,4},{0,1},{11,4},{13,4},{15,4},{0,8},
{10,2},{9,2},{0,1},{9,8},{12,4},{14,4},{15,4},{13,4},{0,1},{13,12},{0,8},
// que huong la cau tr nho
{15,4},{0,1},{15,8},{13,4},{0,1},{13,4},{0,1},{13,4},{10,4},{13,4},{15,4},{0,8},
{13,4},{0,1},{13,8},{17,4},{0,1},{17,6},{16,2},{0,1},{16,8},{0,8},
{14,4},{0,1},{14,8},{12,4},{13,4},{14,4},{10,4},{13,4},{14,4},{0,8},
// hoa cau rung trang ngoai them
{14,4},{0,1},{14,8},{10,8},{15,2},{13,2},{0,1},{13,8},{0,8},
{15,4},{0,1},{15,8},{13,2},{15,2},{13,4},{15,4},{10,8},{0,8},
{15,4},{13,8},{0,1},{13,2},{15,2},{10,4},{13,2},{14,2},{16,8},{0,10},
// que huong neu ai ko nho // se ko lon noi thanh nguoi
{14,2},{13,2},{14,8},{13,4},{12,4},{13,4},{9,2},{10,2},{13,2},{14,8},{0,16},
{14,4},{16,4},{14,8},{16,4},{16,2},{17,2},{13,4},{0,1},{13,8},{0,16},
// diep khuc
{14,2},{13,2},{14,8},{13,4},{12,4},{13,4},{9,2},{10,2},{13,2},{14,8},{0,16},
{14,4},{16,4},{14,8},{16,4},{16,2},{17,2},{13,4},{0,1},{13,8},{0,24}
, {0,0}} ;
//not den = 8 , not moc don = 4

unsigned char truong_do=1,note ;
unsigned int w,cao_do ;
void delay(truong_do);
void silent(truong_do);
void sing(void);
//void singsing(cao_do);
void main(void){
IE=0x82; // ngat timer 0 mod 16 bit
TMOD=0x01 ;
w=0 ;
TH0= ~ (1000/256);
TL0= - (1000%256);
TR0= 1;
for(w=0;truong_do!=0;w++) {
note = note_truong[w][0];
truong_do = note_truong[w][1];
cao_do = key[note] ;
TR0 = 1; // CHO BO DINH THOI CHAY
if (cao_do==0) {
TR0=0 ;
silent(truong_do) ;
}
else delay(truong_do) ;
w=w++;
}
phat=1;
}

void delay(truong_do){
while(truong_do--){
unsigned int tempo= 12000 ; //toc do choi cua ban nhac
while(tempo--); // vong lap nay se mat thoi gian la temp0 x 8 (us)

}
}
void silent(truong_do){
while(truong_do--){
unsigned int temp1= 4000 ; //toc do choi cua ban nhac
while(temp1--); // vong lap nay se mat thoi gian la temp0 x 8 (us)

}
}
void sing(void) interrupt 1 using 1 {
TF0=0; // XOA CO NGAT
TR0=0 ;
phat=(~phat) ; //dao bit
TH0= ~ (cao_do/256);
TL0= - (cao_do%256);
TR0= 1;

}
////////////////////////////////////////////////////////////////
//Để hiểu về nốt nhạc, bạn phải hiểu về một chút về cao độ và trường độ. Đọc link này nhé
[You must be registered and logged in to see this link.]
//////////////////////////////////////////////////
//Một vài thứ học được ở bài này:
- Khởi tao bit (bit và sbit khác nhau chỗ nào?)
- Khởi tạo mảng (cách khởi tạo mảng 1 chiều và 2 chiều)
- Sử dụng timer (Nếu là 89xxx thì: B1- Chọn chế độ, B2- Cài giá trị, B3- Cho timer chạy, B4-Kiểm tra cờ tràn (phần mềm hoặc tự kiểm tra nếu dùng ngắt-interrupt), B5- Xóa cờ tràn (phần mềm hoặc tự xóa nếu dùng ngắt-interrupt, còn Timer2 phải có lệnh xóa)
- Biết các lệnh if else; vòng lặp for
- ...
- Biết về nốt nhạc cao độ và trường độ
//////////////////////////////////////////
- Phần cứng này dể thôi, tự xem cấu hình trong bài mà thiết kế nhé

thay Khai

Tổng số bài gửi : 23
Join date : 14/11/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ứng dụng timer của 89xxx

Bài gửi  Admin on Mon Mar 18, 2013 6:27 pm

thầy không cho thiết kế thì cũng phải cho đoạn video cho các em thích thú thiết kế chứ. Đọc chữ không chưa khích thích hoc trò thầy ơi

Admin
Admin

Tổng số bài gửi : 79
Join date : 03/11/2012
Age : 36

Xem lý lịch thành viên http://diendientuhvct.forumvi.com

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết