《LED动态双显示》doc版.doc_第1页
《LED动态双显示》doc版.doc_第2页
《LED动态双显示》doc版.doc_第3页
《LED动态双显示》doc版.doc_第4页
《LED动态双显示》doc版.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* 文件名称:main.c* 文件说明:显示Hello*/#include #define TOP 0 / 竖直方向零点#define BOTTOM 64 / 竖直方向坐标最大值#define LEFT 0 / 水平方向坐标最小值#define RIGHT 128 / 水平方向坐标最大值#define EN_WIDTH 48 / Hello 字符串的长度#define CH_WIDTH 96 / 中文字符串的长度#define OP_CHINESE 1 / 选择显示中文字符#define OP_ENGLISH 2 / 选择显示英文字符unsigned int sec,sec1,sec2,min,min1,min2,hour,h1,h2,s_num,S_NUM,cont,b,c,d,e,a;unsigned char showData16= 0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00,/0 0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/1 0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00,/2 0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00,/3 0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00,/4 0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/5 0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00,/6 0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00,/7 0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00,/8 0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00,/9 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00,/:;unsigned char px, / 显示字符串的X位置 py, / 显示字符串的Y位置 width; / 字符串的宽度unsigned char showData1=/16*8点阵的Hello0x00,0x80,0x00,0x60,0xFE,0x1F,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0xFE,0x7F,0x22,0x02,0x22,0x02,0x22,0x42,0x22,0x82,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,/*用,0*/0x00,0x40,0x02,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0xFE,0x7F,/0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0x02,0x40,0x00,0x40,0x00,0x00,/*王,0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,2*/0x00,0x80,0x00,0x60,0xF8,0x1F,0x48,0x82,0x48,0x8A,0x48,0x56,0xC8,0x23,0x48,0x52,/0x48,0x8E,0x48,0x40,0xFF,0x27,0x08,0x18,0x09,0x26,0xCA,0x41,0x08,0xF0,0x00,0x00,/*威,3*/ ;unsigned char px, / 显示字符串的X位置 py, / 显示字符串的Y位置 width; / 字符串的宽度unsigned char showData2=/16*8点阵的Hello 0x00,0x00,0x00,0x00,0xFC,0x7F,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,/*口,0*/0x04,0x82,0x24,0x42,0x24,0x32,0xEF,0x0F,0x24,0x02,0x24,0x02,0xEF,0xFF,0x24,0x02,/0x24,0x02,0x04,0x02,0xF8,0x0F,0x00,0x40,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,/*荆,0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,2*/0x40,0x10,0x21,0x09,0x11,0xFD,0x09,0x4B,0x7D,0x49,0x4B,0x49,0x49,0xF9,0x49,0x10,/0x49,0x09,0x49,0xFD,0x49,0x4B,0x79,0x49,0x01,0x49,0x01,0xF9,0x00,0x01,0x00,0x00,/*磊,3*/ ;unsigned char px, / 显示字符串的X位置 py, / 显示字符串的Y位置 width; / 字符串的宽度unsigned char showData3=/16*8点阵的Hello 0x00,0x10,0x10,0x08,0x10,0x04,0x10,0x02,0x10,0x01,0xD0,0x00,0x30,0x00,0xFF,0xFF,0x30,0x00,0xD0,0x00,0x10,0x01,0x10,0x02,0x10,0x04,0x10,0x08,0x00,0x10,0x00,0x00,/*木,0*/0x00,0x11,0x3C,0x8F,0x20,0x61,0xFC,0x1F,0x04,0x00,0xF4,0x3F,0x94,0x24,0xF4,0x3C,/0x94,0xA7,0x04,0x40,0xFF,0x27,0x04,0x18,0x05,0x26,0x86,0x41,0x04,0xF0,0x00,0x00,/*臧,0*/0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,0x47,0x40,0x40,0x40,0x44,0x44,0x44,0x44,/0x44,0x44,0x7F,0x7F,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,0x00,/*佳,1*/0x10,0x02,0x0C,0x02,0x24,0x02,0x24,0x02,0x24,0x02,0x24,0x42,0x25,0x82,0xE6,0x7F,/0x24,0x02,0x24,0x02,0x24,0x02,0x24,0x02,0x24,0x02,0x14,0x02,0x0C,0x02,0x00,0x0,/*宇,2*/;unsigned char px, / 显示字符串的X位置 py, / 显示字符串的Y位置 width; / 字符串的宽度unsigned char showData4=/16*8点阵的Hello 0x20,0x01,0x10,0x01,0x0C,0x1F,0xF3,0x11,0x12,0x11,0x12,0x11,0x52,0x15,0x92,0x19,0x12,0x51,0x12,0x91,0x12,0x51,0xF2,0x3F,0x02,0x11,0x02,0x11,0x00,0x01,0x00,0x00,/*每,0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,2*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,3*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,4*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,5*/;unsigned char px, / 显示字符串的X位置 py, / 显示字符串的Y位置 width; / 字符串的宽度/write_Command(),用于写命令到LCD,CS(片选)在此函数外设置void write_Command(char cmd) P3OUT &= 0xfb; /禁止 EN P5DIR = 0xff; P3OUT &= 0xfc; /rs=0 ,r/w=0 P5OUT = cmd; P3OUT |= 0x04; /使能 P3OUT &= 0xfb; /禁止 / 设置显示的位置,含片选void move_To(char x,char y) unsigned char tmp; tmp=(y&0x7f); if(tmp63) /在 chip2 P3OUT &= 0xF7; /cs1=0 P3OUT |= 0x40; /cs2=1 write_Command(0xb8 + x); /设置 x write_Command(0x40 + tmp-64); /设置 y / write datavoid write_Data(char content) P5DIR = 0x00; / 置位输入模式 P3OUT |= 0x02; / r/w=1 读状态 P3OUT |= 0x04; / chip 使能 while(P5IN & 0x80)=0x80);/检测LCD是否忙 P3OUT &= 0xfb; /disable EN P5DIR = 0xff; P3OUT &= 0xfc; /rs=0 ,r/w=0 P3OUT |= 0x01; /rs=1 P5OUT = content; P3OUT |= 0x04; /p2.2=1 使能 P3OUT &= 0xfb; /p2.2=0 禁止/ 在指定的位置显示字符串Hello ,x是行坐标,y是列坐标,0=x=RIGHT - 字符串长度/ 0=y=BOTTOM-字符串高度void drawStr1(unsigned char x,unsigned char y) unsigned char tmpv; for(tmpv=y;tmpvy+width;tmpv+) move_To(x/8,tmpv); /移动到指定页 write_Data(showData12*(tmpv-y); /填写数据 move_To(x/8+1,tmpv); /由于显示的字符是16*N点阵,占用两页,现在移动到下页 write_Data(showData12*(tmpv-y)+1); /填写数据 void drawStr2(unsigned char x,unsigned char y) unsigned char tmpv; for(tmpv=y;tmpvy+width;tmpv+) move_To(x/8,tmpv); /移动到指定页 write_Data(showData22*(tmpv-y); /填写数据 move_To(x/8+1,tmpv); /由于显示的字符是16*N点阵,占用两页,现在移动到下页 write_Data(showData22*(tmpv-y)+1); /填写数据 void drawStr3(unsigned char x,unsigned char y) unsigned char tmpv; for(tmpv=y;tmpvy+width;tmpv+) move_To(x/8,tmpv); /移动到指定页 write_Data(showData32*(tmpv-y); /填写数据 move_To(x/8+1,tmpv); /由于显示的字符是16*N点阵,占用两页,现在移动到下页 write_Data(showData32*(tmpv-y)+1); /填写数据 void drawStr4(unsigned char x,unsigned char y) unsigned char tmpv; for(tmpv=y;tmpvy+width;tmpv+) move_To(x/8,tmpv); /移动到指定页 write_Data(showData42*(tmpv-y); /填写数据 move_To(x/8+1,tmpv); /由于显示的字符是16*N点阵,占用两页,现在移动到下页 write_Data(showData42*(tmpv-y)+1); /填写数据 void drawStr(unsigned char x,unsigned char y,char i) /显示程序 unsigned char tmpv; for(tmpv=y;tmpvy+width;tmpv+) move_To(x/8,tmpv); /移动到指定页 write_Data(showDatai2*(tmpv-y); /填写数据 move_To(x/8+1,tmpv); /由于显示的字符是16*N点阵,占用两页,现在移动到下页 write_Data(showDatai2*(tmpv-y)+1); /填写数据 / 清除chip1或者chip2上的某一区域,选择的区域只是在/ 同一chip上,x是页地址,Y是列地址,h是多少行,w是指多少/ 列.区域可以是两个片组成的区域的任何位置void clear_Rect(unsigned char x,unsigned char y,unsigned char h,unsigned char w) unsigned char tmpv,tmp; for(tmpv=x;tmpv(x+h);tmpv+) for(tmp=y;tmp(y+w);tmp+) move_To(tmpv,tmp);/移动 write_Data(0x00); /在当前位置写0,即清除当前位置的显示内容 /*定时器A中断服务程序*/#pragma vector=TIMERA0_VECTOR_interrupt void Timer_A (void)/interruptTIMERA0_VECTOR void Timer_A (void)cont=cont+1;if(cont=2)cont=0;sec=sec+1; /秒加1 if(sec=60) sec=0; min=min+1; /60秒为1分,分加1 if(min=60) min=0; hour=hour+1; /60分为1小时,小时加1 if(hour=24) hour=0 ; /24小时再清零 P4OUT=0x00; P6OUT=b; s_num=b; switch(s_num) case 0: P1OUT=0x00; break; case 1: P1OUT=0x7E; break; case 2: P1OUT=0x4A; break; case 3: P1OUT=0x7E; break; case 4: P1OUT=0x4A; break; case 5: P1OUT=0x7E; break; case 6: P1OUT=0x49; break; case 7: P1OUT=0x41; break; P4OUT=0x01; b+=1; if(b=8)b=0; sec+=1; S_NUM =P2IN & 0x1f; switch (S_NUM) case 1: px=40; py=64; width=16; drawStr1(px,py); break; case 2: px=40; py=64; width=16; drawStr2(px,py); break; case 3: px=40; py=64; width=16; drawStr3(px,py); break; case 4: px=40; py=64; width=16; drawStr4(px,py); break; case 5: px=40; py=64; width=16; drawStr2(px,py); break; case 6: px=40; py=64; width=16; drawStr3(px,py); break; sec1=sec%10;sec2=sec/10;min1=min%10;min2=min/10;h1=hour%10;h2=hour/10; px=28; py=88; width=8; drawStr(px,py,sec1); /sec px=28; py=80; width=8; drawStr(px,py,sec2); px=28; py=72; width=8; drawStr(px,py,10); px=28; py=64; width=8; drawStr(px,py,min1); /min px=28; py=56; width=8; drawStr(px,py,min2);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论