?? lcd.c
字號:
#include "LCD.h"
/*LcdShow:在HD44780顯示屏上顯示數(shù)據(jù)--------------------*
*功能描述:在HD44780顯示屏上顯示str中的32個數(shù)據(jù) *
*參 數(shù):str:待顯示數(shù)組 *
*返 回:無 *
*------------------以上為子程序說明-------------------*/
void lcdshow(unsigned char str[])
{
unsigned char i;
LcdInit(); //調(diào)用Lcd初始化子程序
//顯示第1行
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,寫指令
LcdCtrl&=~(1<<LcdRW);
Lcd_Command(0b10000000); //后7位為DDRAM地址0x00
LcdCtrl|=1<<LcdRS; //RS、R/W=10,寫數(shù)據(jù)到DDRAM中
LcdCtrl&=~(1<<LcdRW);
for (i=0;i<10;i++) //逐個顯示
Lcd_Command(str[i]);
//顯示第2行
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,寫指令
LcdCtrl&=~(1<<LcdRW);
Lcd_Command(0b11000000); //后7位為DDRAM地址0x40
LcdCtrl|=1<<LcdRS; //RS、R/W=10,寫數(shù)據(jù)到DDRAM中
LcdCtrl&=~(1<<LcdRW);
for (i=10;i<18;i++) //逐個顯示
Lcd_Command(str[i]);
}
void lcdshow1(unsigned char str[],unsigned char n)
{
unsigned char i;
LcdInit(); //調(diào)用Lcd初始化子程序
//顯示第1行16個字符
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,寫指令
LcdCtrl&=~(1<<LcdRW);
Lcd_Command(0b10000000); //后7位為DDRAM地址0x00
LcdCtrl|=1<<LcdRS; //RS、R/W=10,寫數(shù)據(jù)到DDRAM中
LcdCtrl&=~(1<<LcdRW);
for (i=0;i<n;i++) //逐個顯示
Lcd_Command(str[i]);
/*顯示第2行16個字符
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,寫指令
LcdCtrl&=~(1<<LcdRW);
Lcd_Command(0b11000000); //后7位為DDRAM地址0x40
LcdCtrl|=1<<LcdRS; //RS、R/W=10,寫數(shù)據(jù)到DDRAM中
LcdCtrl&=~(1<<LcdRW);
for (i=16;i<32;i++) //逐個顯示
Lcd_Command(str[i]);*/
}
void lcdshow2(unsigned char str)
{
// unsigned char i;
//LcdInit(); //調(diào)用Lcd初始化子程序
//顯示第2行16個字符
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,寫指令
LcdCtrl&=~(1<<LcdRW);
//Lcd_Command(0b00010100); //光標右移一個字符位,AC自
Lcd_Command(0b00000110); //光標右移一個字符位,AC自
// 動加1 // 動加1
LcdCtrl|=1<<LcdRS; //RS、R/W=10,寫數(shù)據(jù)到DDRAM中
LcdCtrl&=~(1<<LcdRW);
//for (i=0;i<16;i++) //逐個顯示
Lcd_Command(str);
}
/*LcdInit:初始化Lcd------------------------------------*
*功 能:初始化Lcd(HD44780),設(shè)置顯示方式,清屏,AC自動+1 *
*參 數(shù):無 *
*返 回:無 *
*-----------------------------------------------------*/
void LcdInit(void)
{
unsigned char i;
LcdData_D=0b11111111; //數(shù)據(jù)口為輸出
LcdCtrl_D|=(1<<LcdE); //控制口低三位為輸出
LcdCtrl_D|=(1<<LcdRS);
LcdCtrl_D|=(1<<LcdRW);
LcdCtrl|=(1<<LcdE); //E=1
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,寫指令
LcdCtrl&=~(1<<LcdRW);
Lcd_Command(0b00111000); //8位數(shù)據(jù)接口,2行,5*7點陣
Lcd_Command(0b00001000); //關(guān)顯示,關(guān)光標顯示,不閃爍
Lcd_Command(0b00000001); //清屏
for(i=0;i<250;i++); //延時>1.6ms
for(i=0;i<250;i++);
Lcd_Command(0b00010100); //光標右移一個字符位,AC自
// 動加1
Lcd_Command(0b00001100); //開顯示,關(guān)光標顯示,不閃爍
}
/*Lcd_Command:執(zhí)行給定的cmd命令------------------------*
*功 能:執(zhí)行給定的cmd命令,且延時 *
*參 數(shù):cmd:待執(zhí)行的命令 *
*返 回:無 *
*-----------------------------------------------------*/
void Lcd_Command(unsigned char cmd)
{
unsigned char i;
for (i=0;i<20;i++); //等待>40us
LcdData=cmd; //把指令碼送到Lcd數(shù)據(jù)傳送口
LcdCtrl|=(1<<LcdE); //Lcd開始接收數(shù)據(jù)
asm("NOP");
asm("NOP");
asm("NOP");
LcdCtrl&=~(1<<LcdE); //Lcd結(jié)束接收數(shù)據(jù)
for (i=0;i<20;i++); //等待>40us
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -