#LCD160212864编程PROTEUS仿真.docx

上传人:b****4 文档编号:12289104 上传时间:2023-04-17 格式:DOCX 页数:17 大小:140.88KB
下载 相关 举报
#LCD160212864编程PROTEUS仿真.docx_第1页
第1页 / 共17页
#LCD160212864编程PROTEUS仿真.docx_第2页
第2页 / 共17页
#LCD160212864编程PROTEUS仿真.docx_第3页
第3页 / 共17页
#LCD160212864编程PROTEUS仿真.docx_第4页
第4页 / 共17页
#LCD160212864编程PROTEUS仿真.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

#LCD160212864编程PROTEUS仿真.docx

《#LCD160212864编程PROTEUS仿真.docx》由会员分享,可在线阅读,更多相关《#LCD160212864编程PROTEUS仿真.docx(17页珍藏版)》请在冰豆网上搜索。

#LCD160212864编程PROTEUS仿真.docx

#LCD160212864编程PROTEUS仿真

第九章LCD显示

本章主要介绍LCD1602,12864.

9.1LCD1602

图9.1:

LCD1602显示

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineportP0//DB0~DB7数据口

sbite=P2^2。

//使能

sbitrw=P2^1。

//读写

sbitrs=P2^0。

//数据/命令

sbitbusy=P0^7。

//检测忙

//延时

voiddelay(uintn>

{

uinti。

for(。

n>0。

n-->

for(i=200。

i>0。

i-->。

}

//判断是否忙

voidcheck(>

{

rs=0。

rw=1。

//读e=1;

port=0x00。

e=1。

while(busy>。

e=0。

}

//写指令

voidsend(ucharcommand>

{

check(>。

rs=0。

//指令

rw=0。

//写e=0;

port=command。

e=1。

_nop_(>。

_nop_(>。

e=0。

//写入指令

}

//写数据

voidwrite(uchardat>

{

check(>。

rs=1。

//数据

rw=0。

port=dat。

e=1。

_nop_(>。

_nop_(>。

e=0。

}

//光标位置

voidpos(uintp>

{

send(p|0x80>。

//第一行第一个0x80;

}

voidinit(>

{

send(0x38>。

//8位数据,双列,5*7字形

delay(1>。

send(0x0c>。

//开0x08关

delay(1>。

send(0x06>。

//地址增加一

delay(1>。

send(0x01>。

//清屏

delay(1>。

}

voidmain(>

{

inti=0,j=0。

ucharnum[]="abcdefghijklmnop"。

ucharstring[]="abcdefghijklmnop"。

init(>。

delay(10>。

pos(0>。

delay(1>。

//或者用i=0。

//此步不能省。

删除后会发现不能显示第一个数。

while(num[i]!

='\0'>write(num[i++]>,delay(1>。

i=0。

pos(0x40>。

//第二行0x80|0x40

delay(1>。

//delay可以显示

while(string[i]!

='\0'>write(string[i++]>,delay(1>。

while(1>。

}

9.2LCD12864

图9.2:

LCD12864显示

C程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineportP0//DB0~DB7数据口

sbite=P2^0。

//使能

sbitrw=P2^1。

//读写

sbitrs=P2^2。

//数据/命令

sbitcs2=P2^3。

//片选

sbitcs1=P2^4。

sbitbusy=P0^7。

//检测忙

ucharcodehz[][32]={

{0x00,0x20,0x20,0x10,0x08,0x8F,0xB4,0x44,0x44,0xA4,0x9C,0x04,0x00,0x00,0x00,0x00,

0x02,0x02,0x02,0x01,0x7F,0x42,0x42,0x42,0x42,0x42,0x42,0x7F,0x01,0x03,0x01,0x00},

//"各",0

{0x00,0xC0,0x30,0xEC,0x03,0x2A,0xC8,0x09,0x0A,0x0E,0x08,0xE8,0x48,0x08,0x00,0x00,

0x01,0x00,0x00,0x7F,0x20,0x20,0x20,0x27,0x20,0x30,0x2E,0x21,0x20,0x20,0x20,0x00},

//"位",1

{0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,

0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00},

//"学",2

{0x00,0x00,0x02,0x02,0x0A,0x12,0x22,0x62,0x02,0x82,0x82,0x42,0x02,0xFE,0x00,0x00,

0x00,0x00,0x04,0x0C,0x04,0x02,0x02,0x01,0x01,0x00,0x20,0x40,0x80,0x7F,0x00,0x00},

//"习",3

{0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00,0x00,

0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08,0x00},

//"单",4

{0x00,0x00,0x00,0xFE,0x10,0x10,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x18,0x10,0x00,

0x80,0x40,0x30,0x0F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x00,0x00,0x00,0x00},

//"片",5

{0x08,0x08,0xC8,0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,

0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00},

//"机",6

{0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,

0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00},

//"的",7

{0x00,0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,

0x40,0x30,0x0F,0x00,0x20,0x40,0x3F,0x40,0x30,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00},

//"朋",8

{0x08,0x08,0x08,0x08,0x08,0xC8,0x7F,0x48,0x48,0x48,0x48,0xC8,0x08,0x08,0x08,0x00,

0x40,0x20,0x90,0x88,0x46,0x41,0x21,0x12,0x0C,0x0C,0x13,0x20,0x60,0xC0,0x40,0x00},

//"友",9

{0x80,0x40,0xF0,0x1C,0x03,0xF0,0x01,0x0E,0x04,0x00,0x04,0x04,0x04,0xFC,0x00,0x00,

0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x3F,0x00,0x00},

//"们",10

{0x80,0x84,0x84,0x94,0xA4,0xC4,0x85,0x86,0x84,0xC4,0xA4,0x94,0x84,0x84,0x80,0x00,

0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00},

//"辛",11

{0x40,0x44,0x44,0x44,0x44,0x5F,0x44,0xF4,0x44,0x44,0x5F,0x44,0x44,0x44,0x44,0x00,

0x00,0x00,0x00,0x7E,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,0x00},

//"苦",12

{0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

//"了",13

{0x02,0xFE,0x92,0x92,0x92,0xFE,0x12,0x11,0x12,0x1C,0xF0,0x18,0x17,0x12,0x10,0x00,

0x08,0x1F,0x08,0x08,0x04,0xFF,0x05,0x81,0x41,0x31,0x0F,0x11,0x21,0xC1,0x41,0x00},

//"联",14

{0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,

0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00},

//"系",15

{0x08,0x08,0x08,0x08,0x08,0x08,0xF9,0x4A,0x4C,0x48,0x48,0xC8,0x08,0x08,0x08,0x00,

0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x20,0x40,0x40,0x3F,0x00,0x00,0x00,0x00},

//"方",16

{0x00,0x08,0x88,0x88,0x88,0x88,0x88,0x08,0xFF,0x08,0x09,0x0E,0x0A,0x08,0x00,0x00,

0x00,0x20,0x60,0x30,0x1F,0x10,0x08,0x08,0x00,0x07,0x18,0x20,0x40,0x80,0x70,0x00},

//"式",17

}。

ucharcodenum[][16]={

{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},

//"0",0

{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},

//"1",1

{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},

//"2",2

{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},

//"3",3

{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},

//"4",4

{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},

//"5",5

{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},

//"6",6

{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},

//"7",7

{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},

//"8",8

{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00}//"9",9

}。

ucharcodesign[][16]={

{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},

//"!

",0

{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},

//":

",1

{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00}

//"Q",2

}。

//延时

voiddelay(uintn>

{

uinti。

for(。

n>0。

n-->

for(i=200。

i>0。

i-->。

}

//判断是否忙

voidcheck(>

{

rs=0。

rw=1。

//读e=1;

port=0x00。

e=1。

while(busy>。

e=0。

}

//写指令

voidsendcommand(ucharcommand>

{

check(>。

rs=0。

//指令

rw=0。

//写e=0;

port=command。

e=1。

e=0。

//写入指令

}

//写数据

voidwritedata(uchardat>

{

check(>。

rs=1。

//数据

rw=0。

port=dat。

e=1。

e=0。

}

//选屏幕0——全屏,1——左屏,2——右屏;

voidselect(uintn>

{

switch(n>

{

case0:

cs1=0。

cs2=0。

break。

//低电平选中

case1:

cs1=0。

cs2=1。

break。

//cs1左屏

case2:

cs1=1。

cs2=0。

break。

//cs2右屏

}

}

//页

voidsetpage(ucharpage>

{

page=page&0x07。

page=page|0xb8。

sendcommand(page>。

}

//列

voidsetcolumn(ucharcolumn>

{

column=column&0x3f。

column=column|0x40。

sendcommand(column>。

}

//起始行

voidsetline(ucharline>

{

line=line&0x3f。

line=line|0xc0。

sendcommand(line>。

}

//屏幕开关显示0——关,1——开;

voidseton(uintn>

{

n=n|0x3e。

sendcommand(n>。

}

//清屏0——全屏,1——左屏,2——右屏;

voidclear(uintn>

{

uchari,j。

select(n>。

for(i=0。

i<8。

i++>

{

setpage(i>。

setcolumn(0>。

for(j=0。

j<64。

j++>

writedata(0>。

//置0清空

}

}

//初始化

voidinit(>

{

check(>。

seton(1>。

clear(0>。

setline(0>。

}

//显示汉字16*16显示

voidshow16(ucharpage,ucharcolumn,ucharscreen,ucharmethod,uchar*str>

{

uchari,j。

select(screen>。

j=0。

setpage(page>。

setcolumn(column>。

for(i=0。

i<16。

i++>

{if(method==1>writedata(~str[j++]>。

//method为显示方式。

当等于1时,反白。

elsewritedata(str[j++]>。

}

setpage(page+1>。

setcolumn(column>。

for(i=0。

i<16。

i++>

{if(method==1>writedata(~str[j++]>。

elsewritedata(str[j++]>。

}

}

//显示数字8*8显示

voidshow8(ucharpage,ucharcolumn,ucharscreen,ucharmethod,uchar*str>

{

uchari,j。

select(screen>。

j=0。

setpage(page>。

setcolumn(column>。

for(i=0。

i<8。

i++>

{if(method==1>writedata(~str[j++]>。

elsewritedata(str[j++]>。

}

setpage(page+1>。

setcolumn(column>。

for(i=0。

i<8。

i++>

{if(method==1>writedata(~str[j++]>。

elsewritedata(str[j++]>。

}

}

voidwelcome(>

{

uinti=0,j。

for(j=0。

j<3。

j++,j++>

for(i=0。

i<4。

i++>

{show16(j,16*i,1,0,hz[i+j*4]>。

if(i+4+j*4<14>

show16(j,16*i,2,0,hz[i+4+j*4]>。

}

show8(2,32,2,0,sign[0]>。

//!

for(i=0。

i<4。

i++>

{

show16(4,16*i,1,0,hz[14+i]>。

}

show8(4,0,2,0,sign[1]>。

//:

show8(6,0,1,0,sign[2]>。

//Q

show8(6,8,1,0,sign[2]>。

//Q

show8(6,16,1,0,sign[1]>。

//:

//以下数字均为反白显示。

show8(6,32,1,1,num[1]>。

//1

show8(6,40,1,1,num[3]>。

//3

show8(6,48,1,1,num[7]>。

//7

show8(6,56,1,1,num[6]>。

//6

show8(6,0,2,1,num[0]>。

//0

show8(6,8,2,1,num[8]>。

//8

show8(6,16,2,1,num[9]>。

//9

show8(6,24,2,1,num[7]>。

//7

show8(6,32,2,1,num[7]>。

//7

show8(6,40,2,1,num[3]>。

//3

}

voidmain(>

{

init(>。

delay(200>。

welcome(>。

while(1>。

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1