#include"lcd.h"
/*******************************************************************************
* 函 数 名 : Lcd1602_Delay1ms
* 函数功能 : 延时函数,延时1ms
* 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/
void Lcd1602_Delay1ms(uint q) //误差 0us
{
uchar a,b;
for (; q>0; q--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
* 函 数 名 : LcdWriteCom
* 函数功能 : 向LCD写入一个字节的命令
*******************************************************************************/
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 0; //选择写入命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
/*******************************************************************************
* 函 数 名 : LcdWriteData
* 函数功能 : 向LCD写入一个字节的数据
*******************************************************************************/
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择写入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = dat << 4; //写入低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
/*******************************************************************************
* 函 数 名 : LcdInit()
* 函数功能 : 初始化LCD屏
*******************************************************************************/
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x32); //将8位总线转为4位总线
LcdWriteCom(0x28); //在四位线下的初始化
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
/*******************************************************************************
* 函 数 名 : welcome()
* 函数功能 : 欢迎用语
*******************************************************************************/
void welcome()
{
uchar b1[]={"Welcome Use DVM"};
uchar b2[]={"........"};
int i;
LcdWriteCom(0x80);
for(i=0;i<15;i++)
{
LcdWriteData(b1[i]);
Lcd1602_Delay1ms(70); //延时70ms
}
LcdWriteCom(0x80+0x48);
for(i=0;i<8;i++)
{
LcdWriteData(b2[i]);
Lcd1602_Delay1ms(200); //延时200ms
}
LcdWriteCom(0x01); //清屏
}
/*******************************************************************************
* 函 数 名 : Rol_init()
* 函数功能 : 电压界面的字符初始化
*******************************************************************************/
void Rol_init()
{
uchar a1[]={"Now VOL:"};
int i;
LcdWriteCom(0x80+0x01);
for(i=0;i<8;i++)
{
LcdWriteData(a1[i]);
}
LcdWriteCom(0x80+0x4f);
LcdWriteData('V');
}
基于51单片机的数字电压表设计
5星 · 超过95%的资源 需积分: 16 153 浏览量
2015-01-11
20:06:44
上传
评论 3
收藏 609KB RAR 举报
自然天地
- 粉丝: 4
- 资源: 2