Tải bản đầy đủ (.docx) (34 trang)

ĐIỀU CHẾ DSB sử DỤNG TMS320C5515 ezdsp USB STICK

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.16 MB, 34 trang )

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------

Báo Cáo Project
ĐIỀU CHẾ DSB
SỬ DỤNG TMS320C5515 eZdsp USB STICK

GVHD: GS.TS Lê Tiến Thường
SVTH: Nhóm 12

TP HỒ CHÍ MINH, THÁNG 11 NĂM 2018


Điều chế DSB – Nhóm 12
GIỚI THIỆU
Điều chế tín hiệu là một kỹ thuật quan trọng trong lĩnh vực truyền thông, viễn thông. Một
trong những kỹ thuật điều chế tín hiệu tương tự đầu tiên là kỹ thuật điều chế biên độ (AM –
Amplitude Modulation). Kỹ thuật này được sử dụng trong nhiều lĩnh vực như đàm thoại từ xa,
truyền hình vô tuyến … DSB giải quyết khuyết điểm của AM trong việc lãng phí công suất
truyền tin.

Nhằm hoàn thành mục tiêu môn học cũng như củng cố, bổ sung kiến thức về lĩnh vực
điều chế tín hiệu, nhóm thực hiện đề tài điều chế tín hiệu DSB (double sideband modulation)
với tần số sóng mang là 5kHz và tần số tín hiệu điều chế là 500Hz, tỉ số điều chế là 0,8. Tín
hiệu được điều chế bằng KIT TMS320C5515 eZdsp USB Stick do TI (Texas Instruments) sản
xuất.

Nội dung của đề tài bao gồm trình bày cơ sở lý thuyết về điều chế tín hiệu DSB, thực


hiện tính toán lý thuyết và bằng MATLAB, mô phỏng bằng Simulink, thực hiện điều chế bằng
kit C5515, cuối cùng là so sánh các kết quả và rút ra kết luận.


Điều chế DSB – Nhóm 12

MỤC LỤC


Điều chế DSB – Nhóm 12

DANH MỤC HÌNH MINH HỌA


Điều chế DSB – Nhóm 12

1

TỔNG QUAN

1.1 Điều chế tín hiệu DSB-SC
AM – Amplitude Modulation – là một kỹ thuật điều chế tín hiệu được sử dụng phổ biến trong
điện tử viễn thông, thường dùng để truyền tin qua một sóng mang vô tuyến. Biên độ của tín
hiệu sóng mang thay đổi thuận theo biên độ của tín hiệu sóng thông tin cần truyền. Đây là một
trong những kỹ thuật điều chế đầu tiên được sử dụng để truyền giọng nói qua sóng vô tuyến.
DSB-SC – Double Sideband-Suppressed Carrier – là tín hiệu AM có thành phần sóng
mang không mang thông tin bị loại bỏ. Nhờ đó, việc truyền thông tin hiệu quả hơn AM. DSBSC là một dạng đặc biệt của DSB-RC – Double Sideband-Reduced Carrier, trong đó thành
phần sóng mang bị giảm xuống dưới một mức xác định. Tín hiệu DSB được sử dụng trong bộ
đàm, truyền hình vô tuyến …


1.2 Điều chế tín hiệu bằng Kit TMS320C5515 eZDSP USB Stick
Việc tính toán và mô phỏng trên máy tính có thể thực hiện bằng phần mềm MATLAB và
Simulink, thông qua việc nhập các lệnh tính toán và vẽ sơ đồ khối điều chế. Kết quả của quá
trình mô phỏng này có thể dùng để kiểm tra với kết quả điều chế bằng Kit TMS320C5515
eZDSP USB Stick (viết tắt C5515).
Kit C5515 có thể được kết nối với máy vi tính thông qua cổng USB, nhằm để lập trình
cho bộ xử lí tín hiệu số (Digital Signal Processor – DSP) 16-bit TMS320C5515. Việc lập trình
có thể thực hiện thông qua phần mềm Code Composeer Studio – CCS, sử dụng ngôn ngữ C.

Hình 1.1 Kit TMS320C5515 eZDSP USB Stick

5


Điều chế DSB – Nhóm 12
2

CƠ SỞ LÝ THUYẾT

2.1 Cơ bản về tín hiệu DSB
Trong điều chế AM, biên độ tín hiệu sóng mang biến đổi theo tín hiệu sóng ngõ vào, theo
phương trình:

trong đó, , W là băng thông của tín hiệu m(t).
Với với

Dãy phổ tín hiệu AM gồm ba thành phần: sóng mang fc, upper sideband fc + fm, lower
sideband fc – fm. Trong đó thành phần sóng mang không mang thông tin gây lãng phí năng
lượng trong việc truyền tin.
Việc công suất sóng mang lãng phí trong điều chế biên độ AM có thể được loại bỏ bằng

cách cho µ = 1 trong công thức điều chế AM và triệt tiêu thành phần tần số sóng mang không
điều chế. Kết quả sóng điều chế trở thành

được gọi là double-sideband–suppressed-carrier modulation (DSB-SC) hay gọi tắt là điều chế
DSB. Sơ đồ khối điều chế được thể hiện trên hình 2.1. Dạng sóng điều chế được thể hiện trên
hình 2.2. Đường bao ở đây có hình dạng của , chứ không phải là x(t) và sóng điều chế trải qua
một pha đảo ngược bất cứ khi nào x(t) vượt qua 0.
Với với

Hình 2.2 Sơ đồ điều chế tín hiệu DSB-SC

6


Điều chế DSB – Nhóm 12

Hình 2.3 Tín hiệu DSB-SC

2.2 Dãy phổ tín hiệu DSB
Biến đổi fourier, biểu diễn tín hiệu xc(t) trên miền tần số:

Với với

Từ đó có thể thấy phổ của tín hiệu DSB giống với phổ của tín hiệu AM không có tín hiệu
sóng mang điều chế, do đó nên băng thông vẫn giữ nguyên B = 2fm. Dãy phổ DSB được thể
hiện trên hình 2.3a. So với dãy phổ của AM trên hình 2.3b, thành phần sóng mang fc đã bị triệt
tiêu.

Hình 2.4 a) Dãy phổ DSB-SC. b) Dãy phổ AM


7


Điều chế DSB – Nhóm 12
Sự triệt tiêu sóng mang làm cho năng lượng truyền trung bình vào các sideband mang
thông tin. Công suất trung bình tổng của tín hiệu DSB

với và giả sử , tức là thành phần DC của m(t) bằng 0.
So với công suất trung bình tổng của tín hiệu AM

trong đó, µ2Sm < 1
Ít nhất 50% tổng công suất truyền nằm trong thành phần sóng mang độc lập với m(t),
không chứa thông tin. Ta nhận thấy tín hiệu DSB tận dụng tốt tổng công suất của bộ truyền
hơn so với tín hiệu AM.

2.3 Điều chế và giải điều chế DSB
Tín hiệu DSB-SC có thể được tạo ra từ hai bộ điều chế AM, gọi là mạch điều chế cân bằng
như trong hình 2.4. Tín hiệu ngõ ra của hai bộ điều chế AM:

Lấy S1(t) trừ cho S2(t), ta được tín hiệu điều chế DSB-SC:

Hình 2.5 Mạch điều chế DSB cân bằng

Lưu ý rằng nếu tín hiệu được điều chế có thành phần DC thì thành phần này sẽ không bị
loại bỏ mà nằm trong thành phần fc của tín hiệu sau điều chế.
Tín hiệu DSB được giải điều chế bằng cách nhân tín hiệu nhận được, kí hiệu x r(t), với
sóng mang giải điều chế và bộ lọc thông thấp. Dành cho hệ thống lý tưởng mà chúng ta đang
xem xét ở đây, tín hiệu nhận được giống hệt với tín hiệu truyền đi. Đầu ra của bộ nhân là:

8



Điều chế DSB – Nhóm 12

hay

Hình 2.5 thể hiện sơ điều chế và giải điều chế DSB (a) cùng với dạng sóng tín hiệu (b) và
phổ tín hiệu (c). Bởi vì có thành phần luôn dương. Nên giá trị của d(t) sẽ cùng dấu với giá trị
của m(t). Do phổ của 2 thành phần của d(t) không chồng lên nhau nên tín hiệu này có thể qua
mạch lọc thông thấp và Ac được chỉnh về giá trị đơn vị ở đầu ra của bộ giải điều chế, và thu về
lại được tín hiệu thông tin ban đầu m(t). Bộ lọc thông thấp loại bỏ thành phần 2fc phải có băng
thông lớn hơn hoặc bằng băng thông tín hiệu thông tin W.
Việc giải điều chế DSB là phức tạp bởi vì đòi hỏi độ nhất quán của sóng mang giải điều
chế của bộ nhận với sóng mang điều chế của bộ truyền. Một kỹ thuật đơn giản để tạo ra sóng
mang giải điều chế là bình phương tín hiệu qua điều chế

Nếu m(t) là tín hiệu công suất thì m2(t) có giá trị DC khác không. Do đó, xr2(t) có thành
phần tần số rời rạc ở 2fc, và có thể được tách ra nhờ bộ lọc dải thông hẹp. Tần số của thành
phần này sau đó được chia hai để tìm được sóng mang giải điều chế mong muốn.

9


Điều chế DSB – Nhóm 12

Hình 2.6 a) Sơ đồ điều chế và giải điều chế DSB. b) Dạng sóng mô tả. c) Phổ tín hiệu

Một phương pháp để xây dựng hệ thống nhận tín hiệu, phù hợp để giải điều chế tín hiệu
DSB-SC là Costa receivers, sơ đồ được thể hiện trên hình 2.6.


10


Điều chế DSB – Nhóm 12

Hình 2.7 Costas receiver

Bộ này gồm hai bộ phát hiện nhất quán nhận cùng một tín hiệu vào là sóng DSB-SC
Accos(2πfct)m(t), nhưng có hai tín hiệu từ bộ dao động nội vuông pha với nhau. Tần số của bộ
dao động nội được hiệu chỉnh bằng tần số fc. Đường tín hiệu phía trên được gọi là kênh I và
đường tín hiệu phía dưới được gọi là kênh Q. Hai đường này kết hợp với nhau để tạo nên một
hệ thống giữ cho bộ dao động nội đồng bộ với sóng mang.
Nhận xét chung, tín hiệu DSB tuy sử dụng công suất tốt hơn so với AM nhưng lại đòi hỏi
quá trình giải điều chế phức tạp hơn AM.

11


Điều chế DSB – Nhóm 12

3

TÍNH TOÁN VÀ MÔ PHỎNG ĐIỀU CHẾ TÍN HIỆU DSB

Thông số điều chế: , ,

3.1 Tính toán lý thuyết
Cho Ac = 1, Am = 0,8. Khi đó:

Tín hiệu điều chế:


Trên miền tần số:

3.2 Tính toán và vẽ tín hiệu trên miền thời gian và phổ tần số với MATLAB
Tính toán điều chế DSB và vẽ tín hiệu điều chế trên miền thời gian và phổ tần số được thực
hiện qua chương trình viết trên MATLAB có nội dung được trình bày như sau.
fm = 500;
fc = 5000;
fs = 48000;
Ac = 1;
Am = 0.8;
t = 0:1/fs:0.05;

Khai báo các thông số điều chế, với tần số lấy mẫu là fS = 48000 Hz.
x1 = Am*cos(fm*2*pi*t);
xc = Ac*cos(fc*2*pi*t);
x = x1;
xdsb = x.*xc;

Tính các giá trị của tín hiệu điều chế trên miền thời gian.
X=fft(xdsb);
Xshft = fftshift(X);

Tính các giá trị của tín hiệu điều chế trên phổ tần số sử dụng thuật toán FFT (Fast Fourier
Transform).
Dựa vào những giá trị trên có thể vẽ được đồ thị của tín hiệu điều chế trên miền thời gian
và phổ tần số. Dưới đây là nội dung của toàn bộ chương trình:

12



Điều chế DSB – Nhóm 12
fm = 500;
fc = 5000;
fs = 48000;
Ac = 1;
Am = 0.8;
t = 0:1/fs:0.05;
x1 = Am*cos(fm*2*pi*t);
xc = Ac*cos(fc*2*pi*t);
x = x1;
xdsb = x.*xc;
%-------------- Tinh toan cac gia tri can thiet
N = length(t);
T = 1/fs;
f

= -1/(2*T):1/(N*T):1/(2*T)-1/(N*T);

%-------------- Ve pho tan so
X=fft(xdsb);
Xshft = fftshift(X);
%==========================================================
% Ve do thi song
plot(x);
title('Dang song Ngo vao');
xlabel('Discrete time(n)'),ylabel('Amplitute'),
ylim([-4 4])
figure
plot(xdsb);

title('Dang song khi dieu che DSB');
xlabel('Discrete time(n)'),ylabel('Amplitute'),
xlim([0 450])
figure
plot(f,abs(Xshft));
title('Pho tan so DSB');
xlabel('Frequency(Hz)'),ylabel('|y|'),
xlim([2000 8000])

Kết quả thực hiện chương trình được thể hiện trên các hình 3.1, 3.2 và 3.3.

13


Điều chế DSB – Nhóm 12

Hình 3.8 Tín hiệu ngõ vào

Hình 3.9 Tín hiệu điều chế

Hình 3.10 Phổ tần số tín hiệu điều chế

14


Điều chế DSB – Nhóm 12
3.3 Mô phỏng điều chế tín hiệu DSB với SIMULINK
Xây dựng sơ đồ khối trên SIMULINK như hình 3.4.

Hình 3.11 Sơ đồ mô phỏng DSB trên SIMULINK


Thay đổi thông số các khối như hình 3.5

Hình 3.12 a) Thông số khối Information b) Thông số khối Carrier

15


Điều chế DSB – Nhóm 12
Tín hiệu sóng mang và tín hiệu sóng thông tin được tạo từ hai bộ tạo sóng sine. Hai tín
hiệu này qua bộ nhân cho ra tín hiệu điều chế. Dạng của tín hiệu điều chế được theo dõi qua
khối Scope.
Kết quả mô phỏng được thể hiện trên hình 3.5.

Hình 3.13 Kết quả mô phỏng DSB trên SIMULINK

3.4 Mô phỏng mạch điều chế cân bằng sử dụng Diode
Xét mạch điều chế cân bằng sử dụng phần tử diode phi tuyến trên hình 3.7.

Hình 3.14 Mạch điều chế bậc hai

Tín hiệu điều chế x(t) được đưa qua một biến áp cách ly 2 cuộn sơ cấp để tạo ra 2 tín hiệu
x(t) với đảo ngược pha 180o ở đầu vào của cả hai điốt. Do đó, điện áp đầu vào đến D1 được
cho bởi: và D2 được cho bởi: : . Dòng qua diode i1 và i2 là:

Điện áp ra trên tải:

16



Điều chế DSB – Nhóm 12
Tín hiệu điều chế Tín hiệu DSB-SC
Tín hiệu điều chế được loại bỏ và tín hiệu thứ hai được phép truyền qua đầu ra bởi phần
bộ lọc băng thông LC.
Mô phỏng sử dụng phần mềm Multisim với sơ đồ mạch như hình 3.8.

Hình 3.15 Sơ đồ mạch Multisim

Kết quả mô phỏng được thể hiện qua dạng sóng trên Oscilloscope trên hình 3.9.

Hình 3.16 Dạng sóng điều chế DSB bằng mạch điện tử

17


Điều chế DSB – Nhóm 12
4

ĐIỀU CHẾ DSB VỚI KIT C5515

4.1 Kit TMS320C5515 eZDSP USB Stick
TMS320C5515 là bộ xử lý 16 bit có công suất thấp nhất trong ngành giúp tiết kiệm năng
lượng ở mức độ vượt trội và cho phép thời lượng pin lâu hơn. Với hiệu suất 240 MIPS, bộ
nhớ trên chip lên tới 320KB, tích hợp cao hơn (bao gồm bộ tăng tốc phần cứng để tính toán
FFT) so với các thiết bị có thể so sánh với giá cạnh tranh, C5515 cung cấp nền tảng cho một
loạt các ứng dụng xử lý tín hiệu, bao gồm máy ghi âm, nhạc dụng cụ, giải pháp y tế di động
và các thiết bị điện tử tiêu dùng khác trong các ứng dụng công nghiệp và an ninh.
Một số chi tiết quan trọng của C5515 được thể hiện trên hình 4.1.

Hình 4.17 Một số chi tiết quan trọng của C5515





Bộ xử lí tín hiệu số DSP TMS320C5515.
Cổng USB để kết nối với máy tính, nhằm nạp chương trình điều khiển viết trong CCS







cũng như cấp điện.
Màn hình OLED I2C.
AIC3204 codec với một đường vào stereo in và một đường ra stereo out.
5 đèn LED màu điều khiển được.
2 nút nhấn có thể nhận tín hiệu.
...

18


Điều chế DSB – Nhóm 12
4.2 Sơ đồ điều chế DSB bằng C5515
Sơ đồ kết nối kit C5515 với PC được thể hiện trên hình 4.2.

Hình 4.18 Sơ đồ kết nối kit C5515 với PC

Kết nối giữa PC với C5515 thông qua cáp USB. Đầu Speaker của PC được kết nối với

cổng Stereo In của C5515 và ngược lại, cổng Stereo Out của C5515 sẽ được kết nối với cổng
Mic trên PC.
Chương trình được viết trên PC thông qua CCS sẽ được nạp vào C5515 qua cổng USB.
Chương trình này sẽ điều khiển AIC3204 codec nhận tín hiệu analog từ cổng Stereo In chuyển
sang tín hiệu digital và điều khiển DSP xử lí tín hiệu này. Sau đó nó sẽ biến đổi tín hiệu được
xử lí trở lại tín hiệu analog và xuất ra cổng Stereo Out.
PC sử dụng phần mềm Tone Generator để xuất tín hiệu analog qua cổng Speaker và nhận
lại tín hiệu xử lí từ cổng Mic, sau đó dùng phần mềm Soundcard Oscilloscope để nhận diện
kết quả.
Giải thuật điều chế DSB được thể hiện trên sơ đồ sau:

19


Điều chế DSB – Nhóm 12

Hình 4.19 Giải thuật điều chế DSB bằng kit C5515

Hình ảnh thực tế kết nối kit C5515 với máy tính:

Hình 4.20 Kết nối C5515 với máy tính

4.3 Lập trình cho C5515
Chương trình sử dụng các thư viện có sẵn được cung cấp bởi Texas Instruments bao gồm:
usbstk5515.h, aic3204.h, sinewaves.h. Nội dung của chương trình chính (main.c) như sau:
#include
#include
#include
#include
#include


"stdio.h"
"usbstk5505.h"
"aic3204.h"
"PLL.h"
"sinewaves.h"

Int16 left_input;
Int16 right_input;
Int16 left_output;

20


Điều chế DSB – Nhóm 12
Int16 right_output;
#define SAMPLES_PER_SECOND 48000
#define GAIN_IN_dB
0
#define Amp 0.8
unsigned long int i = 0;
static int DSB( int input1, int fc)
{
signed long result;
Int16 carrierwave;
carrierwave = generate_sinewave(fc, 32767); // fc sinewave of amplitude
//1.000=32767
result = Amp * ( ( (long) input1 * carrierwave) >> 15);
return ( (int) result);
}

/* ----------------------------------------------------------------------*
*
*
* main( )
*
*
*
* ----------------------------------------------------------------------*/
extern Int16 oled_test();
void main( void )
{
/* Initialize BSL */
USBSTK5505_init( );
/* Initialize the Phase Locked Loop in EEPROM */
pll_frequency_setup(100);
/* Initialise hardware interface and I2C for code */
aic3204_hardware_init();
/* Initialise the AIC3204 codec */
aic3204_init();
/* Set sampling frequency in Hz and ADC gain in dB */
set_sampling_frequency_and_gain(SAMPLES_PER_SECOND, GAIN_IN_dB);
oled_test();
printf("\nDieu che DSB\n\n");
printf( "Song mang hinh sin tan so fc = 5kHz, song vao hinh sin tan so
500Hz tao boi Tone Generator.\n\n" );
asm(" bclr XF");

}

for ( i = 0 ; i < SAMPLES_PER_SECOND * 600L ;i++ )

{
aic3204_codec_read(&left_input, &right_input); // Configured for one
// interrupt per two channels.
left_output = DSB(left_input, 5000);
right_output = left_input;
aic3204_codec_write(left_output, right_output);
}
/* Disable I2S and put codec into reset */
aic3204_disable();
printf( "\n***Ket thuc chuong trinh***\n" );
SW_BREAKPOINT;

Trong đó hàm generate_sinewave xác định trong file sinwaves.c, với nội dung như sau:
#include "tms320.h"

21


Điều chế DSB – Nhóm 12
#include "dsplib.h"
signed int generate_sinewave(signed short int frequency,
signed short int amplitude)
{
short int sinusoid;
signed long result;
static short int count = 0;
/* Multiply frequency by scaling factor of 32767 / 48000 */
result = ( (long)frequency * 22368 ) >> 14 ;
if ( result > 32767)
{

result = 32767; /* Maximum value for highest frequency */
}
else if ( 0 == result)
{
result = 1;
/* Minimum value for lowest fequency */
}
else if ( result < -32767)
{
result = -32767;
}
count += (short int) result;
/* Obtain sine of input */
sine ( &count, &sinusoid, 1);
if ( amplitude > 32767 )
{
amplitude = 32767; /* Range limit amplitude */
}
/* Scale sine wave to have maximum value set by amplitude */
result =

( (long) sinusoid * amplitude ) >> 15;

return ( (signed int ) result );
}
/**********************************************************************/
/* End of sinewaves.c
*/
/**********************************************************************/


Để hiển thị chữ ra màn hình oled, ta chèn thêm thư viện lcd.h và file oled_test.c vào thư mục
project, với nội dung file oled_test.c như sau:
#include"usbstk5515.h"
#include"usbstk5515_i2c.h"
#include"usbstk5515_gpio.h"
#include"lcd.h"
#define OSD9616_I2C_ADDR 0x3C

// OSD9616 I2C address

/* ----------------------------------------------------------------------*
* Int16 OSD9616_send( Uint16 comdat, Uint16 data )
*
*
Sends 2 bytes of data to the OSD9616
*
* ----------------------------------------------------------------------*/
Int16 OSD9616_send( Uint16 comdat, Uint16 data )

22


Điều chế DSB – Nhóm 12
{

Uint8 cmd[2];
cmd[0] = comdat & 0x00FF;
or Data
cmd[1] = data;


// Specifies whether data is Command - 0
// Command / Data

return USBSTK5515_I2C_write( OSD9616_I2C_ADDR, cmd, 2 );
}
/* -----------------------------------------------------------------------*
* Int16 OSD9616_multiSend( Uint16 comdat, Uint16 data )
*
*
Sends multiple bytes of data to the OSD9616
*
* -----------------------------------------------------------------------*/
Int16 OSD9616_multiSend( Uint8* data, Uint16 len )
{
Uint16 x;
Uint8 cmd[10];
for(x=0;x// Command / Data
{
cmd[x] = data[x];
}
return USBSTK5515_I2C_write( OSD9616_I2C_ADDR, cmd, len );
}
/* ----------------------------------------------------------------------*
* Int16 oled_test()
*
*
Testing function for the OSD9616 display
*
*------------------------------------------------------------------------*/

Int16 oled_test()
{
Int16 i;
// Counter
Uint8 cmd[10];
// For multibyte commands
/* Initialize I2C */
USBSTK5515_I2C_init( );
/* Initialize LCD power */
USBSTK5515_GPIO_setDirection( 12, 1 );
USBSTK5515_GPIO_setOutput( 12, 1 );

// Output
// Enable 13V

/* Initialize OSD9616 display */
OSD9616_send(0x00,0x00); // Set low column address
OSD9616_send(0x00,0x10); // Set high column address
OSD9616_send(0x00,0x40); // Set start line address
cmd[0] = 0x00 & 0x00FF; // Set contrast control register
cmd[1] = 0x81;
cmd[2] = 0x7f;
USBSTK5515_I2C_write( OSD9616_I2C_ADDR, cmd, 3 );
OSD9616_send(0x00,0xa1); // Set segment re-map 95 to 0
OSD9616_send(0x00,0xa6); // Set normal display
cmd[0] = 0x00 & 0x00FF; // Set multiplex ratio(1 to 16)
cmd[1] = 0xa8;
cmd[2] = 0x0f;
USBSTK5515_I2C_write( OSD9616_I2C_ADDR, cmd, 3 );
OSD9616_send(0x00,0xd3); // Set display offset

OSD9616_send(0x00,0x00); // Not offset

23


Điều chế DSB – Nhóm 12
OSD9616_send(0x00,0xd5); // Set display clock divide ratio/oscillator
frequency
OSD9616_send(0x00,0xf0); // Set divide ratio
cmd[0] = 0x00 & 0x00FF; // Set pre-charge period
cmd[1] = 0xd9;
cmd[2] = 0x22;
USBSTK5515_I2C_write( OSD9616_I2C_ADDR, cmd, 3 );
cmd[0] = 0x00 & 0x00FF; // Set com pins hardware configuration
cmd[1] = 0xda;
cmd[2] = 0x02;
USBSTK5515_I2C_write( OSD9616_I2C_ADDR, cmd, 3 );
OSD9616_send(0x00,0xdb); // Set vcomh
OSD9616_send(0x00,0x49); // 0.83*vref
cmd[0] = 0x00 & 0x00FF; //--set DC-DC enable
cmd[1] = 0x8d;
cmd[2] = 0x14;
USBSTK5515_I2C_write( OSD9616_I2C_ADDR, cmd, 3 );
OSD9616_send(0x00,0xaf); // Turn on oled panel
/* Fill page 0 */
OSD9616_send(0x00,0x00);
// Set low column address
OSD9616_send(0x00,0x10);
// Set high column address
OSD9616_send(0x00,0xb0+0); // Set page for page 0 to page 5

for(i=0;i<128;i++){OSD9616_send(0x40,0xff);} //
/* Write to page 0 */
OSD9616_send(0x00,0x00);
// Set low column address
OSD9616_send(0x00,0x10);
// Set high column address
OSD9616_send(0x00,0xb0+0); // Set page for page 0 to page 5
for(i=0;i<23;i++){OSD9616_send(0x40,0x00);}
OSD9616_send(0x40,0x70);
OSD9616_send(0x40,0x08);
OSD9616_send(0x40,0x70);
OSD9616_send(0x40,0x08);
OSD9616_send(0x40,0x78);
OSD9616_send(0x40,0x00); // m
OSD9616_send(0x40,0x78);
OSD9616_send(0x40,0x54);
OSD9616_send(0x40,0x54);
OSD9616_send(0x40,0x20);
OSD9616_send(0x40,0x00); // a
OSD9616_send(0x40,0x7F);
OSD9616_send(0x40,0x30);
OSD9616_send(0x40,0x0E);
OSD9616_send(0x40,0x7F);
OSD9616_send(0x40,0x00); // N
OSD9616_send(0x40,0x40);
OSD9616_send(0x40,0x00); // .
OSD9616_send(0x40,0x40);
OSD9616_send(0x40,0x40);
OSD9616_send(0x40,0x7f);
OSD9616_send(0x40,0x00); // L

OSD9616_send(0x40,0x10);

24


Điều chế DSB – Nhóm 12
OSD9616_send(0x40,0x10);
OSD9616_send(0x40,0x10);
OSD9616_send(0x40,0x00); // OSD9616_send(0x40,0x78);
OSD9616_send(0x40,0x54);
OSD9616_send(0x40,0x54);
OSD9616_send(0x40,0x20);
OSD9616_send(0x40,0x00); // a
OSD9616_send(0x40,0x30);
OSD9616_send(0x40,0x48);
OSD9616_send(0x40,0x30);
OSD9616_send(0x40,0x00); // o
OSD9616_send(0x40,0x78);
OSD9616_send(0x40,0x08);
OSD9616_send(0x40,0x7F);
OSD9616_send(0x40,0x00); // h
OSD9616_send(0x40,0x41);
OSD9616_send(0x40,0x22);
OSD9616_send(0x40,0x14);
OSD9616_send(0x40,0x7f);
OSD9616_send(0x40,0x00); // K
OSD9616_send(0x40,0x40);
OSD9616_send(0x40,0x3e);
OSD9616_send(0x40,0x41);
OSD9616_send(0x40,0x49);

OSD9616_send(0x40,0x7f);
OSD9616_send(0x40,0x08);
OSD9616_send(0x40,0x00); // D.
OSD9616_send(0x40,0x10);
OSD9616_send(0x40,0x10);
OSD9616_send(0x40,0x10);
OSD9616_send(0x40,0x00); // OSD9616_send(0x40,0x78);
OSD9616_send(0x40,0x08);
OSD9616_send(0x40,0x7F);
OSD9616_send(0x40,0x00); // h
OSD9616_send(0x40,0x70);
OSD9616_send(0x40,0x08);
OSD9616_send(0x40,0x78);
OSD9616_send(0x40,0x00); // n
OSD9616_send(0x40,0x7e);
OSD9616_send(0x40,0x09);
OSD9616_send(0x40,0x09);
OSD9616_send(0x40,0x7e);
OSD9616_send(0x40,0x00); // A
OSD9616_send(0x40,0x46);
OSD9616_send(0x40,0x05);
OSD9616_send(0x40,0x05);
OSD9616_send(0x40,0x7f);
OSD9616_send(0x40,0x00); // P.
OSD9616_send(0x40,0x00);

25



×