1602液晶显示C程序
电子类
1602液晶显示C程序2009-07-18 00:35* 描 述 :
* 此程序实现,完成液晶的驱动程序,可以显示任意的ASCII字符***************************************************************************
*/
#include <reg52.h> //调用头文件(单片机内部的寄存器定义)
/******本段为硬件I/O口定义********/
sbit KEY0 = P0 ^ 0; //KEY和发光管复用,请将跳线插到KEY端
sbit KEY1 = P0 ^ 1;
sbit KEY2 = P0 ^ 2;
sbit KEY3 = P0 ^ 3;
sbit DIG0 = P0 ^ 4; //数码管位0sbit DIG1 = P0 ^ 5; //数码管位1
sbit BUZZ = P3 ^ 3; //蜂鸣器sbit LCD_RW = P3 ^ 6;
sbit LCD_RS = P3 ^ 7;
sbit LCD_E = P3 ^ 4;
#define LED_SEG P1 //数码管#define LCD_DATA P2 //LCD DATA#define LCD_BUSY 0x80 // 用于检测LCD的BUSY标识(本程序中用的延时,未检测)
//LCD显示内容,定义到代码段
unsigned char code LcdBuf1[]= {"welcom!"};
unsigned char code LcdBuf2[]= {"MCU-STUDY-BOARD"};
//函数声明
void lcd_init(void);
void display_string(unsigned char x,unsigned char y,unsigned char *s);
void disp_selec(unsigned char bit_selec,unsigned char seg);
/**************************************************
** 函数名称: dellay
** 入口参数:h(unsigned int型)
** 出口参数:无
** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
****************************************************/
void dellay(unsigned int h)
{
while(h--); //0.01MS
}
/************主程序**************/
main()
{
lcd_init();
display_string(3,0,LcdBuf1); //显示第一行,从第3个位置开始
display_string(0,1,LcdBuf2); //显示第二行,从第0个位置开始
while(1); //单片机待机}
/**************************************************
** 函数名称: WriteDataLcd
** 入口参数:wdata(unsigned char型)
** 出口参数:无
** 功能描述: 写数据到LCD
****************************************************/
void WriteDataLcd(unsigned char wdata)
{
LCD_DATA=wdata;
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
dellay(100); //短暂延时,代替检测忙状态
LCD_E=1;
}
/**************************************************
** 函数名称: WriteCommandLcd
** 入口参数:wdata(unsigned char型)
** 出口参数:无
** 功能描述: 写命令到LCD
****************************************************/
void WriteCommandLcd(unsigned char wdata)
{
LCD_DATA=wdata;
LCD_RS=0;
LCD_RW=0;
LCD_E=0;
dellay(100); //短暂延时,代替检测忙状态
LCD_E=1;
}
//LCD初始化
void lcd_init(void)
{
LCD_DATA=0;
WriteCommandLcd(0x38);
dellay(1000);
WriteCommandLcd(0x38); //显示模式设置 WriteCommandLcd(0x08); //关闭显示
Write
CommandLcd(0x01); //显示清屏 WriteCommandLcd(0x06); //显示光标移动设置
WriteCommandLcd(0x0c); //显示开及光标移动设置
}
/****************************************
电子类
**********
** 函数名称: display_xy
** 入口参数:x(unsigned char型),y(unsigned char型)
** 出口参数:无
** 功能描述: 设置光标位置, x是列号,y是行号
****************************************************/void display_xy(unsigned char x,unsigned char y)
{
if(y==1)
x+=0x40;
x+=0x80;
WriteCommandLcd(x);
}
/********************************************************************
** 函数名称: display_char
** 入口参数:x(unsigned char型),y(unsigned char型),dat(unsigned char型)
** 出口参数:无
** 功能描述: 在具体位置显示单个字符,x是列号,y是行号
*********************************************************************/
void display_char(unsigned char x,unsigned char y,unsigned char dat)
{
display_xy(x,y);
WriteDataLcd(dat);
}
/*********************************************************************
** 函数名称: display_string
** 入口参数:x(unsigned char型),y(unsigned char型),s(指针型)
** 出口参数:无
** 功能描述: 在具体位置显示字符串,以/0结束,x是列号,y是行号
**********************************************************************
/
void display_string(unsigned char x,unsigned char y,unsigned char *s)
{
display_xy(x,y);
while(*s)
{
WriteDataLcd(*s);
s++;
}
}
相关推荐:
- [行业范文]美好的法语句子
- [行业范文]描写露珠的句子
- [行业范文]精彩禅语句子图片
- [行业范文]关于满嘴谎言的句子
- [行业范文]关于安静的句子48句
- [行业范文]关于小河的句子
- [行业范文]描写稻田的句子
- [行业范文]思念好朋友的句子
- [行业范文]赞美雪的句子
- [行业范文]早上激励人心的句子
- [行业范文]失恋忧伤的句子
- [行业范文]努力积极向上的句子
- [行业范文]对工作心灰意冷的句子
- [行业范文]失恋让人心疼的句子
- [行业范文]描写珍惜青春的句子
- [行业范文]表达思念的句子简短
- [行业范文]关于父爱的句子范例
- [行业范文]浪漫的英语句子
- [行业范文]关于周末的句子
- [行业范文]思念牵挂的句子
- 有关感恩班会课件简短(二篇)(感恩班会
- 2025年初二下乡军训心得体会800字(15篇
- 关于新员工培训方案汇编(关于新员工培
- 精选高考生寒假学习计划书(精)(高考生
- 毕业实训报告心得体会(3篇)(实训报告心
- 银行工作感悟及心得范文怎么写(四篇)(
- 精选领导干部个人政治画像报告通用(七
- 精选超市11.11活动促销方案(精品超市品
- 2025年怎么做自我介绍汇总(5篇)(至2025
- 最新企业错峰生产方案(26篇)(山西企业
- 最新暑期三下乡社会实践调研报告范本(
- 最新幼儿园大班教育教学总结怎么写(最
- 最新教师节主持词小学(优秀9篇)(教师节
- 关于小学安全教育教学方案(推荐)(关于
- 员工信模板范文怎么写(五篇)(员工信息
- 最新保险销售离职申请书(十六篇)(最新
- 最新XX小学防校园欺凌工作方案怎么写(2
- 有关特岗教师辞职信范文(推荐)(特岗教
- 精选党的建设工作要点简短(党的建设的
- 如何写安康杯竞赛活动总结汇总(4篇)(安




