今天查閱了網上的資料,用用傳統(tǒng)20引腳12864屏幕制作了一款心率測試儀。
傳感器用的是檢測血液上的脈搏轉換成心率,在資料里面有C語言程序、板子所用的元器件的清單等。非常適合初學者買回來自己制作和練習。
運用的芯片是89C52單片機。
資料里面包含了AD教學、單片機基本原理教學、protel基礎教學等。也可以說是一個學習資料庫。
文檔里面都是網上資料,在完成1602屏幕后,可以運用12864去嘗試做。
資料里面是傳統(tǒng)20引腳的12864,作為初學者的我,首先碰到的是普中開發(fā)板的16個引腳的12864,里面資料少之又少,僅有例程。。。
不過在其他帖子上也有介紹這塊12864的,可以先在此資料里面學習傳統(tǒng)的20引腳的使用,之后再把mini12864屏幕運用起來!!
使用時把右手食指指肚放在st188反射式紅外傳感器上,放置合適時會看到指示燈隨心跳同時閃動,如果沒有閃爍請適當調節(jié)手指壓力,調節(jié)完后在測試過程中手指壓力不要變,保持穩(wěn)定,當指示燈有規(guī)律閃爍時表示信號正確。當單片機檢測到大約第五次信號時開始顯示這五次信號算出的平均心率。當超過大約3秒沒有檢測到信號,清除心率。
如果手指抖動或者不穩(wěn)定會看到指示燈亂閃,這樣測得的數據不準,在測試過程中保持穩(wěn)定!
st188傳感器引腳圖:
電路原理圖如下:
論文內容截圖(附件可下載完整版)
單片機源程序如下:
#include #define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255 #define uint unsigned int //無符號整型 宏定義 變量范圍0~65535 sbit rs=P2^5; //寄存器選擇信號 H:數據寄存器 L:指令寄存器 sbit rw=P2^6; //寄存器選擇信號 H:數據寄存器 L:指令寄存器 sbit e =P2^7; //片選信號 下降沿觸發(fā) unsigned char i=0,timecount=0,displayOK=0,rate=0,aa=0; unsigned int time[6]={0}; /***********************1ms延時函數*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i } /************ 延時函數 *****************/ void delay_uint(uint z) { while(z--); } /************ 寫命令函數 *****************/ void write_com(uchar com) { P0=com; rw=0; rs=0; delay_uint(25); e=1; delay_uint(50); e=0; } /************ 寫數據函數 *****************/ void write_data(uchar dat) { P0=dat;; rw=0; rs=1; delay_uint(25); e=1; delay_uint(50); e=0; } /********************************************************** *函數名: addr_12864 *功能:寫地址 *說明:寫漢字時要寫個地址 *輸入:無 *返回:無 **********************************************************/ void addr_12864(uchar hang,uchar lie) //地址轉換 { uchar address; switch(hang) { case 1: address=0x80 + lie ; break; case 2: address=0x90 + lie ; break; case 3: address=0x88 + lie ; break; case 4: address=0x98 + lie ; break; default : break; } write_com(address); } /***********************lcd1602上顯示兩位十進制數************************/ void write_sfm3(uchar hang,uchar add,uint date) { addr_12864(hang,add); write_data(':'); write_data(0x30+date/100%10); write_data(0x30+date/10%10); write_data(0x30+date%10); } /********************************************************** *函數名: write_string *功能:在12864上顯示字符數據 *說明: *輸入:無 *返回:無 **********************************************************/ void write_string(uchar hang,uchar lie,uchar *p) { addr_12864(hang,lie); //地址轉換 while(*p != '
主站蜘蛛池模板:
永靖县|
商都县|
河曲县|
图木舒克市|
蓬安县|
邵东县|
观塘区|
休宁县|
建宁县|
昭通市|
锡林郭勒盟|
罗城|
闽清县|
黔南|
新余市|
黑山县|
辉县市|
思南县|
武乡县|
滨州市|
忻城县|
昌都县|
沙田区|
时尚|
太谷县|
南宫市|
五大连池市|
温州市|
鄂州市|
都江堰市|
东光县|
漠河县|
鹰潭市|
武川县|
曲水县|
比如县|
汉寿县|
邹平县|
新沂市|
滨海县|
绥滨县|
for(j=0;j<120;j++);