热门搜索 :
考研考公
您的当前位置:首页正文

旋转led灯源代码

来源:伴沃教育


#include #include

#define uchar unsigned char #define uint unsigned int uchar Disp_Line;

/***********************************************************************/ //时间定义

/***********************************************************************/ uchar Time_H; //时钟\"时\"(0~23) uchar Time_M; //时钟\"分\"(0~59) uchar Time_S; //时钟\"秒\"(0~59)

uchar Time_ms; //时钟\"毫秒\"(0~49) (每过20ms,+1) uchar Timer1_JSQ;

/***********************************************************************/ //指针定位

/***********************************************************************/ uchar H_Line; //时针定位(0~179) uchar M_Line; //分针定位(0~179) uchar S_Line; //秒针定位(0~179) uchar Disp_time_set; //定时器赋初值 uchar Disp_buffer[10];

/***********************************************************************/ //标志位定义

/***********************************************************************/ bit T20ms_flag; //20毫秒定时溢出标志(0=未溢出,1=溢出) bit New_disp_flag; //显示刷新使能标志(0=禁止,1=使能) uchar SET_EN_FLAG; uchar Disp_mode; uchar speednow,speed; uchar k,l,m; uint Mode_J;

/***********************************************************************/ //显示段码表(模拟表盘)(7*7)

/***********************************************************************/ uchar code LED_TAB_12369[]= {

0x8C,0x92,0xA2,0xC2,0x84,0x00,0xFE, //12 正向 //0

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x82,0x82,0xFC,0x80,0x82,0x7C,

//9 左旋270 度 //3

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x92,0x92,0x92,0x92,0x92,0x4C,

//6 左旋180 度 //2

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x82,0x2, 0x1C,0x2, 0x82,0x7C,

//3 左旋90 度 //1

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};

/***********************************************************************/ //数字字模显示段码表(8*8)

/***********************************************************************/

uchar code LED_TAB_A0[]= {

//字符 编号

0x7C,0x82,0x82,0x82,0x82,0x82,0x7C,0x00, //0 //0 0x00,0x80,0x80,0xFE,0x84,0x80,0x00,0x00, //1 //1 0x8C,0x92,0x92,0xA2,0xA2,0xC2,0xC4,0x00, //2 //2 0x6C,0x92,0x92,0x92,0x82,0x82,0x44,0x00, //3 //3 0x40,0x40,0xFE,0x44,0x48,0x50,0x60,0x00, //4 //4 0x60,0x92,0x92,0x92,0x92,0x92,0x4E,0x00, //5 //5 0x64,0x92,0x92,0x92,0x92,0x92,0x7C,0x00, //6 //6 0x02,0x06,0x0A,0xF2,0x02,0x02,0x02,0x00, //7 //7 0x6C,0x92,0x92,0x92,0x92,0x92,0x6C,0x00, //8 //8 0x7C,0x92,0x92,0x92,0x92,0x92,0x4C,0x00, //9 //9 0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00, //://10 0x04,0x0A,0x04,0x78,0x84,0x84,0x48,0x00, //℃//11 };

/***********************************************************************/ //符号字模显示段码表(8*16)

/***********************************************************************/ uchar code num1[] = {

/*-- 文字: 0 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*///上部 0xFF,0x1F,0xEF,0xF7,0xF7,0xEF,0x1F,0xFF, /*-- 文字: 1 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xFF,0xFF,0xFF,0x07,0xEF,0xEF,0xFF, /*-- 文字: 2 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0x8F,0x77,0xF7,0xF7,0xF7,0x8F,0xFF, /*-- 文字: 3 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xCF,0xB7,0x77,0x77,0xF7,0xCF,0xFF, /*-- 文字: 4 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xFF,0x07,0xEF,0xDF,0x3F,0xFF,0xFF, /*-- 文字: 5 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xF7,0xF7,0x77,0x77,0xF7,0x07,0xFF, /*-- 文字: 6 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xFF,0xE7,0x77,0x77,0xEF,0x1F,0xFF, /*-- 文字: 7 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xF7,0xC7,0x37,0xF7,0xF7,0xC7,0xFF, /*-- 文字: 8 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0x8F,0x77,0xF7,0xF7,0x77,0x8F,0xFF, /*-- 文字: 9 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0x1F,0xEF,0xF7,0xF7,0xEF,0x1F,0xFF, /*-- 文字: : --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xFF,0xFF,0x3F,0x3F,0xFF,0xFF,0xFF, };

uchar code num2[]= {

/*-- 文字: 0 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*///下部 0xFF,0xF0,0xEF,0xDF,0xDF,0xEF,0xF0,0xFF, /*-- 文字: 1 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xFF,0xDF,0xDF,0xC0,0xDF,0xDF,0xFF, /*-- 文字: 2 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xCF,0xDE,0xDD,0xDB,0xD7,0xCF,0xFF, /*-- 文字: 3 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xF1,0xEE,0xDF,0xDF,0xDF,0xE7,0xFF, /*-- 文字: 4 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xDB,0xC0,0xDB,0xDB,0xFB,0xF8,0xFF, /*-- 文字: 5 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xF1,0xEE,0xDF,0xDF,0xDE,0xE6,0xFF, /*-- 文字: 6 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xF1,0xEE,0xDF,0xDF,0xEE,0xF0,0xFF, /*-- 文字: 7 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF, /*-- 文字: 8 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xE3,0xDD,0xDE,0xDE,0xDD,0xE3,0xFF, /*-- 文字: 9 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xF0,0xEE,0xDD,0xDD,0xCE,0xFF,0xFF, /*-- 文字: : --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/ 0xFF,0xFF,0xFF,0xCF,0xCF,0xFF,0xFF,0xFF, };

uchar code num3[]= {

/*-- 文字: 0 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xF8,0xF7,0xEF,0xEF,0xF7,0xF8,0xFF,0xFF,0x0F,0xF7,0xFB,0xFB,0xF7,0x0F,0xFF,

/*-- 文字: 1 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xF7,0xF7,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFB,0x03,0xFB,0xFB,0xFF,0xFF,

/*-- 文字: 2 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xF1,0xEF,0xEF,0xEF,0xEE,0xF1,0xFF,0xFF,0xF3,0xEB,0xDB,0xBB,0x7B,0xF3,0xFF,

/*-- 文字: 3 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xF3,0xEF,0xEE,0xEE,0xED,0xF3,0xFF,0xFF,0xE7,0xFB,0xFB,0xFB,0x77,0x8F,0xFF,

/*-- 文字: 4 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFC,0xFB,0xF7,0xE0,0xFF,0xFF,0xFF,0x1F,0xDF,0xDB,0xDB,0x03,0xDB,0xFF,

/*-- 文字: 5 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xE0,0xEF,0xEE,0xEE,0xEF,0xEF,0xFF,0xFF,0x67,0x7B,0xFB,0xFB,0x77,0x8F,0xFF

,

/*-- 文字: 6 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xF8,0xF7,0xEE,0xEE,0xE7,0xFF,0xFF,0xFF,0x0F,0x77,0xFB,0xFB,0x77,0x8F,0xFF,

/*-- 文字: 7 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xE3,0xEF,0xEF,0xEC,0xE3,0xEF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0xFF,

/*-- 文字: 8 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xF1,0xEE,0xEF,0xEF,0xEE,0xF1,0xFF,0xFF,0xC7,0xBB,0x7B,0x7B,0xBB,0xC7,0xFF,

/*-- 文字: 9 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xF8,0xF7,0xEF,0xEF,0xF7,0xF8,0xFF,0xFF,0xFF,0x73,0xBB,0xBB,0x77,0x0F,0xFF,

/*-- 文字: r --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFE,0xFE,0xFE,0xFF,0xFE,0xFE,0xFE,0xFF,0xFB,0xFB,0x03,0x7B,0xFB,0xFF,0x7F,0xFF,

/*-- 文字: / --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFF,0xFF,0xFE,0xF9,0xE7,0xDF,0xFF,0xF9,0xE7,0x9F,0x7F,0xFF,0xFF,0xFF,

/*-- 文字: s --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,0x33,0xDB,0xDB,0xDB,0xDB,0x67,0xFF, };

uchar code hanzi1[]= //上部 {

0xFE,0x76,0x96,0xF6,0xE0,0xD6,0x36,0xF6,0xF6,0xFF,0x80,0xBF,0xB9,0xA6,0x9F,0xFF,

/*-- 文字: 郑 --*/

0xFF,0xF8,0xFF,0xFF,0x00,0xFB,0xFC,0xFF,0x80,0xF7,0xF9,0xFE,0xFF,0x00,0xFF,0xFF,

/*-- 文字: 州 --*/

0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFA,0x01,0xFA,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFF,

/*-- 文字: 大 --*/

0xFD,0xF3,0xF7,0xB7,0xC5,0xD5,0xF5,0x75,0x85,0xD4,0xF5,0xE7,0x15,0xB3,0xF7,0xFF,

/*-- 文字: 学 --*/

0xBF,0xB0,0xB7,0xB7,0xB7,0x80,0xB7,0xB7,0xB7,0x80,0xB7,0xB7,0xB7,0xB0,0xBF,0xFF,

/*-- 文字: 西 --*/

0xFF,0xBF,0xBB,0xBC,0xBF,0xBF,0x80,0xBF,0xBF,0x80,0xBF,0xBF,0xB0,0xBB,0xBF,0xFF,

/*-- 文字: 亚 --*/

0xDF,0xDF,0x00,0xD6,0xD6,0xD6,0x00,0xDF,0xFF,0x80,0xBB,0xBB,0x78,0x7B,0xFB,0xFF,

/*-- 文字: 斯 --*/

0xFF,0x80,0xBF,0xAF,0xAE,0xAE,0xAE,0xA0,0xAE,0xAE,0xAE,0xAF,0xBF,0x80,0xFF,0xFF,

/*-- 文字: 国 --*/

0x80,0xBF,0xBB,0xA5,0x9E,0xFB,0xFB,0xBB,0xBB,0xB8,0xBB,0xBB,0xBB,0xBB,0xFB,0xFF

,

/*-- 文字: 际 --*/

0xFD,0xF3,0xF7,0xB7,0xC5,0xD5,0xF5,0x75,0x85,0xD4,0xF5,0xE7,0x15,0xB3,0xF7,0xFF,

/*-- 文字: 学 --*/

0x80,0xBF,0xB3,0xAD,0x9E,0xCF,0xDB,0xDB,0x5B,0x9B,0xDB,0xDB,0xDB,0xCF,0xDF,0xFF,

/*-- 文字: 院 --*/ };

uchar code hanzi2[]= //下部 {

/*-- 文字: 郑 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xFB,0xFB,0xF7,0xCF,0x3F,0xBF,0xDF,0xE7,0xFF,0xFF,0x00,0xEF,0xEF,0xF7,0x0F,0xFF,

/*-- 文字: 州 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x7F,0xFE,0xF9,0xE7,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0x7F,0xFF,0x00,0xFF,0xFF,

/*-- 文字: 大 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xFF,0xFE,0xFD,0xFB,0xF7,0xCF,0x3F,0xFF,0x7F,0x9F,0xEF,0xF3,0xF9,0xFC,0xFD,0xFF,

/*-- 文字: 学 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xFF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBD,0xBE,0x01,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xFF,

/*-- 文字: 西 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xFF,0x01,0xEB,0xDB,0xBB,0x7B,0xFB,0xFB,0xFB,0x7B,0xBB,0xBB,0xBB,0x01,0xFF,0xFF,

/*-- 文字: 亚 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xFB,0xFB,0xFB,0xFB,0x1B,0xFB,0x03,0xFB,0xFB,0x03,0xDB,0x3B,0xFB,0xF3,0xFB,0xFF,

/*-- 文字: 斯 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xDD,0xDB,0x13,0xDF,0xDF,0xD7,0x19,0xDD,0xF3,0x0F,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,

/*-- 文字: 国 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xFF,0x00,0xFD,0xED,0xED,0xED,0xED,0x0D,0xED,0x6D,0x8D,0xED,0xFD,0x00,0xFF,0xFF,

/*-- 文字: 际 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0xFF,0xBF,0xDF,0x37,0xCF,0x3F,0xFD,0xFE,0x01,0xFF,0x7F,0xBF,0xC7,0xEF,0xFF,

/*-- 文字: 学 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0xFF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBD,0xBE,0x01,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xFF,

/*-- 文字: 院 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x00,0xFF,0xBF,0xDF,0x3E,0x7D,0x73,0x0F,0x7F,0x7F,0x01,0x7E,0x7E,0x7E,0x70,0xFF, };

uchar code dis_code1[19][16]= {

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x04,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x20,0x10,0x08,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x20,0x10,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x20,0x12,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x1E,0x22,0x44,0x22,0x12,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x1E,0x3E,0x44,0x22,0x12,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x1E,0x3E,0x7C,0x22,0x12,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x1E,0x3E,0x7C,0x3E,0x12,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x1E,0x3E,0x7C,0x3E,0x1E,0x0C,0x00,0x00,0x00,0x00,0x00}, };

uchar code dis_code2[20][16]= {

{0x88,0x10,0x88,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x06,0x09,0x11,0x22,0x11,0x09},

{0x24,0x44,0x88,0x44,0x24,0x18,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x22,0x12,0x0C},

{0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x00,0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x00},

{0x00,0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x00,0x00},

{0x00,0x00,0x0C,0x12,0x22,0x44,0x2E,0x12,0x2E,0x44,0x22,0x12,0x0C,0x00,0x00,0x00},

{0x00,0x00,0x00,0x0C,0x12,0x2E,0x56,0x22,0x56,0x2E,0x12,0x0C,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x1E,0x3E,0x7C,0x3E,0x1E,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x0C,0x12,0x22,0x44,0x22,0x12,0x0C,0x00,0x00,0x00,0x00,0x0

0},

{0x00,0x00,0x00,0x00,0x0C,0x1E,0x3E,0x7C,0x3E,0x1E,0x0C,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x06,0x0F,0x1F,0x3E,0x1F,0x0F,0x06,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x0F,0x07,0x03,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x07,0x03,0x01,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x03,0x01,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,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}, };

void init() {

EA=1; IT0=1; EX0=1;

TMOD=0x11; //timer0,1为模式1 ET0=1; TR0=1; TH0=0xb1; TL0=0xe0; ET1=1; TR1=1; TH1 =0xff;

Disp_time_set=0x22; TL1 = Disp_time_set; P1=0xf8;

Time_H = 3; //时钟\"时\"(0~23) Time_M = 20; //时钟\"分\"(0~59) Time_S = 30; //时钟\"秒\"(0~59)

Time_ms = 0; //时钟\"毫秒\"(0~49) (每过20ms,+1)

T20ms_flag = 0; //20毫秒定时溢出标志(0=未溢出,1=溢出) New_disp_flag = 1; //显示刷新使能标志=1(0=禁止,1=使能) SET_EN_FLAG=0; }

/***********************************************************************/ //计时处理程序(20ms 调用一次) //功能: 1.计时

/***********************************************************************/ void time_cnt(void) //相关标志设置 {

T20ms_flag = 0; //20毫秒定时溢出标志=0

New_disp_flag = 1; //显示刷新使能标志=1(0=禁止,1=使能) Time_ms++; //====计时

Mode_J++;

if (Mode_J > 1000) {

Mode_J=0; Disp_mode++; if(Disp_mode==3) Disp_mode=0; }

if ( Time_ms > 49 ) //\"毫秒\"+1,结果>最大值? {

Time_ms = 0 ; //\"毫秒\"=0 speednow=speed; speed=0;

if ( ++Time_S > 59 ) //\"秒\"+1,结果>最大值? {

Time_S = 0 ; //\"秒\"=0

if ( ++Time_M > 59 ) //\"分\"+1,结果>最大值? {

Time_M = 0 ; //\"分\"=0

if ( ++Time_H > 23 ) //\"时\"+1,结果>最大值? {

Time_H = 0 ; //\"时\"=0 } } } } }

/***********************************************************************/ //刷新显示

/***********************************************************************/ void new_display(void) {

uchar i,j ;

New_disp_flag = 0 ; //显示刷新使能标志=0(0=禁止,1=使能) if ( SET_EN_FLAG == 0 ) {

//根据显示状态判断

switch(Disp_mode)//( Disp_mode ) {

//================================== //显示状态0:模拟钟

//================================== case 0:

//秒针定位

i = 2 * Time_S ; //秒针定位=\"秒\"*3 S_Line = i + Time_S ; S_Line = 180-S_Line ; //时针定位

if ( Time_H > 11 ) i = Time_H -12 ; //\"时\"转换为12小时制 else i = Time_H ; j = i * 16 - i ; i = Time_M / 4 ;

H_Line = j + i ; //时针定位=\"时\"*15+\"分\"/4 H_Line = 180-H_Line ; break; //================================== //显示状态1:数字钟

//================================== case 1:

//计算显示数值内容

Disp_buffer[0] = Time_H / 10; //时 Disp_buffer[1] = Time_H % 10; Disp_buffer[2] = 10; //\":\"

Disp_buffer[3] = Time_M / 10; //分 Disp_buffer[4] = Time_M % 10; Disp_buffer[5] = 10; //\":\"

Disp_buffer[6] = Time_S / 10; //秒 Disp_buffer[7] = Time_S % 10;

Disp_buffer[8] = speednow/10; //电机转速 Disp_buffer[9] = speednow%10; case 2:

//计算显示数值内容

Disp_buffer[0] = Time_H / 10; //时 Disp_buffer[1] = Time_H % 10; Disp_buffer[2] = 10; //\":\"

Disp_buffer[3] = Time_M / 10; //分 Disp_buffer[4] = Time_M % 10; Disp_buffer[5] = 10; //\":\"

Disp_buffer[6] = Time_S / 10; //秒 Disp_buffer[7] = Time_S % 10; default: break; } } }

void main() {

init(); //初始化 while(1) {

if ( T20ms_flag ) time_cnt(); //如果20 毫秒定时溢出标志=1, //则调用计时处理程序

if ( New_disp_flag ) new_display(); //如果显示刷新使能标志=1, //则刷新显示缓冲区 } }

void inter0() interrupt 0 using 1 {

Disp_Line = 0 ;

if ( Timer1_JSQ > 180 ) {

if ( Timer1_JSQ > 220 ) Disp_time_set = Disp_time_set - 0x1f ;

else if ( Timer1_JSQ > 200 ) Disp_time_set = Disp_time_set - 0x0f ; else if ( Timer1_JSQ > 190 ) Disp_time_set = Disp_time_set - 0x08 ; else Disp_time_set = Disp_time_set - 0x01 ;

if ( Disp_time_set < 0x0f ) Disp_time_set = 0x0f ; //钳位 }

else if ( Timer1_JSQ < 180 ) {

if ( Timer1_JSQ < 140 ) Disp_time_set = Disp_time_set + 0x1f ;

else if ( Timer1_JSQ < 160 ) Disp_time_set = Disp_time_set + 0x0f ; else if ( Timer1_JSQ < 170 ) Disp_time_set = Disp_time_set + 0x08 ; else if ( Timer1_JSQ < 175 ) Disp_time_set = Disp_time_set + 0x04 ; else if ( Timer1_JSQ < 178 ) Disp_time_set = Disp_time_set + 0x02 ; else Disp_time_set = Disp_time_set + 0x01 ;

if ( Disp_time_set > 0xff ) Disp_time_set = 0xf0 ; //钳位 }

Timer1_JSQ = 0 ; //TIMR1溢出计数器 = 0 speed=speed+1; //电机转速计数 l++; m++;

if(m>96)m=0; if(l>3) {

l=0; k++;

if(k>18)k=0; } }

void timer20ms(void) interrupt 1 {

TH0 = 0xb1;TL0 = 0xe0;

T20ms_flag = 1; //20毫秒定时溢出标志=1 }

void timer1(void) interrupt 3 {

int i,j; P1=0xf0; P2=0xff;

TH1 =0xff;TL1 =Disp_time_set; //0x22;

if ( ++Timer1_JSQ > 250 ) Timer1_JSQ = 250 ; //TIMR1 溢出计数器+1 if ( ++Disp_Line >= 180 ) Disp_Line = 0 ; //显示列计数器+1 switch(Disp_mode) {

case 0:

P0=~LED_TAB_12369[Disp_Line];

//显示指针\"时\" i = H_Line ; j = H_Line ;

if ( ++i >= 180 ) i=0 ; //i+1,结果>=最大值,则清零

if ( --j >= 180 ) j=179; //(180-1);//j-1,结果为负,则重新赋值 if ( Disp_Line == H_Line ) {

P1=0xfc; }

if ( Disp_Line == i || Disp_Line == j) {

P1=0xfc; }

//显示指针\"分\" if ( Disp_Line == M_Line ) {

P1=0xfe; }

//显示指针\"秒\" if ( Disp_Line == S_Line ) {

P1=0xff; }

break; case 1:

if(Disp_Line<8) {

P0=~LED_TAB_A0[Disp_buffer[3]*8+Disp_Line]; //显示分的个位 }

else if(Disp_Line<16) {

P0=~LED_TAB_A0[Disp_buffer[2]*8+Disp_Line-8];//显示“:” }

else if(Disp_Line<24) {

P0=~LED_TAB_A0[Disp_buffer[1]*8+Disp_Line-16];//显示秒十位 }

else if(Disp_Line<32) {

P0=~LED_TAB_A0[Disp_buffer[0]*8+Disp_Line-24];//显示秒个位 }

else if(Disp_Line<48) {

P0=~dis_code2[k][Disp_Line-32]; //显示心形动画 }

else if(Disp_Line<70) {

P0=0xff; }

else if(Disp_Line<78) {

P2=num3[Disp_buffer[8]*16+Disp_Line-70]; //显“S” P0=num3[Disp_buffer[8]*16+8+Disp_Line-70]; }

else if(Disp_Line<86) {

P2=num3[Disp_buffer[9]*16+Disp_Line-78]; //显示“/” P0=num3[Disp_buffer[9]*16+8+Disp_Line-78]; }

else if(Disp_Line<94) {

P2=num3[160+Disp_Line-86]; //10*16=160 //显示“r” P0=num3[168+Disp_Line-86]; }

else if(Disp_Line<102) {

P2=num3[176+Disp_Line-94]; //11*16=176 //显示转速个位 P0=num3[184+Disp_Line-94]; }

else if(Disp_Line<110) {

P2=num3[192+Disp_Line-102]; //12*16=192 //显示转速十位 }

else if(Disp_Line<132) {

P0=0xff; }

else if(Disp_Line<148) {

P0=~dis_code2[k][Disp_Line-132]; //显示心形动画 }

else if(Disp_Line<156) {

P0=~LED_TAB_A0[Disp_buffer[7]*8+Disp_Line-148];//显示小时的十位 }

else if(Disp_Line<164) {

P0=~LED_TAB_A0[Disp_buffer[6]*8+Disp_Line-156];//显示小时的个位 }

else if(Disp_Line<172) {

P0=~LED_TAB_A0[Disp_buffer[5]*8+Disp_Line-164];//显示“:” }

else if(Disp_Line<180) {

P0=~LED_TAB_A0[Disp_buffer[4]*8+Disp_Line-172];//显示分钟的十位 }

break; case 2:

if(Disp_Line<8) {

P0=num1[Disp_buffer[3]*8+Disp_Line]; //显示分钟的个位 P2=num2[Disp_buffer[3]*8+Disp_Line]; }

else if(Disp_Line<16) {

P0=num1[Disp_buffer[2]*8+Disp_Line-8]; //显示“:” P2=num2[Disp_buffer[2]*8+Disp_Line-8]; }

else if(Disp_Line<24) {

P0=num1[Disp_buffer[1]*8+Disp_Line-16]; //显示秒的十位 P2=num2[Disp_buffer[1]*8+Disp_Line-16]; } }

else if(Disp_Line<48) {

P0=~dis_code1[k][Disp_Line-32];//P0=0xff; //显示心形动画 }

else if(Disp_Line<50) {

P0=0xff; }

else if(Disp_Line<130) {

P2=hanzi1[Disp_Line-50+m]; //显示“郑州大学西亚斯国际学学院” P0=hanzi2[Disp_Line-50+m]; }

else if(Disp_Line<132) {

P0=0xff; }

else if(Disp_Line<148) {

P0=~dis_code1[k][Disp_Line-132]; //显示心形动画 }

else if(Disp_Line<156) {

P0=num1[Disp_buffer[7]*8+Disp_Line-148]; //显示小时的十位 P2=num2[Disp_buffer[7]*8+Disp_Line-148]; }

else if(Disp_Line<164) {

P0=num1[Disp_buffer[6]*8+Disp_Line-156]; //显示小时的个位 P2=num2[Disp_buffer[6]*8+Disp_Line-156];

}

}

}

else if(Disp_Line<172) {

P0=num1[Disp_buffer[5]*8+Disp_Line-164]; //显示“:” P2=num2[Disp_buffer[5]*8+Disp_Line-164]; }

else if(Disp_Line<180) {

P0=num1[Disp_buffer[4]*8+Disp_Line-172]; //显示分钟的十位 P2=num2[Disp_buffer[4]*8+Disp_Line-172]; }

break; default: break;

因篇幅问题不能全部显示,请点此查看更多更全内容

Top