畢業(yè)論文 跳繩儀設計
資源目錄里展示的全都有,所見即所得。下載后全都有,請放心下載。原稿可自行編輯修改=【QQ:401339828 或11970985 有疑問可加】
目 錄
1 引言 2
2 方案論證 2
3 總體設計框圖 2
4 部分電路元件的介紹 3
4.1 單片機STC89C58RD+ 3
4.1.1反射式紅外傳感器E18-D80NK-N 3
4.1.2 對射式紅外傳感器3MNK 4
4.1.3 液晶顯示器 LCD1602 4
5 整體電路介紹 13
5.1 總的工作原理分析 14
5.2 原理圖 15
5.1 PCB圖 16
6 程序軟件 17
7 總結(jié) 18
謝辭 19
參考文獻 21
1 引言
跳繩是一種以四肢肌肉活動為主的全身運動,它花樣繁多,可簡可繁,隨時可做,一學就會,運動量可以根據(jù)動作繁簡和速度快慢來調(diào)節(jié),特別適宜在氣溫較低的季節(jié)作為健身運動是一項男女老少皆宜的運動項目。
跳繩不僅有利于發(fā)展腿部、上肢、腰部的肌肉力量,提高靈敏性、協(xié)調(diào)性、耐力等身體素質(zhì),尤其可以促進少年兒童的身體發(fā)育,還有利于加強血液循環(huán),促進體內(nèi)新陳代謝,提高神經(jīng)系統(tǒng)的協(xié)調(diào)配合能力。同時,研究證實,跳繩可以預防諸如糖尿病、關(guān)節(jié)炎、肥胖癥、骨質(zhì)疏松、高血壓、肌肉萎縮、高血脂、失眠癥、抑郁癥、更年期綜合征等多種癥病。對哺乳期和絕經(jīng)期婦女來說,跳繩還兼有放松情緒的積極作用,因而也有利于女性的心理健康。
在跳繩時身體以兩腿的彈跳和雙上肢的搖動為主,手握繩把不停的搖動會刺激拇指上的穴位,增加腦神經(jīng)細胞的活力。跳繩時的各種復雜的動作能夠使大腦皮層的分析與綜合機能得到提高。從運動量來說,持續(xù)跳繩10分鐘,與慢跑30分鐘或跳健身舞20分鐘相差無幾,可謂耗時少、耗能大的需氧運動。
“模擬跳繩儀”與手擺式跳繩不同,它是用紅外線的發(fā)射與接收來檢測手的移動以及腳的跳動,代替了繩子的擺動,從而實現(xiàn)了模擬跳繩的功能。當紅外傳感器檢測到物體遮擋時,將輸出一個低電平,當正常狀態(tài)下沒有物體遮擋時,輸出一個高電平,當物體在不停的移動時,通過檢測紅外傳感器的輸出電平的不斷變化來統(tǒng)計計數(shù),從而實現(xiàn)電子自動計數(shù)的功能;
“模擬跳繩儀”設計時,采用紅外感器,無觸點、無損傷、壽命長。設計制作成小型的可適合家庭使用,設計制作成人型的可用于學校、機關(guān)、廠礦、小區(qū)等集體跳繩使用。如果該項目設計的好,一定會推動群眾性跳繩健身運動的發(fā)展。
2 方案論證
“模擬跳繩儀”是采用紅外傳感器的原理進行一定規(guī)律的掃描,代替?zhèn)鹘y(tǒng)的手動擺繩,人進入跳繩區(qū)域(即紅外檢測區(qū)域)后,跳繩機開始計數(shù),如果犯規(guī),即該跳起來時沒有跳起來,紅外傳感器沒有檢測到腳的移動,模擬跳繩儀將不計數(shù),即顯示器上的計數(shù)值不會增加。
3 總體設計框圖
模擬跳繩儀的設計主控MCU采用STC89C58RD+單片機,用對射式紅外傳感器3MNK檢測腳的起跳動作,用反射式紅外線傳感器E18-d80nk-N檢測手的不停移動,用LCD1602來顯示計數(shù)跳繩的次數(shù)。其中對射式紅外傳感器接收器的輸出信號連接STC89C58RD+的一個外部中斷引腳INT1,反射式紅外傳感器的輸出信號連接STC89C58RD+的另外一個外部中斷引腳INT0。在跳繩的過程中如果腳阻擋了光線,則是犯規(guī),犯規(guī)計數(shù)器將會記下犯規(guī)的次數(shù)。圖1為本設計的總體設計框圖。
電 源
反射式紅外傳感器
單
片
機
手
對射式紅外傳感器發(fā)送端
對射式紅外傳感器接收端
腳
LCD顯示器
圖1 總體設計框圖
4 部分電路元件的介紹
4.1單片機STC89C58RD+
圖2
STC89C58RD+引出端的功能圖如上圖2,STC89C58RD+單片機是STC推出的新一代高速/低功耗/超強抗干擾的單片機,指令代碼完全兼容傳統(tǒng)的8051單片機,12時鐘/機器周期和6時鐘機器周期可以任意選擇。
1、 增強型8051單片機,12時鐘/機器周期和6時鐘機器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)的8051
2、 工作電壓在5.5V-3.3V
3、 工作頻率范圍:0-40MHz,相當于普通8051的0-80MHz實際工作頻率可達到48MHz
4、 用戶應用程序空間為32K,數(shù)據(jù)存儲空間為1280字節(jié),內(nèi)部EEPROM為29K
5、 32個通用IO口,P0口是開漏輸出,作為總線擴展用時,不用上拉電阻;用作普通IO口用時,必須外接上拉電阻
6、 ISP(在系統(tǒng)可編程)/IAP(在應用可編程),無需專用的編程器和仿真器,可通過串口(RXD/P3.0,TXD/P3.1)直接下載用戶程序,數(shù)秒即可完成
7、 具有內(nèi)部看門狗
8、 共有2個16位定時器/計數(shù)器,還可以當成兩個8位定時器使用
9、 具有兩個外部中斷
10、 具有通用異步串口(UART),還可以用定時器軟件實現(xiàn)多個UART
11、 工作溫度范圍:-40-80攝氏度(工業(yè)級)/0-75攝氏度(商業(yè)級)
12、 封裝:PDIP-40
4.1.1 反射式紅外傳感器E18-d80nk-N
E18-D80NK-N這是一種集發(fā)射與接收于一體的光電傳感器,發(fā)射光經(jīng)過調(diào)制后發(fā)出,接收頭對反射光進行解調(diào)輸出。有效的避免了可見光的干擾。透鏡的使用,也使得這款傳感器最遠可以檢測80厘米距離的問題(由于紅外光的特性,不同顏色的物體,能探測的最大距離也有不同;白色物體最遠,黑色物體最近)。
檢測障礙物的距離可以根據(jù)要求通過尾部的電位器旋鈕進行調(diào)節(jié)。
該傳感器具有探測距離遠、受可見光干擾小、價格便宜、易于裝配、使用方便等特點,可以廣泛應用于機器人避障、流水線計件等眾多場合。
電氣特性:
紅色:VCC;黑色:GND;黃色:OUT。
U:5VDC
I:100mA
Sn:3-80CM
尺寸:
直徑:17MM
傳感器長度:45MM
引線長度:45CM
4.1.1 對射式紅外傳感器3MNK
3MNK是一種對射式光電傳感器,其物體不局限于金屬,該傳感器探測距離遠范圍為10CM-3M,由于該傳感器不是精密產(chǎn)品,所以其測量有誤差。
技術(shù)參數(shù):
1、 電壓:5VDC
2、 電流10 mA
3、 測量范圍:10CM-3M
4、 NPN常開
5、 尺寸:32*25*14MM
6、 引線長度:45CM
7、 種類:對射式
8、 材料:聚合物
9、 材料物理性質(zhì):電感式
10、 制作工藝:集成
11、 輸出信號:開關(guān)型
4.2液晶顯示屏LCD1602
LCD1602是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD字符型液晶顯示模塊
主要技術(shù)參數(shù):
?顯示容量:16×2個字符
?芯片工作電壓:4.5—5.5V
?工作電流:2.0mA(5.0V)
?模塊最佳工作電壓:5.0V
?字符尺寸:2.95×4.35(W×H)mm
4`引腳功能說明
1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表
?
編號
符號
引腳說明
編號
符號
引腳說明
1
VSS
電源地
9
D2
數(shù)據(jù)
2
VDD
電源正極
10
D3
數(shù)據(jù)
3
VL
液晶顯示偏壓
11
D4
數(shù)據(jù)
4
RS
數(shù)據(jù)/命令選擇
12
D5
數(shù)據(jù)
5
R/W
讀/寫選擇
13
D6
數(shù)據(jù)
6
E
使能信號
14
D7
數(shù)據(jù)
7
D0
數(shù)據(jù)
15
BLA
背光源正極
8
D1
數(shù)據(jù)
16
BLK
背光源負極
??????????????????????? ?表1 引腳接口說明表
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負極。
5`其與單片機的連接如下圖所示
1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表所示
序號
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清顯示
0
0
0
0
0
0
0
0
0
1
2
光標返回
0
0
0
0
0
0
0
0
1
*
3
置輸入模式
0
0
0
0
0
0
0
1
I/D
S
4
顯示開/關(guān)控制
0
0
0
0
0
0
1
D
C
B
5
光標或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符發(fā)生存貯器地址
0
0
0
1
字符發(fā)生存貯器地址
8
置數(shù)據(jù)存貯器地址
0
0
1
顯示數(shù)據(jù)存貯器地址
9
讀忙標志或地址
0
1
BF
計數(shù)器地址
10
寫數(shù)到CGRAM或DDRAM)
1
0
要寫的數(shù)據(jù)內(nèi)容
11
從CGRAM或DDRAM讀數(shù)
1
1
讀出的數(shù)據(jù)內(nèi)容
?
????????????????????????????????? ?表一
1602液晶模塊的讀寫操作,屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明1為高電平,0為低電平)
指令1:清顯示,指令碼01H,光標復位到地址00H位置
指令2:光標復位,光標返回到地址00H
指令3:光標和顯示位置設置I/D,光標移動方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或右移,高電平表示有效,低電平表示無效。
指令4:顯示開關(guān)控制。D:控制整體的顯示開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示。C:控制光標的開與關(guān),高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標或顯示移位 S/C :高電平時顯示移動的文字,低電平時移動光標
指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時為雙行顯示,F(xiàn):低電平時顯示5X7的點陣字符,高電平時顯示5X10的顯示字符。
指令7:字符發(fā)生器RAM地址設置。
指令8:DDRAM地址設置。
指令9:讀忙信號和光標地址 BF:忙標志位,高電平表示忙,此時模塊不能接收命令或數(shù)據(jù),如果為低電平表示不忙。
??表二:基本操作時序表
讀寫操作時序如圖所示
?
??????????????????????????????? 圖三:讀操作時序
????????????????????????????? ?圖四:寫操作時序
5 整體電路介紹
5.1 總的工作原理分析
當紅外傳感器檢測到有物體時,其輸出端口將輸出高電平,當沒有檢測到物體的正常狀態(tài)時,其輸出端口輸出低電平;因此,利用這一特性可以檢測到腳的起跳和手的移動。當人站在對射式紅外傳感器(發(fā)送與接收端的中間時),對射式紅外傳感器的接收器會檢測到腳,使其輸出信號為低電平,當起跳后,紅外傳感器將不會檢測到腳,輸出高電平,當腳落地后,又輸出低電平,于是,我們可以通過單片機檢測到外部中斷腳出現(xiàn)下降沿時,產(chǎn)生中斷的方式來計數(shù)一次,起跳到落地,單片機將會產(chǎn)生一次中斷,同理,檢測手的反射式傳感器也可以這樣做。當單片機同時檢測到兩個外部中斷(即人起跳,同時手有晃動動作,即可模擬一次跳繩的動作)計數(shù)跳繩一次,同時,單片機驅(qū)動LCD1602顯示一次跳繩結(jié)果,并依次累計。
5.2 原理圖
5.3 PCB圖
6. 軟件
Main.c
/************************頭文件及說明*************************/
#include"stc.h"
#include
#include
#include
#include"uart.h"
#include"timer.h"
#include"misc.h"
#include"lcd1602.h"
unsigned char name[] = "IR JUMP TEST";
unsigned char name1[] = "--by Tan Tianyu";
unsigned char table1[12]={'j','u','m','p','c','o','u','n','t',':','0','0'};
unsigned char decade = 0;
unsigned char SkipCnt = 0;
void main(void)
{
LED_ON;
Timer0_Init();
UART_Init();
exit_Init();
lcd1602_init();
clearScreen();
DisplayChar (0,2,name,sizeof(name)-1);
DisplayChar (1,0,name1,sizeof(name1)-1);
delay_ms(4000);
clearScreen();
DisplayChar (0,2,name,sizeof(name)-1);
DisplayChar (1,2,table1,sizeof(table1));
while(1)
{
if(StartDetectFlag)
{
if(DetectHandFlag == 1 && DetectFootFlag == 1)
{
DetectHandFlag = 0;
DetectFootFlag = 0;
if(SkipCnt <= 9)
{
table1[11] = SkipCnt + 0x30;
}
else if(SkipCnt<=99)
{
table1[10] = SkipCnt/10 + 0x30;
table1[11] = SkipCnt%10 + 0x30;
}
else if(SkipCnt >= 100)
{
SkipCnt = 0;
table1[10] = SkipCnt + 0x30;
table1[11] = SkipCnt + 0x30;
}
SkipCnt++;
DisplayChar(1,2,table1,sizeof(table1));
}
}
}
}
Uart.c
/************************頭文件及說明*************************/
#include "stc.h"
#include
#include "uart.h"
void UART_Init(void)
{
TMOD |= 0x20;//配置定時器1工作在模式2
TH1 = 0xFA; //T1的溢出率 = 11.0592MHz/12/(256-TH1) = 153600
TL1 = TH1;
SCON = 0x50;//串口工作在方式1,8位UART,波特率=(2^SMOD/32)*(T1的溢出率) = 9600
PCON = 0x80;// SMOD位置1
EA = 1; //使能總中斷
ES = 1; //使能串口中斷
TR1 = 1; //開啟定時器1
}
void UartSendChar(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
#if 1
void UartSendChars(unsigned char *dat, unsigned int length)
{
while(length--)
{
UartSendChar(*dat++);
}
}
#endif
void UART_Routine(void) interrupt 4 using 2
{
if(RI)
{
RI=0;
}
}
Timer.c
/************************頭文件及說明*************************/
#include "stc.h"
#include "timer.h"
#include"uart.h"
#include"misc.h"
#define SYSCLK 11059200
#define TIMER_10MS (65536-SYSCLK/12/100)
volatile int timeout = 200;
void Timer0_Init(void)
{
TMOD |= 0x01;//定時器0工作在模式1
TH0 = TIMER_10MS/256;
TL0 = TIMER_10MS%256; //定時時間10ms
ET0 = 1; //使能T0中斷
TR0 = 1; //開啟定時器0計時
}
void Timer0_Routine(void) interrupt 1 //10ms定時中斷服務子程序
{
TH0 = TIMER_10MS/256;
TL0 = TIMER_10MS%256;
if(StartDetectFlag)
{
timeout--;
if(timeout == 0)
{
StartDetectFlag = 0;
}
}
}
Misc.c
#include"stc.h"
#include"misc.h"
#include"uart.h"
#include"timer.h"
volatile unsigned char StartDetectFlag = 0;
volatile unsigned char DetectHandFlag = 0;
volatile unsigned char DetectFootFlag = 0;
void delay_us(unsigned int i)
{
while(i--);
}
void delay_ms(unsigned int cnt)
{
unsigned int i;
while(cnt--)
{
for(i=0;i<75;i++);
}
}
void exit_Init(void)
{
IT0 = 1; //下降沿觸發(fā)中斷
EX0 = 1; //使能中斷
IT1 = 1;
EX1 = 1;
}
void Int0_Routine(void) interrupt 0
{
//UartSendChar(0x22);
DetectFootFlag = 1;
}
void Int1_Routine(void) interrupt 2
{
//UartSendChar(0x33);
StartDetectFlag = 1;
timeout = 200;//2S定時開啟
DetectHandFlag = 1;
}
LCD.c
#include"stc.h"
#include"lcd1602.h"
#include"misc.h"
const unsigned char address[]=
{0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF};
void write_com(unsigned char com)
{
E = 0;
RS = 0;
W_R = 0;
P2 = com;
delay_us(10);
E = 1;
delay_us(20);
E = 0;
}
void write_date(unsigned char date)
{
E = 0;
RS = 1;
W_R = 0;
P2 = date;
delay_us(10);
E = 1;
delay_us(20);
E = 0;
}
void lcd1602_init(void)
{
write_com(0x38); //設置顯示模式,8位數(shù)據(jù)總線,雙行顯示,顯示5X10的字符
delay_us(20);
write_com(0x0c);//設置光標打開并閃爍顯示
delay_us(20);
write_com(0x06);//設置光標右移
delay_us(20);
write_com(0x01); //清除屏幕
delay_us(20);
}
void clearScreen(void)
{
delay_us(200);
write_com(0x01);
delay_us(200);
}
void DisplayChar(unsigned char x,unsigned char y,unsigned char *buf,unsigned char size)
{
write_com(address[16*x+y]);
delay_us(20);
while(size--)//空格的地址是0
{
if(y>=16) //判斷換行
{ //若不判斷,則自動從第一行到第三行
y=0;
x++;
}
if(x>=2)
{
x=0;//一屏顯示完,回到屏左上角
}
write_com(address[16*x+y]);//更新地址 一個地址要寫完一個字,則要與兩次數(shù)據(jù)寫完
write_date(*buf);//寫數(shù)據(jù)
buf++;
y++;//寫完一個字地址要往前走一位
delay_us(20);
}
}
7 結(jié)論
畢業(yè)論文是我們本科生在學習階段的一次非常難得的理論與實際相結(jié)合的機會,通過這次比較完整的模擬跳繩儀的設計,我擺脫了單純的理論知識學習狀態(tài)。和實際設計的結(jié)合鍛煉了我的綜合運用所學專業(yè)基礎(chǔ)知識的能力,同時也增強我查閱文獻資料、設計手冊、設計規(guī)范以及專業(yè)軟件制圖等非專業(yè)能力,而且通過對整體的掌控,對局部的取舍,以及對細節(jié)的斟酌處理,都使我的能力得到了鍛煉,經(jīng)驗得到了豐富,并且意志力、抗壓能力及耐力水平也都得到了不同程度的提升。這是我們都希望看到的,也正是我們進行畢業(yè)設計的目的所在。
雖然畢業(yè)設計內(nèi)容繁多,過程繁瑣,但我的收獲卻更加豐富。通過查找資料,設計電路以及制作電路,能夠讓人詳細對跳繩儀的工作原理、操作過程以及使用方法有一個深刻的理解。各種芯片的適用條件,各種元件設備的選用標準,我都是隨著設計的不斷深入而不斷熟悉并學會應用的。
在設計過程中,和老師的溝通交流更使我從經(jīng)濟實用的角度對設計有了新的認識,也對自己提出了新的要求。要想更完美的進行,與其他專業(yè)人才及老師的交流溝通也是很有必要的。這期間我請教了關(guān)于單片機、PLC、家電等多方面的各位老師,更加理清了模擬跳繩儀各部分電路的原理知識。提高是有限的,但提高也是全面的,正是這一次設計讓我積累了無數(shù)實際經(jīng)驗,讓我的頭腦更好的被知識武裝了起來,也必然會讓我在未來的工作學習中表現(xiàn)出更高的應變能力,更強的溝通力和理解力。
順利如期的完成本次畢業(yè)設計給了我很大的信心,讓我了解專業(yè)知識的同時也對本專業(yè)的發(fā)展前景充滿信心。雖然有些地方還有不足,但正是因為這些不足在一定程度上給了我們無限的創(chuàng)造力,也是我們更好的去研究、更好的去創(chuàng)造的最大動力,只有發(fā)現(xiàn)問題、面對問題,才有可能解決問題,不足和遺憾不會給我打擊,只會更好的鞭策我前行,今后我更會關(guān)注新技術(shù)新設備的出現(xiàn),并爭取盡快的掌握這些先進的知識,更好的為大眾服務。
謝辭
在畢業(yè)設計中,在老師指導和幫助下設計模擬跳繩儀,使我在理論和實踐方面都受益匪淺,不僅進一步豐富了理論知識,而且還提高了動手操作的能力。由于我要參加考研復試,因此我做畢業(yè)的時間很少,學校復試完回來時,剩下的時間已經(jīng)很少了,因此為了讓我更好的完成畢業(yè)設計,老師不惜犧牲假日和平時的休息時間,為我輔導和及時的解決出現(xiàn)的各種問題。他們求學的嚴謹態(tài)度、孜孜不倦的探索精神,令我受益終生。他們對知識地渴求,對生活的樂觀,還有他們永遠洋溢著笑容的臉龐,讓我們由衷的感激,也由衷的敬佩!也將永遠銘刻在我的心中,并激勵我奮發(fā)向前!
此外,在畢業(yè)設計的過程中,我的每一點進步和收獲,也離不開同學們的支持和幫助,在我遇到困難時,他們總是熱情、認真的幫助我分析問題,最終和我一起找到解決方案。
大學四年的學習階段伴隨著論文的完成就要結(jié)束了,在即將畢業(yè)的時刻,難以割舍的心情用千言萬語都無法形容,但是在這里我要向所有關(guān)心、幫助我的老師致以衷心的感謝!是您們將自己寶貴的財富無私地奉獻給了我們,讓我們能在學業(yè)上有所成就;是您們讓我們倍感教師職業(yè)的偉大,教給我們知識,又不忘教育我們?nèi)绾巫鋈?!我真誠對老師們說聲:您們辛苦了,感謝您們這一路來的指導和無微不致的關(guān)懷。同時也要向我的同學朋友說聲,感謝你們對我的支持和幫助,衷心的祝愿你們事業(yè)有成,一生幸福
參考文獻
[1] 黃繼昌.傳感器工作原理及應用實例[M].北京:人民郵電出版社,1998
[2] 卿太全.熱釋電人體紅外傳感器原理及應用[J].電子世界1996(10):25 ~ 26
[3] 馮克成.紅外線光學系統(tǒng)[M].北京:兵器工業(yè)出版社,2005
[4] 顧文郁.光電測技術(shù)[M].上海:上??茖W技術(shù)出版社,2004
[5] 虞光楣.功率放大器的應用[M].北京:北京工業(yè)出版社,2004
[6] 守車生.移位寄存器[J].無線電,2000(11):522~523
[7] 荀殿棟.數(shù)字電路設計實用手冊[M].電子工業(yè)出版社,2005
[8] 福安.電子電路設計與實踐[M].山東科學技術(shù)出版社,2004
[9] 劉守義.數(shù)字電子技術(shù)[M].西安電子科技大學出版,2001
[10] 電子電路手則,第二冊數(shù)電集成部分的由石英晶體震蕩器獲得脈沖信號,2000
[11] 李學芝.LED數(shù)碼管的使用方法[J].無線電,1999(10):23~24
[12] 洪亞闊.電子檢測儀準確率的研究.用電器科技.2006(3):37~39
[13] David Ethetidge.Information Networks [M]. Prentice halInternational Ltd ,2005
[14] Head JR.The use of micron aver vehicle detectors with traffic signals [J].Traffic Engineering Control,2006(1):23~25
[15] 吳金戌,郭庭吉等.音樂的應用.8051單片機實踐與應用[M].124-130
[16]李朝青.89C2051單片機.單片機原理及接口技術(shù)[M].北京航空航天大學出版社, 278
[17] 宋東生.音樂集成電路.無線電[J].2002,(1):59
19
?LCD1602中文資料一
?
?
一:液晶顯示器各種圖形的顯示原理?? 線段的顯示:點陣圖形式液晶由M×N個顯示單元組成,假設LCD顯示屏有64行,每行有128列,每8列對應1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應,每一字節(jié)的內(nèi)容和顯示屏上相應位置的亮暗對應。例如屏的第一行的亮暗由RAM區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。
字符的顯示
???用LCD顯示一個字符時比較復雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。
漢字的顯示
?? 漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為1、3、5……右邊為2、4、6……根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找出顯示RAM對應的地址,設立光標,送上要顯示的漢字的第一字節(jié),光標位置加1,送第二個字節(jié),換行按列對齊,送第三個字節(jié)……直到32B顯示完就可以LCD上得到一個完整漢字?
?二:1602字符型LCD簡介
????1·字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長沙太陽人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實物如圖
?
????????????????????????????????? 圖一
?2·1602LCD的基本參數(shù)及引腳功能
?? 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖
??????????????????????????????? 圖二
3`LCD1602主要技術(shù)參數(shù):?
?顯示容量:16×2個字符
?芯片工作電壓:4.5—5.5V
?工作電流:2.0mA(5.0V)
?模塊最佳工作電壓:5.0V
?字符尺寸:2.95×4.35(W×H)mm
4`引腳功能說明
1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表
?
編號
符號
引腳說明
編號
符號
引腳說明
1
VSS
電源地
9
D2
數(shù)據(jù)
2
VDD
電源正極
10
D3
數(shù)據(jù)
3
VL
液晶顯示偏壓
11
D4
數(shù)據(jù)
4
RS
數(shù)據(jù)/命令選擇
12
D5
數(shù)據(jù)
5
R/W
讀/寫選擇
13
D6
數(shù)據(jù)
6
E
使能信號
14
D7
數(shù)據(jù)
7
D0
數(shù)據(jù)
15
BLA
背光源正極
8
D1
數(shù)據(jù)
16
BLK
背光源負極
??????????????????????? ?表1 引腳接口說明表
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負極。
5`其與單片機的連接如下圖所示
LCD1602中文資料二(續(xù)一)
由于篇幅限制,此是LED中文資料的續(xù)寫,如訪問上篇內(nèi)容請點擊:LCD1602中文資料一
6`1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表所示
序號
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清顯示
0
0
0
0
0
0
0
0
0
1
2
光標返回
0
0
0
0
0
0
0
0
1
*
3
置輸入模式
0
0
0
0
0
0
0
1
I/D
S
4
顯示開/關(guān)控制
0
0
0
0
0
0
1
D
C
B
5
光標或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符發(fā)生存貯器地址
0
0
0
1
字符發(fā)生存貯器地址
8
置數(shù)據(jù)存貯器地址
0
0
1
顯示數(shù)據(jù)存貯器地址
9
讀忙標志或地址
0
1
BF
計數(shù)器地址
10
寫數(shù)到CGRAM或DDRAM)
1
0
要寫的數(shù)據(jù)內(nèi)容
11
從CGRAM或DDRAM讀數(shù)
1
1
讀出的數(shù)據(jù)內(nèi)容
?
????????????????????????????????? ?表一
1602液晶模塊的讀寫操作,屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明1為高電平,0為低電平)
指令1:清顯示,指令碼01H,光標復位到地址00H位置
指令2:光標復位,光標返回到地址00H
指令3:光標和顯示位置設置I/D,光標移動方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或右移,高電平表示有效,低電平表示無效。
指令4:顯示開關(guān)控制。D:控制整體的顯示開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示。C:控制光標的開與關(guān),高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標或顯示移位 S/C :高電平時顯示移動的文字,低電平時移動光標
指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時為雙行顯示,F(xiàn):低電平時顯示5X7的點陣字符,高電平時顯示5X10的顯示字符。
指令7:字符發(fā)生器RAM地址設置。
指令8:DDRAM地址設置。
指令9:讀忙信號和光標地址 BF:忙標志位,高電平表示忙,此時模塊不能接收命令或數(shù)據(jù),如果為低電平表示不忙。
與HD44780相兼容的芯片時序表如下:
?
讀狀態(tài)
輸入
RS=L,R/W=H,E=H
輸出
D0—D7=狀態(tài)字
寫指令
輸入
RS=L,R/W=L,D0—D7=指令碼,E=高脈沖
輸出
無
讀數(shù)據(jù)
輸入
RS=H,R/W=H,E=H
輸出
D0—D7=數(shù)據(jù)
寫數(shù)據(jù)
輸入
RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖
輸出
無
?
????????????????????????????????表二:基本操作時序表
讀寫操作時序如圖所示
?
??????????????????????????????? 圖三:讀操作時序
????????????????????????????? ?圖四:寫操作時序
7:1602LCD的RAM地址映射及標準字庫表
液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在,哪里顯示字符,圖是1602的內(nèi)部顯示地址。
??????????????????? 圖五:LCD1602內(nèi)部顯示地址
例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
???? 在對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。
???? 1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如圖10-58所示,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。
收藏