Protues中单片机驱动仿真Word下载.docx
- 文档编号:619217
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:26
- 大小:218.48KB
Protues中单片机驱动仿真Word下载.docx
《Protues中单片机驱动仿真Word下载.docx》由会员分享,可在线阅读,更多相关《Protues中单片机驱动仿真Word下载.docx(26页珍藏版)》请在冰点文库上搜索。
D/I=“H”,表示DB7∽DB0为显示数据
D/I=“L”,表示DB7∽DB0为显示指令数据
R/W
R/W=“H”,E=“H”数据被读到DB7∽DB0
R/W=“L”,E=“H→L”数据被写到IR或DR
E
R/W=“L”,E信号下降沿锁存DB7∽DB0
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
DB0
数据线
DB1
DB2
DB3
DB4
DB5
DB6
DB7
CS1
H:
选择芯片(右半屏)信号
CS2
选择芯片(左半屏)信号
RET
复位信号,低电平复位
VOUT
-10V
LCD驱动负电压
LED+
LED背光板电源
LED-
通过控制CS1和CS2可以用来使能左半屏和右半屏,两个半屏的页和列都是相同的,如下图:
根据上图,如果我们需要在某个位置显示相应内容,如在左半屏的第0页和第2页的第0列至第15列的区域里显示汉字“农”。
按照上面的描述,我们就不需要在深究lcd12864液晶显示屏的内部原理以及相关指令,我们需要一个封装好的C模块文件(API),直接调用对应的函数即可。
具体如下:
(1)假设有一个已经编写好的函数LCDWriteNum(charleftright,charpage,charcolumn,charnum[]),
参数leftright用来使能左半屏或者右半屏(‘L’或者’R’),
参数page用来选择在哪一页显示(0~7),
参数column用来选择在哪一列显示(0~64),
参数num[]即为待显示数字的模。
这样我们要在12864的左半屏第2页和第3页的第3列至第10列的16×
8区域里显示数字5,可以调用函数LCDWriteNum(‘L’,2,3,num5[])即可(num5[]数组为数字5的模)。
(2)假设有一个已经编写好的函数LCDWriteNumBlack(charleftright,charpage,charcolumn,charnum[]),
8区域里以黑色背景来显示数字5,可以调用函数LCDWriteNumBlack(‘L’,2,3,num5[])即可(num5[]数组为数字5的模)。
(3)假设有一个已经编写好的函数LCDWriteChinese(charleftright,charpage,charcolumn,charchinese[]),
参数num[]即为待显示汉字的模。
8区域里显示汉字“农”,可以调用函数LCDWriteChinese(‘L’,2,3,nong[])即可(nong[]数组为汉字“农”的模)。
(4)假设有一个已经编写好的函数LCDWriteChineseBlack(charleftright,charpage,charcolumn,charchinese[]),
8区域里以黑色背景来显示汉字“农”,可以调用函数LCDWriteChineseBlack(‘L’,2,3,nong[])即可(nong[]数组为汉字“农”的模)。
下面附上lcd12864模块代码:
lcd12864.h文件内容:
#ifndef__LCD12864_H
#define__LCD12864_H
#include<
reg51.h>
#defineLCDDispOff0x3e
#defineLCDDispOn0x3f
#definePageAdd0xb8//页地址
#defineLCDColAdd0x40//列地址
#defineStartLine0xc0//行地址
#defineLCDDataP0
sbitLCDCs1=P2^0;
//片选1
sbitLCDCs2=P2^1;
//片选2
sbitLCDRet=P2^2;
//复位端
sbitLCDRw=P2^3;
//“数据/指令”选择
sbitLCDRs=P2^4;
//“读/写”选择
sbitLCDEn=P2^5;
//“读/写”使能
/*函数声明,供模块内部使用*/
staticvoidLCDDelay(chart);
//延时函数
staticvoidCheckState();
//检测忙标志
staticvoidwrite_com(charcmdcode);
//写指定
staticvoidwrite_data(charLCDDispdata);
//写数据
/*函数声明,外部调用*/
voidLCDInit();
//12864初始化
voidLCDClear();
//12864清屏
voidLCDWriteChinese(charleftright,charpage,charcolumn,charchinese[]);
//12864指定页指定列显示一个汉字
voidLCDWriteChineseBlack(charleftright,charpage,charcolumn,charchinese[]);
//12864指定页指定列显示一个汉字,以黑色背景白色文本显示
voidLCDWriteNum(charleftright,charpage,charcolumn,charnum[]);
//12864指定屏指定页指定列显示一个数字
voidLCDWriteNumBlack(charleftright,charpage,charcolumn,charnum[]);
//12864指定屏指定页指定列显示一个数字,以黑色背景白色文本显示
#endif
lcd12864.c文件内容:
#include"
lcd12864.h"
voidLCDDelay(chart)
{
chari,j;
for(i=0;
i<
t;
i++)
for(j=0;
j<
10;
j++);
}
voidCheckState()
chardat;
LCDRs=0;
LCDRw=1;
do
{
dat=0x00;
LCDEn=1;
LCDDelay
(2);
LCDEn=0;
dat=0x80&
dat;
}
while(!
(dat==0x00));
voidwrite_com(charcmdcode)
CheckState();
LCDRw=0;
LCDData=cmdcode;
LCDDelay
(2);
LCDEn=1;
LCDEn=0;
voidwrite_data(charLCDDispdata)
LCDRs=1;
LCDData=LCDDispdata;
voidLCDInit()
LCDDelay(100);
LCDCs1=1;
LCDCs2=1;
write_com(LCDDispOff);
write_com(PageAdd+0);
write_com(StartLine+0);
write_com(LCDColAdd+0);
write_com(LCDDispOn);
voidLCDClear()
chark,j;
LCDCs1=0;
LCDCs2=0;
for(k=0;
k<
8;
k++)
write_com(PageAdd+k);
64;
j++)
{
write_com(LCDColAdd+j);
write_data(0x00);
}
voidLCDWriteChinese(charleftright,charpage,charcolumn,charchinese[])
chari=0,j=0;
if(leftright=='
L'
)
LCDCs1=0;
LCDCs2=1;
elseif(leftright=='
R'
{
LCDCs1=1;
LCDCs2=0;
for(i=0;
2;
write_com(PageAdd+page+i);
write_com(LCDColAdd+column);
16;
j++)
write_data(chinese[16*i+j]);
voidLCDWriteChineseBlack(charleftright,charpage,charcolumn,charchinese[])
write_data(~chinese[16*i+j]);
voidLCDWriteNum(charleftright,charpage,charcolumn,charnum[])
write_data(num[8*i+j]);
voidLCDWriteNumBlack(charleftright,charpage,charcolumn,charnum[])
write_data(~num[8*i+j]);
现在我们可以小试牛刀了,把上面两个文件加入工程里,在main.c文件里添加如下代码:
/*汉字”安“,格式16*16*/
charcodean[]={0x80,0x90,0x8C,0x84,0x84,0x84,0xF5,0x86,0x84,0x84,0x84,0x84,0x94,0x8C,0x80,0x00,
0x00,0x80,0x80,0x84,0x46,0x49,0x28,0x10,0x10,0x2C,0x23,0x40,0x80,0x00,0x00,0x00};
/*汉字”徽“,格式16*16*/
charcodehui[]={0x10,0x88,0xC4,0x23,0xAE,0x68,0x2F,0x28,0xAE,0x20,0xD8,0x17,0x10,0xF0,0x10,0x00,
0x01,0x00,0xFF,0x48,0x29,0x8D,0xFB,0x09,0xAC,0x48,0x37,0x08,0x36,0x41,0x80,0x00};
/*汉字”农“,格式16*16*/
charcodenong[]={0x20,0x18,0x08,0x08,0x08,0xC8,0x38,0xCF,0x08,0x08,0x08,0x08,0xA8,0x18,0x00,0x00,
0x10,0x08,0x04,0x02,0xFF,0x40,0x20,0x00,0x03,0x04,0x0A,0x11,0x20,0x40,0x40,0x00};
/*汉字”业“,格式16*16*/
charcodeye1[]={0x00,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xC0,0x30,0x00,0x00,
0x40,0x40,0x40,0x43,0x40,0x7F,0x40,0x40,0x40,0x7F,0x42,0x41,0x40,0x40,0x40,0x00};
/*汉字”大“,格式16*16*/
charcodeda[]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00};
/*汉字”学“,格式16*16*/
charcodexue[]={0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00};
/*汉字”电“,格式16*16*/
charcodedian[]={0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,
0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00};
/*汉字”气“,格式16*16*/
charcodeqi1[]={0x20,0x10,0x4C,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xD4,0x04,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x40,0xF0,0x00};
/*汉字”工“,格式16*16*/
charcodegong[]={0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00};
/*汉字”程“,格式16*16*/
charcodecheng[]={0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,
0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00};
/*汉字”及“,格式16*16*/
charcodeji[]={0x00,0x00,0x02,0x02,0xFE,0x42,0x82,0x02,0x42,0x72,0x4E,0x40,0xC0,0x00,0x00,0x00,
0x80,0x40,0x30,0x0C,0x83,0x80,0x41,0x46,0x28,0x10,0x28,0x46,0x41,0x80,0x80,0x00};
/*汉字”其“,格式16*16*/
charcodeqi2[]={0x00,0x04,0x04,0x04,0xFF,0x24,0x24,0x24,0x24,0x24,0xFF,0x04,0x04,0x04,0x00,0x00,
0x08,0x08,0x88,0x48,0x2F,0x09,0x09,0x09,0x09,0x09,0x2F,0x48,0x88,0x08,0x08,0x00};
/*汉字”自“,格式16*16*/
charcodezi[]={0x00,0x00,0x00,0xF8,0x88,0x8C,0x8A,0x89,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,0x00};
/*汉字”动“,格式16*16*/
charcodedong[]={0x40,0x44,0xC4,0x44,0x44,0x44,0x40,0x10,0x10,0xFF,0x10,0x10,0x10,0xF0,0x00,0x00,
0x10,0x3C,0x13,0x10,0x14,0xB8,0x40,0x30,0x0E,0x01,0x40,0x80,0x40,0x3F,0x00,0x00};
/*汉字”化“,格式16*16*/
charcodehua[]={0x00,0x80,0x60,0xF8,0x07,0x00,0x00,0x00,0xFF,0x40,0x20,0x10,0x08,0x04,0x00,0x00,
0x01,0x00,0x00,0xFF,0x00,0x04,0x02,0x01,0x3F,0x40,0x40,0x40,0x40,0x40,0x78,0x00};
/*汉字”专“,格式16*16*/
charcodezhuan[]={0x40,0x40,0x48,0x48,0x48,0xC8,0x78,0x4F,0x48,0x48,0x48,0x48,0x48,0x40,0x40,0x00,
0x00,0x00,0x00,0x00,0x03,0x12,0x12,0x22,0x22,0x52,0x8A,0x06,0x00,0x00,0x00,0x00};
charcodeye2[]={0x00,0x10,0x60,0x80
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Protues 单片机 驱动 仿真