/********************************************************************
* 文件名 : 12864液晶显示
* 描述 :
* 创建人 : 东流,2009年4月8日
* 版本号 : 2.0
***********************************************************************/
#include <reg52.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
uchar code IC_DAT[];
uchar code pic1[];
uchar code pic2[];
uchar code pic3[];
sbit RS = P2^5;
sbit WRD = P2^6;
sbit E = P2^7;
sbit PSB = P2^2;
sbit RES = P2^4;
void TransferData(char data1,bit DI);
void display(void);
void display_grapic(void);
void delayms(uint n);
void DisplayLine(uchar line1,uchar line2);
void DisplayGraphic(uchar code *adder);
void delay(uint m);
void lcd_mesg(uchar code *adder1);
uchar code IC_DAT[]={
" HOT-51 "
" "
" 单片机开发板 "
" 东流电子 "
};
uchar code IC_DAT2[]={
" 白日依山尽, " //0x80
" 欲穷千里目, " //0x90
" 黄河入海流。 " //0x88
" 更上一层楼。 " //0x98
};
void initinal(void) //LCD字库初始化程序
{
delay(40); //大于40MS的延时程序
PSB=1; //设置为8BIT并口工作模式
delay(1); //延时
RES=0; //复位
delay(1); //延时
RES=1; //复位置高
delay(10);
TransferData(0x30,0); //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(200); //大于100uS的延时程序
TransferData(0x30,0); //Function Set
delay(37); ////大于37uS的延时程序
TransferData(0x08,0); //Display on Control
delay(200); //大于100uS的延时程序
TransferData(0x10,0); //Cursor Display Control光标设置
delay(200); //大于100uS的延时程序
TransferData(0x0C,0); //Display Control,D=1,显示开
delay(200); //大于100uS的延时程序
TransferData(0x01,0); //Display Clear
delay(10); //大于10mS的延时程序
TransferData(0x06,0); //Enry Mode Set,光标从右向左加1位移动
delay(200); //大于100uS的延时程序
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void initina2(void) //LCD显示图片(扩展)初始化程序
{
delay(40); //大于40MS的延时程序
PSB=1; //设置为8BIT并口工作模式
delay(1); //延时
RES=0; //复位
delay(1); //延时
RES=1; //复位置高
delay(10);
TransferData(0x36,0); //Extended Function Set RE=1: extended instruction
delay(100); //大于100uS的延时程序
TransferData(0x36,0); //Extended Function Set:RE=1: extended instruction set
delay(37); ////大于37uS的延时程序
TransferData(0x3E,0); //EXFUNCTION(DL=8BITS,RE=1,G=1)
delay(100); //大于100uS的延时程序
TransferData(0x01,0); //CLEAR SCREEN
delay(100); //大于100uS的延时程序
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main(void)
{
while(1)
{
initina2(); //调用LCD显示图片(扩展)初始化程序
DisplayGraphic(pic2); //显示图片2
delayms(200);
initinal(); //调用LCD字库初始化程序
delay(100); //大于100uS的延时程序
lcd_mesg(IC_DAT); //显示中文汉字1
delayms(240);
delayms(240);
initinal(); //调用LCD字库初始化程序
delay(100); //大于100uS的延时程序
lcd_mesg(IC_DAT2); //显示中文汉字2
delayms(240);
delayms(240);
initinal();
}
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void lcd_mesg(unsigned char code *adder1)
{
unsigned char i;
TransferData(0x80,0); //Set Graphic Display RAM Address
delay(100);
for(i=0;i<32;i++)
{
TransferData(*adder1,1);
adder1++;
}
TransferData(0x90,0); //Set Graphic Display RAM Address
delay(100);
for(i=32;i<64;i++)
{
TransferData(*adder1,1);
adder1++;
}
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void TransferData(char data1,bit DI) //传送数据或者命令,当DI=0是,传送命令,当DI=1,传送数据.
{
WRD=0;
RS=DI;
delay(1);
P0=data1;
E=1;
delay(1);
E=0;
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delayms(unsigned int n) //延时10×n毫秒程序
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<2000;j++);
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay(unsigned int m) //延时程序
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<20;j++);
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void DisplayGraphic(unsigned char code *adder)
{
int i,j;
//*******显示上半屏内容设置
for(i=0;i<32;i++) //
{
TransferData((0x80 + i),0); //SET 垂直地址 VERTICAL ADD
TransferData(0x80,0); //SET 水平地址 HORIZONTAL ADD
for(j=0;j<16;j++)
{
TransferData(*adder,1);
adder++;
}
}
//*******显示下半屏内容设置
for(i=0;i<32;i++) //
{
TransferData((0x80 + i),0); //SET 垂直地址 VERTICAL ADD
TransferData(0x88,0); //SET 水平地址 HORIZONTAL ADD
for(j=0;j<16;j++)
{
TransferData(*adder,1);
adder++;
}
}
}
unsigned char code pic2[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
没有合适的资源?快使用搜索试试~ 我知道了~
51单片机基础示例c语言版带注释
共349个文件
bak:50个
lst:45个
obj:45个
需积分: 0 0 下载量 26 浏览量
2023-07-23
16:01:29
上传
评论
收藏 422KB ZIP 举报
温馨提示
包括多种流水灯闪烁,定时器,中断,数码管,键盘与显示设备的混合使用
资源推荐
资源详情
资源评论
收起资源包目录
51单片机基础示例c语言版带注释 (349个子文件)
12864 7KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
液晶_Uv2.Bak 2KB
外部中断的使用_Uv2.Bak 2KB
串行12864显示_Uv2.Bak 2KB
串口发送试验_Uv2.Bak 2KB
矩阵键盘LCD_Uv2.Bak 2KB
数码管静态显示_Uv2.Bak 2KB
闪烁灯一.Uv2.bak 2KB
闪烁灯一.Uv2.bak 2KB
闪烁灯一_Uv2.Bak 2KB
闪烁灯一_Uv2.Bak 2KB
外部中断的使用_Uv2.Bak 2KB
定时器的使用_Uv2.Bak 2KB
数码管动态显示_Uv2.Bak 2KB
闪烁灯二_Uv2.Bak 2KB
闪烁灯一_Uv2.Bak 2KB
12864_Uv2.Bak 2KB
串口接收试验_Uv2.Bak 2KB
液晶1602显示_Uv2.Bak 2KB
串口接收1602_Uv2.Bak 2KB
数码管动态显示_Uv2.Bak 2KB
数码管动态显示_Uv2.Bak 2KB
矩阵键盘LCD_Uv2.Bak 2KB
流水灯_Uv2.Bak 2KB
流水灯_Opt.Bak 2KB
点阵显示_Uv2.Bak 2KB
液晶_Opt.Bak 1KB
定时器的使用_Opt.Bak 1KB
外部中断的使用_Opt.Bak 1KB
外部中断的使用_Opt.Bak 1KB
串口接收试验_Opt.Bak 1KB
闪烁灯二_Opt.Bak 1KB
闪烁灯一_Opt.Bak 1KB
数码管动态显示_Opt.Bak 1KB
闪烁灯一.opt.bak 1KB
闪烁灯一_Opt.Bak 1KB
闪烁灯一.opt.bak 1KB
闪烁灯一_Opt.Bak 1KB
12864_Opt.Bak 1KB
数码管动态显示_Opt.Bak 1KB
数码管动态显示_Opt.Bak 1KB
串口接收1602_Opt.Bak 1KB
液晶1602显示_Opt.Bak 1KB
串口发送试验_Opt.Bak 1KB
矩阵键盘LCD_Opt.Bak 1KB
矩阵键盘LCD_Opt.Bak 1KB
串行12864显示_Opt.Bak 1KB
独立按键_Opt.Bak 1KB
数码管静态显示_Opt.Bak 905B
点阵显示_Opt.Bak 840B
独立按键_Uv2.Bak 0B
7920_580b.c 12KB
串口接收1602.c 5KB
矩阵键盘LCD.c 5KB
串行12864显示.c 4KB
液晶1602显示.c 3KB
外部中断的使用.c 3KB
12864.c 3KB
串口接收试验.c 3KB
矩阵键盘LCD.c 2KB
动态显示.c 2KB
外部中断的使用.c 2KB
闪烁灯一.c 2KB
定时器的使用.c 2KB
独立按键.c 2KB
静态显示.c 2KB
串口发送试验.c 2KB
点阵显示.c 1KB
闪烁灯二.c 1KB
流水灯.c 1KB
动态显示.c 1KB
动态显示.c 1KB
闪烁灯一.c 1KB
闪烁灯一.c 1KB
液晶.hex 5KB
矩阵键盘LCD.hex 2KB
矩阵键盘LCD.hex 1KB
外部中断的使用.hex 1KB
12864.hex 1KB
共 349 条
- 1
- 2
- 3
- 4
资源评论
2301_76634274
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功