|
發布時間: 2021-3-14 17:58
正文摘要:看大家做的數碼時鐘很漂亮,剛好有一塊閑置的240128液晶屏,想著利用起來,然后找屏的資料,廠家什么的都找不到,反正是T6963的,應該差不多,就按照壇友華仔的24064程序改了,苦于完全不懂編程,只有邊改邊仿真測試 ... |
| FS:字體選擇,H:6X8點,L:8X8點 fs要接低電平 |
|
幾年前在黃魚淘了一片T6963的240128顯示屏,在網上找了很多的資料,終于成功點亮了。
目前該顯示屏已做成時鐘,至今運行正常。 |
| 想問一個,是240128 ,還是24064 |
| 設置一個定時器, 用來定時按鍵掃描,和LCD刷新時間。上面這個main主程序直接就是循環讀寫,是不行的。 |
|
我好像看過能顯示的貼子 樓主使用的是STC89單片機嗎?我記得帖子里面寫的是要使用12系列 |
|
這個程序錯誤太多,秒走的時快時慢,最長2.5秒動一下,按鍵也不起作用,時的累計到23點完了是12點然后才一點,沒什么實用價值,還是放棄了算了,那個大哥能給個好用的8k內的240128程序嗎 |
|
這樣貼上來行不行???? #include <reg52.h> //#include <intrins.h> #include <math.h> //#define nop() _nop_() #define uchar unsigned char #define uint unsigned int //1. FG:液晶邊框引出端,應該接地 //2. VSS:邏輯電源地,接電源的負極 //3. VDD:邏輯電源正,接電源的正極 //4. V0:LCD驅動電壓輸入端,可通過滑動變阻器接到電源正極上,改變電阻大小來改變液晶對比度 sbit LCDWR =P3^1;//5. /WR:寫數據信號,上升沿鎖存 sbit LCDRD =P3^2;//6. /RD:讀數據信號,上升沿鎖存 sbit LCDCE =P3^4;//7. /CE:LCD選通信號,低電平有效 sbit LCDCD =P3^3;//8. C/D:命令/數據:高電平為命令,低電平為數據 //9.:暫時沒用 sbit LCDRST =P3^5;//10. /RST:復位信號,低電平有效 #define lcd_bus P0//11-18. DB0-DB7 :8位數據總線 //19. FS:字體選擇,H:6X8點,L:8X8點 //20. VEE //21. LEDA:背光電源正極 //22. LEDK:背光電源負極 sbit DQ18B20=P1^3;//ds18b20與單片機連接口 sbit acc0=ACC^0; //移位時的第0位 sbit acc7=ACC^7; //移位時用的第7位 sbit DATA1302=P1^5; //時鐘數據接口 sbit RST1302=P1^6; sbit SCLK1302=P1^4; sbit menu=P3^0; //菜單 sbit add=P3^1; //加一 sbit dec=P3^2; //減一 uchar second,minute,hour,day,month,year,week,count=0; uchar ReadValue,num,time; uint tvalue;//溫度值 uchar tflag; //---- LCD PIXEL SETTING ------------------------------------------------------ #define PIXELH 128 #define PIXELW 240 //------------------------------------------------------------------------------- unsigned char code tab1[]=//16x16的漢字或者圖片[取模方式]從左到右從上到下 :橫向8點左高位 { 0x08,0x00,0x0F,0xFC,0x10,0x80,0x10,0x80,0x20,0x80,0x4F,0xF8,0x88,0x80,0x08,0x80, 0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,//年",0 0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10, 0x07,0xF0,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20,0x00,0x00,//月",1 0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,//日",2 0x00,0x00,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x01,0x00,0x11,0x00, 0x1F,0xFC,0x21,0x00,0x21,0x00,0x4F,0xF8,0x01,0x00,0x01,0x00,0x7F,0xFE,0x00,0x00,//星",3 0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x3E,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44, 0x22,0x44,0xFF,0x7C,0x00,0x44,0x24,0x84,0x22,0x84,0x43,0x14,0x81,0x08,0x00,0x00,//期",4 0x01,0xC0,0x02,0x20,0x02,0xE0,0x02,0x20,0x02,0xE0,0x02,0x20,0x02,0xE0,0x02,0x20, 0x02,0xE0,0x02,0x20,0x0F,0xF8,0x0F,0xF8,0x07,0xF0,0x03,0xE0,0x01,0xC0,0x00,0x00,//"溫度計符號",5 0x00,0x00,0x00,0x00,0x78,0x00,0x48,0xFC,0x49,0x04,0x79,0x04,0x02,0x00,0x02,0x00, 0x02,0x00,0x02,0x00,0x02,0x04,0x01,0x04,0x01,0x08,0x00,0xF0,0x00,0x00,0x00,0x00,//"℃,6 0x00,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x05,0xC0,0x04,0x40,0x05,0xC0,0x04,0x40, 0x05,0xC0,0x04,0x40,0x05,0xC0,0x04,0x40,0x0F,0xE0,0x07,0xC0,0x03,0x80,0x01,0x00,//溫度計的圖片,7 }; unsigned char code tab2[]=//8x16的字符 { 0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//0",0 0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,//1",1 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,//2",2 0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//3",3 0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,//4",4 0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,//5",5 0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,//6",6 0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,//7",7 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,//8",8 0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,//9",9 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,//.",10 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//負號,11 0x00,0x00,0x00,0x00,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,//正號,12 }; unsigned char code tab3[]=//32x64的手繪數字(3264) { 0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0, 0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x07,0xFE,0x7F,0xC0,0x07,0xFE,0x7F,0xC0,0x0F,0xFE,0x7F,0xC0,0x0F,0xFE, 0x7F,0xC0,0x1B,0xFE,0x7F,0xC0,0x1B,0xFE,0x7F,0xC0,0x33,0xFE,0x7F,0xC0,0x33,0xFE, 0x7F,0xC0,0x63,0xFE,0x7F,0xC0,0x63,0xFE,0x7F,0xC0,0xC3,0xFE,0x7F,0xC0,0xC3,0xFE, 0x7F,0xC1,0x83,0xFE,0x7F,0xC1,0x83,0xFE,0x7F,0xC3,0x03,0xFE,0x7F,0xC3,0x03,0xFE, 0x7F,0xC6,0x03,0xFE,0x7F,0xC6,0x03,0xFE,0x7F,0xCC,0x03,0xFE,0x7F,0xCC,0x03,0xFE, 0x7F,0xD8,0x03,0xFE,0x7F,0xD8,0x03,0xFE,0x7F,0xF0,0x03,0xFE,0x7F,0xF0,0x03,0xFE, 0x7F,0xE0,0x03,0xFE,0x7F,0xE0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8, 0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00, //0 0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0xFF,0xFC,0x00, 0x0F,0xFF,0xFC,0x00,0x0F,0xFF,0xFC,0x00,0x0F,0xFF,0xFC,0x00,0x0F,0xFF,0xFC,0x00, 0x0F,0xFF,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00, 0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,//:\字模\32-64用\1.BMP 0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0, 0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x00,0x00,0x07,0xFE,0x00,0x00,0x0F,0xFE,0x00,0x00,0x1F,0xFE, 0x00,0x00,0x3F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFC,0x00,0x01,0xFF,0xF8, 0x00,0x03,0xFF,0xF0,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xC0,0x00,0x1F,0xFF,0x80, 0x00,0x3F,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFC,0x00,0x01,0xFF,0xF8,0x00, 0x03,0xFF,0xF0,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xC0,0x00,0x1F,0xFF,0x80,0x00, 0x3F,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFC,0x00,0x00,0x7F,0xF8,0x00,0x00, 0x7F,0xF0,0x00,0x00,0x7F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00, 0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,//2 0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0, 0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x00,0x00,0x03,0xFE, 0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xFE,0x00,0x00,0x0F,0xFC,0x00,0xFF,0xFF,0xF8, 0x00,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xF0, 0x00,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFE, 0x00,0x00,0x0F,0xFE,0x00,0x00,0x07,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE, 0x00,0x00,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8, 0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//3 0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0, 0x00,0x00,0x7F,0xE0,0x00,0x00,0x7F,0xE0,0x00,0x00,0xFF,0xE0,0x00,0x00,0xFF,0xE0, 0x00,0x01,0xFF,0xE0,0x00,0x01,0xFF,0xE0,0x00,0x03,0xFF,0xE0,0x00,0x03,0xFF,0xE0, 0x00,0x07,0xFF,0xE0,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xE0,0x00,0x0F,0xFF,0xE0, 0x00,0x1F,0xFF,0xE0,0x00,0x1F,0xFF,0xE0,0x00,0x3F,0xFF,0xE0,0x00,0x3F,0xFF,0xE0, 0x00,0x7F,0xBF,0xE0,0x00,0x7F,0xBF,0xE0,0x00,0xFF,0x3F,0xE0,0x00,0xFF,0x3F,0xE0, 0x01,0xFE,0x3F,0xE0,0x01,0xFE,0x3F,0xE0,0x03,0xFC,0x3F,0xE0,0x03,0xFC,0x3F,0xE0, 0x07,0xF8,0x3F,0xE0,0x07,0xF8,0x3F,0xE0,0x0F,0xF0,0x3F,0xE0,0x0F,0xF0,0x3F,0xE0, 0x1F,0xE0,0x3F,0xE0,0x1F,0xE0,0x3F,0xE0,0x3F,0xC0,0x3F,0xE0,0x3F,0xC0,0x3F,0xE0, 0x7F,0x80,0x3F,0xE0,0x7F,0x80,0x3F,0xE0,0x7F,0x00,0x3F,0xE0,0x7F,0x00,0x3F,0xE0, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0, 0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0, 0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0, 0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,//F:\字模\32-64用\4-1.BMP 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00, 0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00, 0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00, 0x7F,0xCF,0xFF,0xC0,0x7F,0xDF,0xFF,0xE0,0x7F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF8, 0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE, 0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE, 0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8, 0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//5 0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0, 0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00, 0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00, 0x7F,0xDF,0xFF,0xC0,0x7F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF8, 0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8, 0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//6 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE, 0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC, 0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x1F,0xF0, 0x00,0x00,0x1F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0, 0x00,0x00,0x3F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0, 0x00,0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00, 0x00,0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00, 0x00,0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00, 0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x1F,0xF0,0x00, 0x00,0x1F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xE0,0x00, 0x00,0x3F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00, 0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,0x00, 0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00, 0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,//7 0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0, 0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFC, 0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xF0, 0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8, 0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00, //8 0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0, 0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xE0,0x07,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x3F,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFE, 0x03,0xFF,0xFB,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE, 0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xC0,0x03,0xFE, 0x7F,0xE0,0x07,0xFE,0x7F,0xF0,0x0F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE, 0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8, 0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,//9 }; uchar code tab4[]= //8x64的字符: { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x7E, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// }; uchar code tab5[]= //16x16,星期用 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//一",0 0x00,0x00,0x00,0x10,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,//二",1 0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,//三",2 0x00,0x00,0x7F,0xFC,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84, 0x48,0x84,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00,//四",3 0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x3F,0xF0, 0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0xFF,0xFE,0x00,0x00,0x00,0x00,//五",4 0x04,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x80, 0x06,0x40,0x04,0x20,0x08,0x10,0x08,0x18,0x10,0x0C,0x20,0x0C,0x40,0x08,0x00,0x00,//六",5 0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10, 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,//日",6 }; /*****************1ms延時函數****************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void delay1(uint z) //微秒延時 { for(;z>0;z--); } unsigned char rd_cmd6963(void) { unsigned char addr_st; LCDCD = 1; LCDWR = 1; LCDCE = 0; lcd_bus =0xff; addr_st = lcd_bus; LCDRD = 0; LCDRD = 1; LCDCE = 1; return(addr_st); } /*****************檢查忙狀態程序****************/ void chkbusy6963(void) { unsigned char busy; do { busy =!(rd_cmd6963() & 0x03); }while(busy); } /*****************寫數據****************/ void wr_dat6963(unsigned char datax) { chkbusy6963(); LCDCD = 0; LCDRD = 1; LCDCE = 0; lcd_bus = datax; LCDWR = 0; LCDWR = 1; LCDCE = 1; } /*****************寫命令****************/ void wr_cmd6963(unsigned char cmdx) { chkbusy6963(); LCDCD = 1; LCDRD = 1; LCDCE = 0; lcd_bus = cmdx; LCDWR = 0; LCDWR = 1; LCDCE = 1; } /*****************寫寄存器程序****************/ void wr_reg6963(unsigned char cmd,unsigned char dat1,unsigned char dat2) { wr_dat6963(dat1); wr_dat6963(dat2); wr_cmd6963(cmd); } //顯示指針,圖形模式graphics=1,文本模式graphics=0;X坐標x_axis,以8個像素為一個單位 //Y坐標y_axis,圖形模式以1個像素為單位,文本模式以8個像素為單位 void lcd_cursor6963(unsigned char graphics,unsigned char x_axis,unsigned char y_axis) { unsigned int tmp; if(graphics)tmp = y_axis*(PIXELW/8) + x_axis + 0x800; else tmp = y_axis*(PIXELW/8) + x_axis; wr_reg6963(0x24,(unsigned char)(tmp),(unsigned char)(tmp>>8)); wr_cmd6963(0xb0); } /*****************液晶屏初始化程序****************/ void init6963(void) { LCDRST =0; delay(100); LCDRST =1; wr_cmd6963(0xf0); //bit reset wr_reg6963(0x21,0x00,0x00); //光標地址設置 wr_reg6963(0x22,0x00,0x00); //CGRAM偏置地址設置 wr_reg6963(0x24,0x00,0x00); //顯示地址設置 wr_reg6963(0x40,0x00,0x00); //文本顯示區首地址 wr_reg6963(0x41,(unsigned char)(PIXELW/8),0x00); //文本顯示區寬度 wr_reg6963(0x42,0x00,0x08); //圖形顯示區首地址 wr_reg6963(0x43,(unsigned char)(PIXELW/8),0x00); //圖形顯示區寬度 wr_cmd6963(0x80); // OR mode wr_cmd6963(0x9c); //文本圖形開 wr_cmd6963(0xa0); //7line指針 } /*****************全屏顯示內容程序****************/ void lcd_showfull(unsigned char datx) { unsigned int i; lcd_cursor6963(0,0,0); for(i=0;i<((PIXELW/8)*(PIXELH/8));i++)wr_dat6963(0); wr_cmd6963(0xb2); lcd_cursor6963(1,0,0); for(i=0;i<((PIXELW/8)*PIXELH);i++)wr_dat6963(datx); wr_cmd6963(0xb2); //屏刷完后需要補上這句 } //顯示自定義16X16字符,x_axis為X軸,以8像素為單位,y_axis為Y軸,以1像素為單位 void lcd_defcharacter16x16(unsigned char x_axis,unsigned char y_axis,unsigned char ctnchar,unsigned char startchar,unsigned char code *text) {//ctnchar為要顯示的總字符數,startchar為自定義內碼的第幾個啟動顯示字符(即表格中的漢字),text為自定義的字符內碼 unsigned char line,ctn; text += startchar*32; for(ctn=0;ctnchar>0;ctnchar--,ctn+=2) { for(line=0;line<16;line++) { lcd_cursor6963(1,x_axis+ctn,y_axis+line); wr_dat6963(*(text++)); wr_dat6963(*(text++)); wr_cmd6963(0xb2); //屏刷完后需要補上這句 } } } //顯示自定義8X16字符,x_axis為X軸,以8像素為單位,y_axis為Y軸,以1像素為單位 void lcd_defcharacter8x16(unsigned char x_axis,unsigned char y_axis,unsigned char ctnchar,unsigned char startchar,unsigned char code *text) {//ctnchar為要顯示的總字符數,startchar為自定義內碼的第幾個啟動顯示字符(即表格中的漢字),text為自定義的字符內碼 unsigned char line,ctn; text=text + startchar*16; for(ctn=0;ctnchar>0;ctnchar--,ctn++) { for(line=0;line<16;line++) { lcd_cursor6963(1,x_axis+ctn,y_axis+line); wr_dat6963(*(text++)); wr_cmd6963(0xb2); //屏刷完后需要補上這句 } } } //顯示自定義32X64字符,x_axis為X軸,以8像素為單位,y_axis為Y軸,以1像素為單位 void lcd_defcharacter32x64(uchar x_axis,uchar y_axis,uchar ctnchar,uchar startchar,uchar code *text) {//ctnchar為要顯示的總字符數,startchar為自定義內碼的第幾個啟動顯示字符(即表格中的漢字),text為自定義的字符內碼 uchar line,ctn; text=text+startchar*256; //256是字符表中一個字的碼數 for(ctn=0;ctnchar>0;ctnchar--,ctn=ctn+4) { for(line=0;line<64;line++) { lcd_cursor6963(1,x_axis+ctn,y_axis+line);// wr_dat6963(*(text++));//這一段是豎刷次數32/8=4次。四條 wr_dat6963(*(text++)); wr_dat6963(*(text++)); wr_dat6963(*(text++)); wr_cmd6963(0xb2); //復位自動讀寫模式,屏刷完后需要補上這句 } } } //顯示自定義8X64字符(:),x_axis為X軸,以8像素為單位,y_axis為Y軸,以1像素為單位 void lcd_defcharacter8x48(uchar x_axis,uchar y_axis,uchar ctnchar,uchar startchar,uchar code *text) { //ctnchar為要顯示的總字符數 //startchar為自定義內碼的第幾個啟動顯示字符(即表格中的漢字) //text為自定義的字符內碼 uchar line,ctn; text=text+startchar*64; // for(ctn=0;ctnchar>0;ctnchar--,ctn=ctn+2) { for(line=0;line<64;line++) { lcd_cursor6963(1,x_axis+ctn,y_axis+line);// wr_dat6963(*(text++)); wr_cmd6963(0xb2); //復位自動讀寫模式,屏刷完后需要補上這句 } } } void Write1302(uchar dat) //1302寫 { uchar i; SCLK1302=0; //拉低SCLK,為脈沖上升沿寫入數據做好準備 delay1(2); //稍微等待,使硬件做好準備 for(i=0;i<8;i++) //連續寫8個二進制位數據 { DATA1302=dat&0x01; //取出dat的第0位數據寫入1302 delay(2); //稍微等待,使硬件做好準備 SCLK1302=1; //上升沿寫入數據 delay1(2); //稍微等待,使硬件做好準備 SCLK1302=0; //重新拉低SCLK,形成脈沖 dat>>=1; //將dat的各數據位右移1位,準備寫入下一個數據位 } } void WriteSet1302(uchar Cmd,uchar dat) { RST1302=0; //禁止數據傳遞 SCLK1302=0; //確保寫數居前SCLK被拉低 RST1302=1; //啟動數據傳輸 delay1(2); //稍微等待,使硬件做好準備 Write1302(Cmd); //寫入命令字 Write1302(dat); //寫數據 SCLK1302=1; //將時鐘電平置于已知狀態 RST1302=0; //禁止數據傳遞 } uchar Read1302(void) { uchar i,dat; delay(2); //稍微等待,使硬件做好準備 for(i=0;i<8;i++) //連續讀8個二進制位數據 { dat>>=1; //將dat的各數據位右移1位,因為先讀出的是字節的最低位 if(DATA1302==1) //如果讀出的數據是1 dat|=0x80; //將1取出,寫在dat的最高位 SCLK1302=1; //將SCLK置于高電平,為下降沿讀出 delay1(2); //稍微等待 SCLK1302=0; //拉低SCLK,形成脈沖下降沿 delay1(2); //稍微等待 } return dat; //將讀出的數據返回 } uchar ReadSet1302(uchar Cmd) { uchar dat; RST1302=0; //拉低RST SCLK1302=0; //確保寫數居前SCLK被拉低 RST1302=1; //啟動數據傳輸 Write1302(Cmd); //寫入命令字 dat=Read1302(); //讀出數據 SCLK1302=1; //將時鐘電平置于已知狀態 RST1302=0; //禁止數據傳遞 return dat; //將讀出的數據返回 } void Init_DS1302(void) { WriteSet1302(0x8E,0x00);//根據寫狀態寄存器命令字,寫入不保護指令 WriteSet1302(0x80,0x00);//根據寫秒寄存器命令字,寫入秒的初始值 WriteSet1302(0x82,0x30);//根據寫分寄存器命令字,寫入分的初始值 WriteSet1302(0x84,0x20);//根據寫小時寄存器命令字,寫入小時的初始值 WriteSet1302(0x86,0x13);//根據寫日寄存器命令字,寫入日的初始值 WriteSet1302(0x88,0x03);//根據寫月寄存器命令字,寫入月的初始值 WriteSet1302(0x8c,0x21);//根據寫年寄存器命令字,寫入年的初始值 WriteSet1302(0x8a,0x06);//根據寫星期寄存器命令字,寫入星期的初始值 } void DisplaySecond(uchar x) { uchar i,j; i=x/10; j=x%10; lcd_defcharacter24x48(22,18,1,i,tab3);//顯示秒的十位tab3是24*48數字 lcd_defcharacter24x48(26,18,1,j,tab3);//顯示秒的個位 } void DisplayMinute(uchar x) { uchar i,j; i=x/10; j=x%10; lcd_defcharacter24x48(11,18,1,i,tab3);//顯示分鐘的十位 lcd_defcharacter24x48(15,18,1,j,tab3);//顯示分鐘的個位 } void DisplayHour(uchar x) { uchar i,j; i=x/10; j=x%10; lcd_defcharacter24x48(0,18,1,i,tab3);//顯示小時的十位 lcd_defcharacter24x48(4,18,1,j,tab3);//顯示小時的個位 } void DisplayDay(uchar x) { uchar i,j; i=x/10; j=x%10; lcd_defcharacter8x16(10,0,1,i,tab2);//顯示 日的十位tab2是8*16字符數字,帶+-號 lcd_defcharacter8x16(11,0,1,j,tab2);//顯示 日的個位 } void DisplayMonth(uchar x) { uchar i,j; i=x/10; j=x%10; lcd_defcharacter8x16(6,0,1,i,tab2);//顯示 月的十位 lcd_defcharacter8x16(7,0,1,j,tab2);//顯示 月的個位 } void DisplayYear(uchar x) { uchar i,j; i=x/10; j=x%10; lcd_defcharacter8x16(2,0,1,i,tab2);//顯示 年的十位 lcd_defcharacter8x16(3,0,1,j,tab2);//顯示 年的個位 } void DisplayWeek(uchar x) { lcd_defcharacter16x16(19,0,1,x-1,tab5);//顯示,tab5是星期用字庫 } void read_date(void) { ReadValue = ReadSet1302(0x81); second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x83); minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x85); hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x87); day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x89); month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = ReadSet1302(0x8d); year=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue=ReadSet1302(0x8b); //讀星期 week=ReadValue&0x07; DisplaySecond(second); DisplayMinute(minute); DisplayHour(hour); DisplayDay(day); DisplayMonth(month); DisplayYear(year); DisplayWeek(week); } void turn_val(char newval,uchar flag,uchar newaddr,uchar s1num) { newval=ReadSet1302(newaddr); //讀取當前時間 newval=((newval&0x70)>>4)*10+(newval&0x0f); //將bcd碼轉換成十進制 if(flag) //判斷是加一還是減一 { newval++; switch(s1num) { case 1: if(newval>99) newval=0; DisplayYear(newval); break; case 2: if(newval>12) newval=1; DisplayMonth(newval); break; case 3: if(newval>31) newval=1; DisplayDay(newval); break; case 4: if(newval>6) newval=0; DisplayWeek(newval); break; case 5: if(newval>23) newval=0; DisplayHour(newval); break; case 6: if(newval>59) newval=0; DisplayMinute(newval); break; case 7: if(newval>59) newval=0; DisplaySecond(newval); break; default:break; } } else { newval--; switch(s1num) { case 1: if(newval==0) newval=99; DisplayYear(newval); break; case 2: if(newval==0) newval=12; DisplayMonth(newval); break; case 3: if(newval==0) newval=31; DisplayDay(newval); break; case 4: if(newval<0) newval=6; DisplayWeek(newval); break; case 5: if(newval<0) newval=23; DisplayHour(newval); break; case 6: if(newval<0) newval=59; DisplayMinute(newval); break; case 7: if(newval<0) newval=59; DisplaySecond(newval); break; default:break; } } WriteSet1302((newaddr-1),((newval/10)<<4)|(newval%10)); //將新數據寫入寄存器 } void delay_18B20(unsigned int i)//延時1微秒 { while(i--); } void ds1820rst()/*ds1820復位*/ { unsigned char x=0; DQ18B20 = 1; //DQ復位 delay_18B20(4); //延時 DQ18B20 = 0; //DQ拉低 delay_18B20(100); //精確延時大于480us DQ18B20 = 1; //拉高 delay_18B20(40); } uchar ds1820rd()/*讀數據*/ { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ18B20 = 0; //給脈沖信號 dat>>=1; DQ18B20 = 1; //給脈沖信號 if(DQ18B20) dat|=0x80; delay_18B20(10); } return(dat); } void ds1820wr(uchar wdata)/*寫數據*/ { unsigned char i=0; for (i=8; i>0; i--) { DQ18B20 = 0; DQ18B20 = wdata&0x01; delay_18B20(10); DQ18B20 = 1; wdata>>=1; } } read_temp()/*讀取溫度值并轉換*/ { uchar a,b; ds1820rst(); ds1820wr(0xcc);//*跳過讀序列號*/ ds1820wr(0x44);//*啟動溫度轉換*/ ds1820rst(); ds1820wr(0xcc);//*跳過讀序列號*/ ds1820wr(0xbe);//*讀取溫度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else { tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數 return(tvalue); } void ds1820disp()//溫度值顯示 { lcd_defcharacter8x16(24,0,1,(tvalue%1000/100),tab2);//顯示 溫度的十位 lcd_defcharacter8x16(25,0,1,(tvalue%1000%100/10),tab2);//顯示 溫度的個位 lcd_defcharacter8x16(27,0,1,(tvalue%1000%100%10),tab2);//顯示 溫度的小數 if(tflag==0) lcd_defcharacter8x16(23,0,1,12,tab2);//顯示溫度的+號 else lcd_defcharacter8x16(23,0,1,11,tab2);//顯示溫度顯-號 } main() { lcd_showfull(0); //清屏 init6963(); //初始化 Init_DS1302(); //初始化1302 lcd_defcharacter8x16(0,0,1,2,tab2);//顯示 2-固定顯示 lcd_defcharacter8x16(1,0,1,0,tab2);//顯示 0-固定顯示 lcd_defcharacter16x16(4,0,1,0,tab1);//顯示 年-固定顯示 lcd_defcharacter16x16(8,0,1,1,tab1);//顯示 月-固定顯示 lcd_defcharacter16x16(12,0,1,2,tab1);//顯示 日-固定顯示 lcd_defcharacter16x16(15,0,1,3,tab1);//顯示 星-固定顯示 lcd_defcharacter16x16(17,0,1,4,tab1);//顯示 期-固定顯示 lcd_defcharacter16x16(21,0,1,7,tab1);//顯示 -固定顯示溫度計圖片 lcd_defcharacter8x16(26,0,1,10,tab2);//顯示 -固定顯示小數點. lcd_defcharacter16x16(28,0,1,6,tab1);//顯示 -固定顯示攝氏度圖片 lcd_defcharacter8x48(9,18,1,0,tab4);//顯示-固定顯示:(前兩點) lcd_defcharacter8x48(20,18,1,0,tab4);//顯示-固定顯示:(后兩點) //lcd_defcharacter16x16(21,16,2,17,tab1);//顯示農歷兩個字 //lcd_defcharacter16x16(25,16,1,19,tab1);//顯示羊字 //lcd_defcharacter16x16(27,16,1,20,tab1);//顯示年字 while(1) { read_date(); read_temp();//讀取溫度 ds1820disp();//顯示 } } |