⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy8.lst

📁 12864液晶屏的使用 基于c8051f005单片机 在液晶屏上显示"中国石油大学"
💻 LST
📖 第 1 页 / 共 2 页
字号:
 146   2                      dat<<=1;                                //将要发送位送人CY寄存器
 147   2                      LCD_DA=CY;                      //发送CY中字节
 148   2                      LCD_SCK=0;
 149   2                      delay(10);
 150   2                      LCD_SCK=1;                      //时钟电平上升沿 数据位送给LCD
 151   2                      delay(10);
 152   2              }
 153   1              LCD_CS=1;                               //片选关
 154   1              delay(20);
 155   1      }
 156          void lcd_send_cmd(uchar dat)
 157          {
 158   1              uchar i;
 159   1              LCD_CS=0;                               //片选选通
 160   1              LCD_A0=0;                               //选择发送命令
 161   1              LCD_SCK=1;
 162   1              for(i=0;i<8;i++)
 163   1              {
 164   2                      dat<<=1;                                //将要发送位送人CY寄存器
 165   2                      LCD_DA=CY;                      //发送CY中字节
 166   2                      LCD_SCK=0;
 167   2                      delay(10);
 168   2                      LCD_SCK=1;                      //时钟电平上升沿 数据位送给LCD
 169   2                      delay(10);
 170   2              }
 171   1              LCD_CS=1;                               //片选关
 172   1              delay(20);
 173   1      }
 174          void lcd_init()
 175          {
 176   1              LCD_RES=1;
 177   1              delay(20000);
 178   1              lcd_send_cmd(0xE2);                     //复位
 179   1              lcd_send_cmd(0xA2);                     //d0:Set LCD drive voltage bias ratio 0=1/9bias 1=1/7bias
C51 COMPILER V7.20   SY8                                                                   08/10/2008 08:47:17 PAGE 4   

 180   1          lcd_send_cmd(0xC8);                 //d3:select COM output direction 0=normal 1=reverse
 181   1              lcd_send_cmd(0xA0);                     //d0:select SEG output direction 0=normal 1=reverse
 182   1              lcd_send_cmd(0xA6);                     //d0:0=display normal 1=reverse
 183   1              lcd_send_cmd(0xF8);                     //select booster ratio
 184   1              lcd_send_cmd(0x00);                     //select booster ratio d0&d1:00=4x
 185   1              lcd_send_cmd(0x2C);                     //d2:1=select internal power supply operating mode
 186   1              lcd_send_cmd(0x2E);
 187   1              lcd_send_cmd(0x2F);
 188   1              lcd_send_cmd(0x81);                     //select the VO output voltage electronic volume register
 189   1              lcd_send_cmd(0x14);                     //select the VO output voltage electronic volume register
 190   1              lcd_send_cmd(0x0E);                     //select the VO output voltage electronic volume register
 191   1              lcd_send_cmd(0xAF);                     //d0:LCD display ON=1/OFF=0
 192   1              lcd_send_cmd(0xE0);
 193   1              lcd_send_cmd(0x40);                     //Set the display RAM start line address
 194   1      }
 195          void lcd_set_page(uchar dat)
 196          {
 197   1              lcd_send_cmd(0xb0|dat);
 198   1      }
 199          void lcd_set_colume(uchar dat)
 200          {
 201   1              uchar tmp;
 202   1              tmp=dat>>4;
 203   1              lcd_send_cmd(0x10|tmp);                 //送列地址高四位
 204   1              tmp=0x0f&dat;
 205   1              lcd_send_cmd(tmp);                              //送列地址低四位
 206   1      }
 207          void lcd_clr()
 208          {
 209   1              uchar i,j;
 210   1              for(i=0;i<8;i++)
 211   1              {
 212   2                      lcd_set_page(i);
 213   2                      lcd_set_colume(0);
 214   2                      for(j=0;j<128;j++)
 215   2                              lcd_send_data(0x00);
 216   2              }
 217   1      }
 218          //-------------------------------------------------------
 219          //x:列(0-127) y:行(0-63)
 220          //-------------------------------------------------------
 221          void lcd_point(uchar x,uchar y) 
 222          {
 223   1              lcd_set_colume(x);                      //设置列                        
 224   1              lcd_set_page(y>>3);                     //设置页
 225   1              lcd_send_data(1<<(0x07&y));     
 226   1      }
 227          //-------------------------------------------------------
 228          //每个汉字宽16 高2页
 229          //
 230          //wordx:汉字列位置(0-111) wordy:汉字行(0-8) word:字模数组名
 231          //-------------------------------------------------------
 232          void lcd_word(uchar wordx,uchar wordy,uchar *word)      
 233          {
 234   1              uchar i;
 235   1              lcd_set_page(wordy);
 236   1              lcd_set_colume(wordx);
 237   1              for(i=0;i<16;i++)
 238   1                      lcd_send_data(*(word+i));
 239   1              lcd_set_page(wordy+1);
 240   1              lcd_set_colume(wordx);
 241   1              for(i=0;i<16;i++)
C51 COMPILER V7.20   SY8                                                                   08/10/2008 08:47:17 PAGE 5   

 242   1                      lcd_send_data(*(word+i+16));
 243   1      }
 244          
 245          void sysclk_init()
 246          {
 247   1              WDTCN=0XDE;                                     //关看门狗
 248   1              WDTCN=0XAD;
 249   1              OSCICN=0x07;                            //内部16M时钟
 250   1      }
 251          
 252          
 253          void port_init()
 254          {
 255   1              XBR0=0X00;                                      //CEX0,CEX1连接到端口
 256   1              XBR1=0X00;
 257   1              XBR2=0X40;                                      //交叉开关允许
 258   1              PRT0CF=0Xff;                            //P0口输出方式推挽
 259   1              PRT1CF=0Xff;                            //P1口输出方式推挽
 260   1              PRT2CF=0Xff;                            //P2口输出方式推挽
 261   1      }
 262          
 263          //----------------------------------------------
 264          //向flash的128字节扇区写数据  扇区地址0x8000-0x807f
 265          //dat 要存储的数据   x:存储在128字节扇区的第X字节
 266          //----------------------------------------------
 267          void flash_wr(uchar x,float dat)
 268          {
 269   1              float xdata *pwr=0x8000+8*x;//写指针
 270   1              FLSCL=0x89;
 271   1              PSCTL=0x03;                                     //擦除允许 写允许
 272   1              *pwr=1;
 273   1              PSCTL=0x01;                                     //写允许
 274   1              *pwr=dat;
 275   1      }
 276          
 277          //----------------------------------------------
 278          //读取flash的128字节扇区内容
 279          //----------------------------------------------
 280          float flash_re(uchar x)
 281          {
 282   1              float code *pre=0x8000+8*x;//读指针
 283   1              return *pre;
 284   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1061    ----
   CONSTANT SIZE    =    489    ----
   XDATA SIZE       =   ----      24
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -