|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
請教12232的顯示溫度,急! |
| 作者:碧溪 欄目:單片機 |
#include <reg51.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #define uCHAR unsigned CHAR #define data 1 #define comm 0 #define f_page 0xb8 #define f_row 0xc0 #define f_line 0x00 sbit rst=P3^0; sbit e1 =P3^5; sbit e2 =P3^6; sbit rw =P3^4; sbit a0 =P3^1; sbit tem=P3^7; void wr_lcd (uCHAR choe1,uCHAR choe2,uCHAR data_comm,uCHAR content); /*choe1為1,控制左半屏,choe2為1,控制右半屏*/ void chk_busy (uCHAR choe1,uCHAR choe2); void delay (unsigned int us); void delay1 (unsigned int ms); void init_lcd (void); void disphz (uCHAR code *chn); void dispzf (uCHAR code *chn); void disptu (uCHAR code *img); void wrlattice (uCHAR data1,uCHAR data2); uCHAR code tab2[]={ 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00 }; uCHAR code tab1[]={ 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00 }; uCHAR code tab0[]={ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00 }; uCHAR code tab3[]={ 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00 }; uCHAR code tab4[]={ 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00 }; uCHAR code tab5[]={ 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00 }; uCHAR code tab6[]={ 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00 }; uCHAR code tab7[]={ 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00 }; uCHAR code tab8[]={ 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00 }; uCHAR code tab9[]={ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00 }; /*------------------------------------------*/ void wr_lcd (uCHAR choe1,uCHAR choe2,uCHAR data_comm,uCHAR content) { chk_busy (choe1,choe2); if(data_comm) { a0=1; //data rw=0; //write } else { a0=0; //command rw=0; //write } if(choe1==1) { P0=content; //OUTPUT data or comm e1=1; ; e1=0; } if(choe2==1) { P0=content; //OUTPUT data or comm e2=1; ; e2=0; } } void chk_busy (uCHAR choe1,uCHAR choe2) { if(choe1==1) { a0=0; rw=1; e1=1; // while(1) delay(2); e1=0; } if(choe2==1) { a0=0; rw=1; e2=1; // while(1) delay(2); e2=0; } } void delay (unsigned int us) //delay time { while(us--); } void delay1 (unsigned int ms) { unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<1000;j++) ; } /*------------------初始化-----------------*/ void init_lcd (void) { rst=1; ; wr_lcd (1,1,comm,0xe2); wr_lcd (1,1,comm,0xa4); wr_lcd (1,1,comm,0xa9); wr_lcd (1,1,comm,0xa0); wr_lcd (1,1,comm,0xee); wr_lcd (1,1,comm,0xaf); } /*--------------顯示字符(8x16)---------------*/ void dispzf (uCHAR code *eng) { uCHAR i,j,k; for(k=0;k<7;k++)//顯示左邊 { for(j=0;j<4;j++) { wr_lcd (1,0,comm,f_page+j); wr_lcd (1,0,comm,f_row); wr_lcd (1,0,comm,f_line+5+k*8); for(i=0;i<8;i++) wr_lcd (1,0,data,eng[k*32+j*8+i]); } } for(k=7;k<14;k++)//顯示右邊 { for(j=0;j<4;j++) { wr_lcd (0,1,comm,f_page+j); wr_lcd (0,1,comm,f_row); wr_lcd (0,1,comm,f_line+k*8-56); for(i=0;i<8;i++) wr_lcd (0,1,data,eng[k*32+j*8+i]); } } } //*--------------寫點陣------------------*/ void wrlattice (uCHAR data1,uCHAR data2) { uCHAR i,j; for(j=0;j<4;j++) { wr_lcd (1,1,comm,f_page+j); wr_lcd (1,1,comm,f_row); wr_lcd (1,1,comm,f_line); for(i=0;i<61;i=i+2) { wr_lcd (1,1,data,data1); wr_lcd (1,1,data,data2); } } } void tmreset (void) // 發(fā)送復位和初始化 { unsigned int i; tem = 0; i = 103; while (i>0) i--; // 延時 tem = 1; i = 4; while (i>0) i--; } bit tmpread (void) &n |
| 2樓: | >>參與討論 |
| 作者: 碧溪 于 2005/10/22 22:07:00 發(fā)布:
有用過12232的朋友嗎?幫幫忙。 |
|
| 3樓: | >>參與討論 |
| 作者: fazi 于 2005/10/22 23:04:00 發(fā)布:
解決了嗎? 好象,直接寫其中的一個地址寄存器 ,,就可以. 也就是說每次在同樣的位置顯示溫度數據.. 偶疑惑的是: 難在那里呢>? |
|
| 4樓: | >>參與討論 |
| 作者: 碧溪 于 2005/10/23 20:34:00 發(fā)布:
我是不會,請多指教 |
|
| 5樓: | >>參與討論 |
| 作者: bbstom 于 2005/10/23 21:58:00 發(fā)布:
給一點建議. 碧溪樓主啊. 還是先GOOGLE一下吧. 參考一下別人的程序. " 程序是一次滿屏顯示 " --- 從您的程序上看不出來! 是不是刪了? 或是對滿屏理解錯誤. 把 '行' '列' 位置參數增加到顯示字符子程序里. 就可以在任意位置顯示單個ASC字符了. 這是你想要的功能. |
|
| 6樓: | >>參與討論 |
| 作者: 碧溪 于 2005/10/24 8:49:00 發(fā)布:
這一段是不是滿屏顯示? /*--------------顯示字符(8x16)---------------*/ void dispzf (uchar code *eng) { uchar i,j,k; for(k=0;k<7;k++)//顯示左邊 { for(j=0;j<4;j++) { wr_lcd (1,0,comm,f_page+j); wr_lcd (1,0,comm,f_row); wr_lcd (1,0,comm,f_line+5+k*8); for(i=0;i<8;i++) wr_lcd (1,0,data,eng[k*32+j*8+i]); } } for(k=7;k<14;k++)//顯示右邊 { for(j=0;j<4;j++) { wr_lcd (0,1,comm,f_page+j); wr_lcd (0,1,comm,f_row); wr_lcd (0,1,comm,f_line+k*8-56); for(i=0;i<8;i++) wr_lcd (0,1,data,eng[k*32+j*8+i]); } } } 這一段是不是滿屏顯示? |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |