我用的是44b0,就是当单片机使了,程序调了好长时间,就是不显示,大家帮我看看,谢谢啦,还有,液晶显示的静态和动态有什么差别?<br /><br />这个程序里,我没有让它显示汉字,我想先让它全屏都亮(先试试好不好使),然后再显示汉字,所以,hp()程序我给修改了。<br /><br />#define setA0 rPDATE |= 0x0008;//A0=1 <br />#define clrA0 rPDATE &= 0xfff7;//A0=0<br /><br />#define setE1 rPDATE |= 0x0040;//E1=1 <br />#define clrE1 rPDATE &= 0xffbf;//E1=0<br /><br />#define setE2 rPDATE |= 0x0020;//E2=1 <br />#define clrE2 rPDATE &= 0xffdf;//E2=0<br /><br /><br />#define setReset rPDATE |= 0x0080;//Reset=1<br />#define clrReset rPDATE &= 0xff7f;//Reset=0<br /><br /><br />#define setR rPDATE |= 0x0010;//R/W=1<br />#define clrR rPDATE &= 0xffef;//R/W=0<br /><br />#define Data rPDATC ;<br /><br />#define fuwei (0xe2);<br />#define kxshq 0xaf;<br />#define gxshq 0xae;<br />#define dtqd 0xa4;<br />#define jtqd 0xa5;<br />#define zkb1 0xa9;<br />#define zkb2 0xa8;<br />#define szx1 0xa0;<br />#define szx2 0xa1;<br />#define xmsstop 0xee;<br /><br /><br />extern unsigned char bmp1[];<br />extern unsigned char bmp2[];<br />extern unsigned char bmp3[];<br /><br /><br /><br />unsigned char bmp1[]=<br />{<br />/*-- 文字: 中 --*/<br />/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/<br />/*-- 文字: 中 --*/<br />/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/<br />0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x3F,0x10,0x00,0x00,<br />0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0xE0,0x00,0x00,0x00<br /><br /><br />};<br /><br /><br />unsigned char bmp2[]=<br />{<br /><br />/*-- 文字: 国 --*/<br />/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/<br />0x00,0x7F,0x40,0x50,0x51,0x51,0x51,0x5F,0x51,0x51,0x51,0x50,0x40,0x7F,0x00,0x00,<br />0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x92,0x72,0x12,0x02,0xFF,0x00,0x00<br /><br />};<br /><br />unsigned char bmp3[]=<br />{<br />/*-- 文字: 人 --*/<br />/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/<br />0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x02,0x04,0x08,0x30,0xC0,0x00,0x00,0x80,0x60,0x30,0x18,0x0C,0x06,0x04,0x00<br /><br />};<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />/**********************************************************************************/<br />void Dalay(int i)<br />{<br /> int m;<br /> for (;i>0;i--)<br /> {<br /> for (m=10000;m>0;m--);<br /> }<br /><br /><br /><br /><br /><br /><br /><br />}<br />/**********************************************************************************/<br />void lcd12232_WriteCommondMaster(unsigned char i)<br />//写主芯片命令<br />{<br /> setE1;<br /> // dalay(10);<br /> <br /> clrA0;<br /> // Dalay(10);<br /> <br /> rPDATC=i;<br /> // Dalay(10);<br /> <br /> clrE1;<br /> //Dalay(10);<br /><br />}<br />/*************************************************************************************/<br /><br />void lcd12232_WriteCommondSlave(unsigned char i)<br />//写从芯片指令<br />{<br /> setE2;<br /> // Dalay(10);<br /> <br /> clrA0;<br /> // Dalay(10);<br /> <br /> rPDATC=i;<br />// Dalay(10);<br /> <br /> clrE2;<br />// Dalay(10);<br /><br /><br /><br />}<br /><br />/****************************************************************************/<br /><br />void lcd12232_WriteDataMaster(unsigned char i)<br />//发数据到主芯片<br />{<br /><br /> setE1;<br /> //Dalay(10);<br /> <br /> setA0;<br /> //Dalay(10);<br /> <br /> rPDATC=i;<br /> //Dalay(10);<br /> <br /> clrE1;<br /> //Dalay(10);<br /><br /><br />}<br /><br />/************************************************************************************/<br /><br />void lcd12232_WriteDataSlave(unsigned char i)<br />//发数据到从芯片<br />{<br /><br /> setE2;<br /> //Dalay(10);<br /> <br /> setA0;<br />// Dalay(10);<br /> <br /> rPDATC=i;<br />// Dalay(10);<br /> <br /> clrE2;<br />// Dalay(10);<br /><br /><br />}<br /><br />/***************************************************************************************/<br /><br /><br />void lcd12232_IoInit()<br />/*初始化IO,用C口<br />rPC0~7 == D0-D7<br />rPC8 == Reset<br />rPC9 == E1<br />rPC10 == E2<br />rPC11 == R/W<br />rPC12 == A0<br />rPC13 == LED+<br />rPC14 == LED-<br />*/<br />{ rPCONA =0x100;<br /> rPCONC = 0x5f555555;//设置为输出口<br /> clrE1;<br /> clrE2;<br /> clrR;<br /> clrReset;<br /> Dalay(100);<br /> setReset;<br /> <br />}<br /><br /><br /><br /><br /><br />void lcd12232_Init()<br />//初始化lcd12232<br />{<br /> <br /> lcd12232_IoInit();//初始化IO<br /> clrR;<br /> lcd12232_WriteCommondMaster(0xe2);<br /> lcd12232_WriteCommondSlave(0xe2); //复位<br /> <br /> <br /> lcd12232_WriteCommondMaster(0xae);<br /> lcd12232_WriteCommondSlave(0xae); //关显示器;<br /> <br /> <br /> lcd12232_WriteCommondMaster(0xa4);<br /> lcd12232_WriteCommondSlave(0xa4); //动态驱动<br /> <br /> lcd12232_WriteCommondMaster(0xa9);<br /> lcd12232_WriteCommondSlave(0xa9); //1/32占空比<br /> <br /> <br /> lcd12232_WriteCommondMaster(0xa0);<br /> lcd12232_WriteCommondSlave(0xa0); //顺时针<br /> <br /> lcd12232_WriteCommondMaster(0xee);<br /> lcd12232_WriteCommondSlave(0xee); //停止改写模式<br /> <br /> <br /> lcd12232_WriteCommondMaster(0x00);<br /> lcd12232_WriteCommondMaster(0xc0);<br /> <br /> lcd12232_WriteCommondSlave(0x00);<br /> lcd12232_WriteCommondSlave(0xc0);<br /> <br /> lcd12232_WriteCommondMaster(0xaf);<br /> lcd12232_WriteCommondSlave(0xaf); //开显示器;<br /><br />}<br /><br /><br /><br /><br /><br /><br /><br />/*************************************************************************************/<br /><br />void lcd12232_SetPage(unsigned char page0,unsigned char page1) <br />{ <br /> lcd12232_WriteCommondMaster(0xB8|page1);<br /> lcd12232_WriteCommondSlave(0xB8|page0);<br />}<br /><br />/************************************************************************************/<br /><br /><br />void lcd12232_SetAddress(unsigned char address0,unsigned char address1)<br /> {<br /> <br /> lcd12232_WriteCommondMaster(address1&0x7F);<br /> lcd12232_WriteCommondSlave(address0&0x7F);<br /> }<br /> <br /> <br />/*************************************************************************************/<br /><br /><br />/*void lcd12232_Playbmp(uchar x0,bit layer,uchar width,uchar *bmp) <br /><br />{ <br /> char x,address,i=0; //address表示显存的物理地址<br /> uchar page=0;<br /> bit window=0; //page表示上下两页,window表示左右两页<br /> if (layer) page=2;<br /> for (x=x0;x<x0+width;x++) <br /> { <br /> if (x>60) <br /> {window=1;address=x%61;}<br /> else address=x;<br /> SetPage(page,page); <br /> SetAddress(address,address);<br /> if (window) PutChar1(bmp);<br /> else PutChar0(bmp);//画上层 <br /> SetPage(page+1,page+1); <br /> SetAddress(address,address); <br /> if (window) PutChar1(bmp[i+width]);<br /> else PutChar0(bmp[i+width]);//画下层 <br /> i++;<br /><br />}<br />}<br />*/<br /><br /><br /><br />void clrscr(void) <br />{<br /> unsigned char i; <br /> unsigned char page;<br /> <br /> for (page=0;page<4;page++)<br /> {<br /> lcd12232_SetPage(page,page);<br /> lcd12232_SetAddress(0,0); <br /> for (i=0;i<61;i++)<br /> {<br /> lcd12232_SetAddress(i,i);<br /> lcd12232_WriteDataMaster(0x00);<br /> lcd12232_WriteDataSlave(0x00);<br /> } <br /> }<br /> }<br /><br /> /* void hp(void) <br />{ <br />int x,y;<br />y=0;<br />lcd12232_SetPage(0,y);<br /> for (x=0;x<16;x++)<br /> { <br /> lcd12232_SetAddress(0,x);<br /> <br /> lcd12232_WriteDataMaster(bmp1[x]);<br /> <br /> }<br />y=1;<br />lcd12232_SetPage(0,y);<br />for (x=0;x<16;x++)<br /> { <br /> lcd12232_SetAddress(0,x);<br /> <br /> lcd12232_WriteDataMaster(bmp1[x+16]);<br /> <br /> }<br /><br /><br /><br /><br /><br /><br />}<br /> */<br /> <br /> void hp(void)<br /> <br /> <br /> {<br /> <br /> unsigned char i; <br /> unsigned char page;<br /> <br /> for (page=0;page<4;page++)<br /> {<br /> lcd12232_SetPage(page,page);<br /> lcd12232_SetAddress(0,0); <br /> for (i=0;i<61;i++)<br /> {<br /> <br /> lcd12232_WriteDataMaster(0xff);<br /> lcd12232_WriteDataSlave(0xff);<br /> } <br /> }<br /> }<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /><br /><br /><br />/****************************************************************************<br />【功能说明】系统主函数<br />****************************************************************************/<br />void Main(void)<br />{<br /> //U16 m;<br /> <br /> rSYSCFG=0x0e; //使用8K字节的指令缓存<br /><br /> Port_Init(); //IO端口功能、方向设定<br /> Isr_Init(); //中断初始化<br /><br /> //Lcd_Init(); //DMF50081(320×240)液晶模块初始化<br /><br /> //Led_Disp(); //LED来回闪烁显示 <br /> //Beep(500); //蜂鸣器鸣叫若干个100us<br /><br /> //ChangePllValue(8,2,1); //修改系统主频为2倍频<br /><br /> //Beep(1000); //蜂鸣器鸣叫若干个100us<br /><br /> //Lcd_Fill(0x33); //液晶显示屏全屏填充某一个8位二进制数<br /><br /> //for(m = 2; m > 0; m--)<br /> //{<br /> // Led_Disp(); //LED来回闪烁显示 <br /> //}<br />//<br /> //Timer_Pwm(); //定时器初始化,让PE7、6、5、4、3输出PWM信号<br /><br />// while(1)<br /> //{<br /> //Key_Speaker(); //检测四个按键,有任何一个按键按下就让蜂鸣器鸣叫,否则不鸣叫<br /> // Led_Disp(); //LED来回闪烁显示 <br /> <br /> lcd12232_Init();<br /> <br /> clrscr();<br /> <br /> hp();<br /> <br /><br /><br /> <br /> <br /> //}<br />}<br />//***************************************************************************<br /> |
|