本帖最后由 51黑ren 于 2015-12-23 15:06 編輯
液晶12864(KS0108主控)做動作顯示,74hc573 做擴展,三個按鍵,功能鍵,+ ,-。可調節組和各單元時間間隔。




下面是可調時控繼電器的51單片機程序源碼:- #include <reg52.h>
- #include <intrins.h>
- #include<string.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define lcd_bus P0
- #define date_bus P3
- /*************LCD接口定義*************/
- sbit rs=P2^0;
- sbit rw=P2^1;
- sbit e=P2^2;
- sbit cs1=P2^3;
- sbit cs2=P2^4;
- sbit rst=P2^5;
- /***************外擴輸出*************/
- sbit a573a=P1^0;
- sbit a573b=P1^1;
- sbit a573c=P1^2;
- /*********按鍵*****************/
- sbit gn=P1^4;
- sbit jia=P1^5;
- sbit jian=P1^6;
- /***************初始屏(工作)時顯示************/
- uchar code table1[][32]={
- //"第",
- 0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
- 0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
- 0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
- 0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,
- //"一",
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //"組",
- 0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
- 0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
- 0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
- 0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
- /*******框周圍亮中間黑**********/
- 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
- 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- //"第",
- 0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
- 0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
- 0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
- 0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,
- //"二",
- 0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,
- 0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x00,
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
- 0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00,
- //"組",
- 0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
- 0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
- 0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
- 0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
- /*******框周圍亮中間黑**********/
- 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
- 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
-
- //"第",
- 0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
- 0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
- 0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
- 0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,
- //"三",
- 0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,
- 0x84,0x84,0x84,0xC4,0x86,0x04,0x00,0x00,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
- //"組",
- 0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
- 0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
- 0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
- 0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
- /*******框周圍亮中間黑**********/
- 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
- 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
-
- //"第",
- 0x10,0x08,0x94,0x97,0x9C,0x96,0x94,0xF8,
- 0x97,0x94,0x9C,0x94,0xF6,0x04,0x00,0x00,
- 0x00,0x40,0x47,0x24,0x24,0x14,0x0C,0xFF,
- 0x04,0x04,0x24,0x44,0x44,0x3E,0x04,0x00,
- //"四",
- 0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,
- 0x04,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
- 0x00,0x7F,0x20,0x28,0x24,0x23,0x20,0x20,
- 0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00,
- //"組",
- 0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
- 0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
- 0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
- 0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
- /*******框周圍亮中間黑**********/
- 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
- 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
-
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /****************圓滅**********************************/
- 0xF0,0x1C,0x0C,0x06,0x02,0x01,0x01,0x01,
- 0x01,0x01,0x02,0x02,0x04,0x1C,0xF0,0xC0,
- 0x0F,0x38,0x30,0x60,0x40,0x80,0x80,0x80,
- 0x80,0x80,0x40,0x60,0x30,0x38,0x0F,0x03,
- /******框中間亮******/
- 0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,
- 0x00,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
- 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,
- /****************圓亮****************************/
- 0xC0,0xF0,0xF8,0xFC,0xFC,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFC,0xFC,0xF8,0xF0,0xC0,
- 0x03,0x0F,0x1F,0x3F,0x3F,0x7F,0x7F,0x7F,
- 0x7F,0x7F,0x7F,0x3F,0x3F,0x1F,0x0F,0x03,
-
- /***************調整時顯示***********************/
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //-- 圓 --
- 0x00,0xFE,0x02,0x82,0xBA,0xAA,0xAA,0xAA,
- 0xAA,0xAA,0xBA,0x82,0x02,0xFF,0x02,0x00,
- 0x00,0xFF,0x40,0x4F,0x60,0x50,0x48,0x46,
- 0x48,0x50,0x60,0x4F,0x40,0xFF,0x00,0x00,
- //-- 間 --
- 0x00,0xF8,0x01,0x02,0xF6,0x10,0x12,0x12,
- 0x12,0x12,0xFA,0x12,0x02,0xFF,0x02,0x00,
- 0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11,
- 0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00,
- //-- 隔 --
- 0x00,0xFE,0x22,0x5A,0x86,0x02,0x7A,0x4A,
- 0x4A,0x4A,0x4A,0x4A,0x7B,0x82,0x00,0x00,
- 0x00,0xFF,0x04,0x08,0x07,0xFF,0x09,0x0B,
- 0x0D,0x79,0x0D,0x4B,0x89,0x7F,0x01,0x00,
- //-- 調 --
- 0x20,0x21,0xE6,0x00,0x00,0xFE,0x82,0x92,
- 0x92,0xFE,0x92,0xD2,0x82,0xFF,0x02,0x00,
- 0x00,0x00,0x3F,0x90,0x48,0x3F,0x00,0x3E,
- 0x12,0x12,0x12,0x5E,0x80,0x7F,0x00,0x00,
- //-- 整 --
- 0x00,0x3A,0xAA,0x6A,0xFF,0x6A,0xAA,0x3A,
- 0x08,0xB7,0x44,0xA4,0x1C,0x06,0x04,0x00,
- 0x41,0x41,0x42,0x42,0x7B,0x42,0x42,0x7E,
- 0x4B,0x4A,0x4A,0x4A,0x43,0x61,0x41,0x00,
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //-- 組 --
- 0x20,0x30,0xAC,0x63,0x20,0x10,0x00,0xFC,
- 0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
- 0x22,0x67,0x22,0x12,0x12,0x52,0x40,0x7F,
- 0x44,0x44,0x44,0x44,0x7F,0x40,0x40,0x00,
- //-- 間 --
- 0x00,0xF8,0x01,0x02,0xF6,0x10,0x12,0x12,
- 0x12,0x12,0xFA,0x12,0x02,0xFF,0x02,0x00,
- 0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11,
- 0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00,
- //-- 隔 --
- 0x00,0xFE,0x22,0x5A,0x86,0x02,0x7A,0x4A,
- 0x4A,0x4A,0x4A,0x4A,0x7B,0x82,0x00,0x00,
- 0x00,0xFF,0x04,0x08,0x07,0xFF,0x09,0x0B,
- 0x0D,0x79,0x0D,0x4B,0x89,0x7F,0x01,0x00,
- //-- 調 --
- 0x20,0x21,0xE6,0x00,0x00,0xFE,0x82,0x92,
- 0x92,0xFE,0x92,0xD2,0x82,0xFF,0x02,0x00,
- 0x00,0x00,0x3F,0x90,0x48,0x3F,0x00,0x3E,
- 0x12,0x12,0x12,0x5E,0x80,0x7F,0x00,0x00,
- //-- 整 --
- 0x00,0x3A,0xAA,0x6A,0xFF,0x6A,0xAA,0x3A,
- 0x08,0xB7,0x44,0xA4,0x1C,0x06,0x04,0x00,
- 0x41,0x41,0x42,0x42,0x7B,0x42,0x42,0x7E,
- 0x4B,0x4A,0x4A,0x4A,0x43,0x61,0x41,0x00,
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- //
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };
- /************定義變量******************/
- uchar sj,sk=1,on,gnb;
- uint mm,miao,zuj=40,yuanj=20;
- uint fzg,zjg=0;
- uint yjiab=3,zjiab=3;
- uchar ja=0,tt,ti;
- /*******毫秒延時************/
- void delay(uint a)
- {
- uint x,y;
- for(x=0;x<a;x++)
- for(y=0;y<110;y++);
- }
- /***********延時*************/
- void delayy()
- {
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- /************測忙**************/
- void lcd_busm()
- {
- uchar temp;
- do
- {
- temp=0x80;
- rs=0;
- _nop_();
- _nop_();
- _nop_();
- rw=1;
- e=1;
- temp=lcd_bus;
- _nop_();
- _nop_();
- _nop_();
- e=0;
- } while((temp&0x80)==0x80);
- }
- /***********寫指令********************/
- void send_comm(uchar comm)
- {
- lcd_busm();
- rs=0;
- delayy();
- rw=0;
- lcd_bus=comm;
- delayy();
- e=1;
- delayy();
- e=0;
- }
- /************寫數據********************/
- void send_data(uchar date)
- {
- lcd_busm();
- rs=1;
- delayy();
- rw=0;
- delayy();
- lcd_bus=date;
- delayy();
- e=1;
- delayy();
- e=0;
- }
- /*************選屏****************/
- void csp(uchar a)
- {
- switch(a)
- {
- case 0:
- {
- cs1=1;
- cs2=1;
- break;
- }
- case 1:
- {
- cs1=1;
- cs2=0;
- break;
- }
- case 2:
- {
- cs1=0; delayy();
- cs2=1;
- break;
- }
- default: break;
- }
- }
- /**********初始化*****************/
- void init()
- {
- rst=0;
- delay(150);
- rst=1;
- delay(100);
- csp(0);
- send_comm(0x3f);
- delayy();
- send_comm(0xc0);
- a573a=0;
- a573b=0;
- a573c=0;
- }
- /**************定時器初始化**************/
- void time()
- {
- TMOD=0x11;
- TH0=0x3c;
- TL0=0xb0;
- TH1=0X3C;
- TL1=0XB0;
- EA=1;
- ET0=1;
- ET1=1;
- TR0=1;
- TR1=1;
- }
- /***********設置頁地址*************/
- void x_page(uchar x)
- {
- send_comm(0xb8+x);
- delayy();
- }
- /************設置列地址***********/
- void y_line(uchar y)
- {
- send_comm(0x40+y);
- delayy();
- }
- /************設置行地址***********/
- void z_hang(uchar z)
- {
- send_comm(0xc0+z);
- delayy();
- }
- /*************清空顯示內存***********/
- void clean()
- {
- uchar i,j,k;
- for(i=0;i<8;i++)
- {
- csp(0);
- y_line(0);
- delayy();
- x_page(i);
- delayy();
-
- csp(1);
- for(j=0;j<64;j++)
- {
- send_data(0x00);
- }
- delayy();
- csp(2);
- for(k=64;k<128;k++)
- {
- send_data(0x00);
- }
- }
- }
- /****************頁和列地址*****************/
- void write_x_y(uchar x,y)
- {
- x_page(x);
- y_line(y);
- }
- /**************指定位置寫漢字****************/
- void write_zf(uchar a,b,c )
- {
- uchar k,m;
- write_x_y(a,b); //寫頁和列地址是字的上半
- for(k=0;k<16;k++)
- {
- send_data(table1[c][k]);
- }
- delayy();
- write_x_y(a+1,b); //寫頁和列地址是字的下半
- for(m=16;m<32;m++)
- {
- send_data(table1[c][m]);
- }
- }
- /*****************指定位置寫字ASCII*************/
- void write_ascii(uchar a,b,c )
- {
- uchar k,m;
- write_x_y(a,b);
- for(k=0;k<8;k++)
- {
- send_data(table1[c][k]);
- }
- delayy();
- write_x_y(a+1,b);
- for(m=8;m<16;m++)
- {
- send_data(table1[c][m]);
- }
- }
- /***************滿行寫字***************/
- void write_mh(uchar a,b,c) //(頁,列 ,字)
- {
- uchar i,d;
- csp(1);
- for(i=0;i<4;i++)
- {
- write_zf(a,b+i*16,c++);
- }
- csp(2); delayy();
- for(d=0;d<4;d++)
- {
- write_zf(a,b+d*16,c++);
- }
-
- }
- /*************滿屏寫字***************/
- void write_mp(uchar zi)
- {
- uchar i;
- for(i=0;i<4;i++)
- {
- write_mh(i+1*i,0,i*8+zi); //(頁,列,字)
-
- }
- }
- /***********間隔輸出口動作,液晶指示狀態變化***************/
- void yx()
- {
- switch(zjg)
- {
- case 0: a573a=1;
- a573b=1;
- a573c=1;
- date_bus=0x00;
- a573a=0;
- a573b=0;
- a573c=0;
- a573a=1; date_bus=0x01;
- csp(1);
- write_zf(6,48,27);
- write_zf(0,48,32);
- on=1;
- if(fzg==1)
- {
- date_bus=date_bus|0x02;
- csp(2);
- write_zf(0,0,33);
- delay(100);
- date_bus=0x01;
- write_zf(0,0,31);
- }
- if(fzg==2)
- {
- date_bus=date_bus|0x04;
- csp(2);
- write_zf(0,16,33);
- delay(100);
- date_bus=0x01;
- write_zf(0,16,31);
- }
- if(fzg==3)
- {
- date_bus=date_bus|0x08;
- csp(2);
- write_zf(0,32,33);
- delay(100);
- date_bus=0x01;
- write_zf(0,32,31);
- }
- if(fzg==4)
- {
- date_bus=date_bus|0x10;
- csp(2);
- write_zf(0,48,33);
- delay(100);
- date_bus=0x01;
- write_zf(0,48,31);
- if(fzg>4)
- {
- on=0;
- fzg=0;
- while(zjg==0);
- }
- }
- break;
- case 1: on=1;
- if(fzg<3)
- {
- a573a=1; date_bus=0x20;
- }
- csp(1);
- write_zf(0,48,27);
- write_zf(2,48,32);
- if(fzg==1)
- {
- date_bus=date_bus|0x40;
- csp(2);
- write_zf(2,0,33);
- delay(100);
- date_bus=0x20;
- write_zf(2,0,31);
- }
- if(fzg==2)
- {
- date_bus=date_bus|0x80;
- csp(2);
- write_zf(2,16,33);
- delay(100);
- date_bus=0x20;
- write_zf(2,16,31);
- }
- if(fzg==3)
- {
- a573a=0;
- date_bus=0x00;
- a573b=1; delay(5);
- date_bus=0x01;
- csp(2);
- write_zf(2,32,33);
- delay(100);
- date_bus=0x00;
- write_zf(2,32,31);
- }
- if(fzg==4)
- { a573c=0;
- a573a=0;delay(2);
- a573b=1;
- date_bus=0x02;
- csp(2);
- write_zf(2,48,33);
- delay(100);
- date_bus=0x00;
- write_zf(2,48,31);
- }
- if(fzg>4)
- {
- on=0;
- fzg=0;
- while(zjg==1);
- }
- break;
- case 2: on=1;
- a573b=0; delay(5); date_bus=0x00;
- a573a=1; delay(5);
- a573a=0; a573b=1; csp(1);
- date_bus=0x04;
- write_zf(2,48,27);
- write_zf(4,48,32);
- csp(2);
- if(fzg==1)
- {
- date_bus=0x04|0x08;
- write_zf(4,0,33);
- delay(100);
- date_bus=0x04;
- write_zf(4,0,31);
- }
- if(fzg==2)
- {
- date_bus=0x04|0x10;
- write_zf(4,16,33);
- delay(100);
- date_bus=0x04;
- write_zf(4,16,31);
- }
- if(fzg==3)
- {
- date_bus=0x04|0x20;
- write_zf(4,32,33);
- delay(10);
- date_bus=0x04;
- write_zf(4,32,31);
- }
- if(fzg==4)
- {
- date_bus=0x04|0x40;
- write_zf(4,48,33);
- delay(100);
- date_bus=0x04;
- write_zf(4,48,31);
- }
- if(fzg>4)
- {
- on=0;
- fzg=0;
- while(zjg==2);
- }
- break;
- case 3 : on=1;
- date_bus=0x80;
- a573b=0;
- a573c=1;
- csp(1);
- write_zf(4,48,27);
- write_zf(6,48,32);
- csp(2);
- if(fzg==1)
- {
- date_bus=0x01;
- write_zf(6,0,33);
- delay(100);
- date_bus=0x00;
- write_zf(6,0,31);
- }
- if(fzg==2)
- {
- date_bus=0x02;
- write_zf(6,16,33);
- delay(100);
- date_bus=0x00;
- write_zf(6,16,31);
- }
- if(fzg==3)
- {
- date_bus=0x04;
- write_zf(6,32,33);
- delay(100);
- date_bus=0x00;
- write_zf(6,32,31);
- }
- if(fzg==4)
- {
- date_bus=0x08;
- write_zf(6,48,33);
- delay(100);
- date_bus=0x00;
- write_zf(6,48,31);
-
- }
- if(fzg>4)
- {
- on=0;
- fzg=0;
-
- while(zjg==3);
- }
- break;
- }
- }
- /****************按鍵檢測****************/
- void keyscan()
- {
- if(gn==0)
- {
- delay(5);
- if(gn==0)
- {
- gnb++;
- while(!gn);
- if(gnb>3)gnb=0;
- }
- }
- if(jia==0)
- {
- delay(5);
- if(jia==0)
- { if(gnb==1)
- {
- yjiab++;
- if(yjiab>=7)
- yjiab=7;
- while(!jia);
- }
- if(gnb==2)
- {
- zjiab++;
- if(zjiab>=7)
- zjiab=7;
- while(!jia);
- }
- }
- }
- if(jian==0)
- {
- delay(10);
- if(jian==0)
- {
- if(gnb==1)
- {
- yjiab--;
- if(yjiab<0)
- {
- yjiab=0;
- }
- while(!jian);
- }
- if(gnb==2)
- {
- zjiab--;
- if(zjiab<0)
- {
- zjiab=0;
- }
- while(!jian);
- }
- }
- }
- }
- /**************時間調整****************/
- void tiaozhen()
- {
-
- if(gnb==1&ti)
- {
-
- clean();
- write_mh(0,0,34);
-
- switch(yjiab)
- {
- case 0: csp(1);
- write_zf(4,0,33);
- yuanj=2;
- break;
- case 1: csp(1);
- write_zf(4,0,33);
- write_zf(4,16,33);
- yuanj=5;
- break;
- case 2: csp(1);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- yuanj=10;
- break;
- case 3: csp(1);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- write_zf(4,48,33);
- yuanj=20;
- break;
- case 4: csp(1);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- write_zf(4,48,33);
- csp(2);
- write_zf(4,0,33);
- yuanj=30;
- break;
- case 5: csp(1);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- write_zf(4,48,33);
- csp(2);
- write_zf(4,0,33);
- write_zf(4,16,33);
- yuanj=40;
- break;
- case 6: csp(1);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- write_zf(4,48,33);
- csp(2);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- yuanj=50;
- break;
- case 7: csp(1);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- write_zf(4,48,33);
- csp(2);
- write_zf(4,0,33);
- write_zf(4,16,33);
- write_zf(4,32,33);
- write_zf(4,48,33);
- yuanj=60;
-
- break;
- }
-
- }
- if(gnb==2&ti)
- {
- clean();
- write_mh(0,0,42);
-
- switch(zjiab)
- {
- case 0: csp(1);
- write_zf(4,0,32);
- zuj=2;
- break;
- case 1: csp(1);
- write_zf(4,0,32);
- write_zf(4,16,32);
- zuj=5;
- break;
- case 2: csp(1);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- zuj=10;
- break;
- case 3: csp(1);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- write_zf(4,48,32);
- zuj=20;
- break;
- case 4: csp(1);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- write_zf(4,48,32);
- csp(2);
- write_zf(4,0,32);
- zuj=30;
- break;
- case 5: csp(1);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- write_zf(4,48,32);
- csp(2);
- write_zf(4,0,32);
- write_zf(4,16,32);
- zuj=40;
- break;
- case 6: csp(1);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- write_zf(4,48,32);
- csp(2);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- zuj=50;
- break;
- case 7: csp(1);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- write_zf(4,48,32);
- csp(2);
- write_zf(4,0,32);
- write_zf(4,16,32);
- write_zf(4,32,32);
- write_zf(4,48,32);
- zuj=60;
- break;
- }
- }
- if(gnb==3)
- {
- gnb=0;
- sk=1;
- }
- }
- /***********主程序*********************/
-
- void main()
- {
-
- time();
- while(1)
- {
- keyscan();
- tiaozhen();
- if(gnb==0)
- {
- while(sk)
- {
- init();
- clean();
- write_mp(ja);
- }
- yx();
- }
- }
- }
- /****************時間中斷***********/
- void time0()interrupt 1
- {
- TH0=0x3c;
- TL0=0xb0;
- sj++;
- if(sj>=5)
- {
- sj=0;
- sk=0;
- }
- mm++;
- if((yuanj*5+zuj)<=mm)
- {
- zjg++;
- if(zjg>3)
- zjg=0;
- mm=0;
- }
-
- }
- void time1()interrupt 3
- {
- TH1=0X3C;
- TL1=0XB0;
- if(on==1)
- miao++;
- if(yuanj<=miao)
- {
- fzg++;
- if(fzg>5)
- fzg=0;
- miao=0;
- }
- tt++;
- if(tt>=1)
- {
- tt=0;
- ti=!ti;
- }
- }
復制代碼
|