|
在暑假做的,参考了好多资料,比较适合新手学习。- #include<All.h>
- uchar code LCD1602_5x8[8]={0x80,0x00,0x07,0x08,0x08,0x08,0x08,0x07};//度的数组
- uchar xdata LCD1602_Write1_Buffer[16]=254;//第一行
- uchar xdata LCD1602_Write2_Buffer[16]=254;//第二行
- //延迟1ms
- void Delay1ms() //@24.000MHz
- {
- unsigned char i, j;
- _nop_();
- i = 32;
- j = 40;
- do
- {
- while (--j);
- } while (--i);
- }
- //写入寄存器
- void LCD1602_Write_Reg(uchar addr)
- {
- LCD1602_RS=0;//写命令
- LCD1602_RW=0;
- LCD1602_E=1;
- Delay1ms();
- LCD1602_Data=addr; //传输数据
- Delay1ms();
- LCD1602_E=0;
- }
- //读取数据
- uchar LCD1602_Read_Data(uchar addr)
- {
- LCD1602_RS=1;//写命令
- LCD1602_RW=0;
- LCD1602_E=1;
- Delay1ms();
- LCD1602_Data=addr;//传输数据
- Delay1ms();
- LCD1602_E=0;
-
- return addr;
- }
- //初始化
- void LCD1602_Init()
- {
- uchar idata i;
- LCD1602_RS=0;
- LCD1602_RW=0;
- LCD1602_E=0;
-
- LCD1602_Write_Reg(0x01);//清除显示
- Delay1ms();
- LCD1602_Write_Reg(0x02);//光标复位
- Delay1ms();
- LCD1602_Write_Reg(0x06);//光标和显示模式
- Delay1ms();
- LCD1602_Write_Reg(0xc0);//显示开关控制
- Delay1ms();
- LCD1602_Write_Reg(0x14);//光标和字符移一格
- Delay1ms();
- LCD1602_Write_Reg(0x38);//功能设置
- Delay1ms();
-
-
- //初始化度
- LCD1602_Write_Reg(0x40);
- for(i=0;i<8;i++)
- LCD1602_Read_Data(LCD1602_5x8[i]);
-
- }
- 余下代码看附件
复制代码
|
|