- #include "stc12c5a60s2.h"
- #include<intrins.h>
- typedef unsigned char uchar;
- sbit LCD1602_RS=P1^0;
- sbit LCD1602_RW=P1^1;
- sbit LCD1602_E=P2^5;
- sbit du=P2^6;
- sbit we=P2^7;
- void Delayms(unsigned int ms)
- {
- int i,j;
- for(i=ms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void CloseSmg() //关数码管
- {
- P0=0;
- du=1;
- du=0;
- }
- void LCD1602_Ready()
- {
- P0=0XFF;
- LCD1602_RS=0;
- LCD1602_RW=1;
- LCD1602_E=1;
- while(P0&0X80);
- LCD1602_E=0;
- }
- void LCD1602_WriteCMD(uchar date)
- {
- LCD1602_Ready();
- LCD1602_RS=0;
- LCD1602_RW=0;
- P0=date;
- LCD1602_E=1;
- Delayms(5);
- LCD1602_E=0;
- }
- void LCD1602_WriteDate(uchar date)
- {
- LCD1602_Ready();
- LCD1602_RS=1;
- LCD1602_RW=0;
- P0=date;
- LCD1602_E=1;
- Delayms(5);
- LCD1602_E=0;
- }
- /***********设置光标所处位置**********/
- void LCD1602_Position(uchar row,uchar list) // 光标所处位置
- {
- if(row==0) LCD1602_WriteCMD(list|0x80);
- else LCD1602_WriteCMD(list|0xC0);
- }
- /*********显示单个字符到LCD1602上**********/
- void LCD1602_ShowChar(uchar row,uchar list,uchar address)
- {
- LCD1602_Position(row,list);
- LCD1602_WriteDate(address);
- }
- /*********显示字符串到LCD1602上**********/
- void LCD1602_ShowStr(uchar row,uchar list,uchar *str)
- {
- LCD1602_Position(row,list);
- while(*str!='\0')
- {
- LCD1602_WriteDate(*str++);
- }
- }
- /********初始化LCD1602************/
- void LCD1602_Init ()
- {
- CloseSmg(); //关数码管
- LCD1602_E=0;
- LCD1602_WriteCMD(0x38); //数据写入设置
- LCD1602_WriteCMD(0x01); //清屏
- LCD1602_WriteCMD(0x06); //光标及液晶屏移动
- LCD1602_WriteCMD(0x0C); //光标及液晶屏显示
- }
- void main()
- {
- LCD1602_Init ();
- LCD1602_ShowStr(0,0,"()';123zj");
- while(1);
- }
|