12864串行控制2.doc_第1页
12864串行控制2.doc_第2页
12864串行控制2.doc_第3页
12864串行控制2.doc_第4页
12864串行控制2.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* 模块名称:st7920 串行方式驱动12864液晶驱动 驱动芯片:st7920*/#include #include #include #include #define uchar unsigned char#define uint unsigned intsbit CS = P24;sbit SCK = P26;sbit SID = P25;sbit RST =P23; /low active 可以不用,也就是说,只用两条线和LCD通信sbit PSB= P21;sbit key=P10;uchar code AC_TABLE=0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, /第一行汉字位置0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, /第二行汉字位置0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, /第三行汉字位置0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, /第四行汉字位置;uchar code str2=欢迎光临sunson!;uchar code str1=黄河远上白云间,一片孤城万仞山。羌笛何须怨杨柳,春风不度玉门关。;uchar code bmp1;/* * 函数名称 :SendByte * 功能描述 :串口发送一个字节*/void SendByte(uchar Dbyte) uchar i; for(i=0;i8;i+) SCK = 0; if(Dbytei)&0x80) SID=1; else SID=0; /移出的位给SID SCK = 1; SCK = 0; /* 函数名称 :ReceiveByte* 功能描述 :串口接收一个字节*/uchar ReceiveByte(void) uchar i,temp1,temp2; temp1 = 0; temp2 = 0; for(i=0;i8;i+) temp1=temp11; SCK = 0; SCK = 1; SCK = 0; if(SID) temp1+; for(i=0;i8;i+) temp2=temp24; return (temp1+temp2);/* 函数名称 :CheckBusy*/void CheckBusy( void ) do SendByte(0xfc); /11111,RW(1),RS(0),0 while(0x80&ReceiveByte(); /BF(.7)=1 Busy/* 函数名称 :WriteCommand*/void WriteCommand(uchar Cbyte ) CS = 1; CheckBusy(); SendByte(0xf8); /11111,RW(0),RS(0),0 SendByte(0xf0&Cbyte); /高四位 SendByte(0xf0&Cbyte4);/低四位(先执行) CS = 0;/* 函数名称 :WriteData*/void WriteData(uchar Dbyte ) CS = 1; CheckBusy(); SendByte(0xfa); /11111,RW(0),RS(1),0 SendByte(0xf0&Dbyte); /高四位 SendByte(0xf0&Dbyte4);/低四位(先执行) CS = 0;/* 函数名称 :ReadData*/uchar ReadData( void ) CheckBusy(); SendByte(0xfe); /11111,RW(1),RS(1),0 return ReceiveByte();/*Fucntion: delay10US(char x)Description: delay for 10 usParameter: xAuthor: Date: July,7th,2005*/void delay10US(uchar x) uchar k; for(k=0;kx;k+); /*Fucntion: delay1MS(char x)Description: delay for 10 usParameter: x delay for 1MSAuthor: Date: July,7th,2005*/void delay1MS(uchar x) uchar k,j; x=x1; for(k=0;kx;k+) for(j=0;j255;j+)_nop_();/* 函数名称 :LcmInit*/void LcmInit( void ) RST=0; delay1MS(50); RST=1; WriteCommand(0x30); /8BitMCU,基本指令集合 WriteCommand(0x02); /AC归0,不改变DDRAM内容 WriteCommand(0x0C); /显示ON,游标OFF,游标位反白OFF WriteCommand(0x01); /清屏,AC归0 WriteCommand(0x06); /写入时,游标右移动/* 函数名称 :LcmClearTXT* 功能描述 :文本区清RAM函数*/void LcmClearTXT( void ) uchar i; WriteCommand(0x30); /8BitMCU,基本指令集合 WriteCommand(0x80); /AC归起始位 for(i=0;i64;i+) WriteData(0x20);/* 函数名称 :LcmClearBMP* 功能描述 :图形区清RAM函数*/void LcmClearBMP( void ) uchar i,j; WriteCommand(0x34); /8Bit扩充指令集,即使是36H也要写两次 WriteCommand(0x36); /绘图ON,基本指令集里面36H不能开绘图 for(i=0;i32;i+) /12864实际为256x32 WriteCommand(0x80|i); /行位置 WriteCommand(0x80); /列位置 for(j=0;j32;j+) /256/8=32 byte WriteData(0); /* 函数名称 :PutStr*/void PutStr(uchar row,uchar col,uchar *puts) WriteCommand(0x30); /8BitMCU,基本指令集合 WriteCommand(AC_TABLE8*row+col); /起始位置 while(*puts != 0) /判断字符串是否显示完毕 if(col=8) /判断换行 /若不判断,则自动从第一行到第三行 col=0; row+; if(row=4) row=0; /一屏显示完,回到屏左上角 WriteCommand(AC_TABLE8*row+col); WriteData(*puts); /一个汉字要写两次 puts+; WriteData(*puts); puts+; col+; /* 函数名称 :PutBMP*/void PutBMP(uchar *puts) uint x=0; uchar i,j; WriteCommand(0x34); /8Bit扩充指令集,即使是36H也要写两次 WriteCommand(0x36); /绘图ON,基本指令集里面36H不能开绘图 for(i=0;i32;i+) /12864实际为256x32 WriteCommand(0x80|i); /行位置 WriteCommand(0x80); /列位置 for(j=0;j16;j+) /256/8=32 byte /列位置每行自动增加 WriteData(putsx); x+; for(i=0;i32;i+) /12864实际为256x32 WriteCommand(0x80|i); /行位置 WriteCommand(0x88); /列位置 for(j=0;j16;j+) /256/8=32 byte /列位置每行自动增加 WriteData(putsx); x+; /* 函数名称 :DisplayDots*/void DisplayDots(uchar DotByte) uchar i,j; WriteCommand(0x34); /8Bit扩充指令集,即使是36H也要写两次 WriteCommand(0x36); /绘图ON,基本指令集里面36H不能开绘图 for(i=0;i32;i+) /12864实际为256x32 WriteCommand(0x80|i); /行位置 WriteCommand(0x80); /列位置 for(j=0;j4; Tier_bit=X&0x0f ; if(Y32) Row=Y ; else Row=Y-32; Tier+=8; WriteCommand(Row+0x80); WriteCommand(Tier+0x80); ReadData(); ReadOldH=ReadData(); ReadOldL=ReadData(); WriteCommand(Row+0x80); WriteCommand(Tier+0x80); if(Tier_bit8) switch(Color) case 0 : ReadOldH&=(0x01(7-Tier_bit); break ; case 1 : ReadOldH|=(0x01(7-Tier_bit); break ; case 2 : ReadOldH=(0x01(7-Tier_bit); break ; default : break ; WriteData(ReadOldH); WriteData(ReadOldL); else switch(Color) case 0 : ReadOldL&=(0x01(15-Tier_bit); break ; case 1 : ReadOldL|=(0x01(15-Tier_bit); break ; case 2 : ReadOldL=(0x01(15-Tier_bit); break ; default : break ; WriteData(ReadOldH); WriteData(ReadOldL); WriteCommand(0x30);/* 函数名称 main*/void main( void ) uint i,j; PSB=0; key=1; LcmInit(); LcmClearTXT(); LcmClearBMP(); while(1) LcmClearTXT(); PutBMP(bmp1); while(key); DisplayDots(0x55); while(key); LcmClearBMP(); PutStr(0,0,str1); while(key); LcmClearTXT(); DisplayDots(0xaa); while(key); LcmClearBMP(); for(i=4;i124;i+) j=30-27*sin(i-4)*3.14/30); /正弦波显示 DrawPoint(i,j,1); while(key); uchar code bmp1=/*/ / 位图点阵占用1024字节/*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x3F,0xC0,0x00,0x07,0x07,0x00,0x04,0x01,0x00,0x00,0x38,0x60,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x78,0xE0,0x00,0x3F,0x83,0x80,0x06,0x03,0x80,0x00,0x1C,0x70,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x38,0x70,0x00,0xFF,0x07,0x80,0x06,0x39,0x80,0x00,0x1F,0x70,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x1C,0x30,0x00,0x7C,0x0E,0x00,0x06,0x19,0xC0,0x00,0x1F,0x80,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x1C,0x30,0x00,0x3E,0x1C,0x00,0x06,0x1F,0xC0,0x00,0x7F,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x3E,0x30,0x00,0x62,0x1A,0x00,0x0F,0x79,0x00,0x03,0xFE,0x00,0x00,0x01,0x80,0x00,0x00,0x60,0x0F,0x00,0x3F,0x00,0x00,0x00,0x3C,0x00,0xC0,0x00,0x00,0x01,0x80,0x07,0x76,0x18,0x00,0xC3,0xC1,0x00,0x1F,0xFB,0x00,0x03,0xFE,0x00,0x00,0x01,0x80,0x00,0x01,0xE0,0x3F,0xC0,0xF1,0xC0,0x00,0x00,0xF0,0x01,0xC0,0x00,0x00,0x01,0x80,0x07,0x6E,0x18,0x00,0xCF,0xC1,0x80,0x7E,0x3F,0x80,0x01,0xE2,0x00,0x00,0x01,0x80,0x00,0x07,0xE0,0x7F,0xE0,0xE0,0xE0,0x00,0x03,0xC0,0x03,0xC0,0x00,0x00,0x01,0x80,0x07,0x7F,0x98,0x00,0xFE,0x83,0x81,0xFC,0x1E,0xC0,0x00,0x83,0x00,0x00,0x01,0x80,0x00,0x0F,0xE0,0x63,0xE1,0xE0,0xE0,0x00,0x07,0x00,0x03,0xC0,0x00,0x00,0x01,0x80,0x06,0xFF,0xD8,0x01,0xFA,0x87,0x00,0xFD,0xF8,0xC0,0x01,0x73,0x00,0x00,0x01,0x80,0x00,0x01,0xE0,0xC1,0xE1,0xE0,0xE0,0x00,0x0F,0x00,0x07,0xC0,0x00,0x00,0x01,0x80,0x0F,0xD9,0xD8,0x03,0xE3,0x0E,0x80,0xFE,0x7E,0xC0,0x03,0xF9,0x80,0x00,0x01,0x80,0x00,0x01,0xE0,0x01,0xE1,0xF0,0xE0,0x00,0x1E,0x00,0x0B,0xC0,0x00,0x00,0x01,0x80,0x0D,0xB8,0x18,0x1F,0xC3,0x08,0xC0,0x0E,0x6D,0x80,0x03,0xF1,0x80,0x00,0x01,0x80,0x00,0x01,0xE0,0x01,0xE0,0xFD,0xC7,0xEF,0x9E,0x00,0x13,0xC0,0x00,0x00,0x01,0x80,0x0D,0xFE,0x18,0x0F,0xC2,0x10,0xE0,0x1C,0x3F,0x00,0x03,0xE0,0xC0,0x00,0x01,0x80,0x00,0x01,0xE0,0x01,0xC0,0xFF,0x83,0xC6,0x1F,0xE0,0x13,0xC0,0x00,0x00,0x01,0x80,0x0D,0xCE,0x18,0x06,0xC2,0x01,0xC0,0x38,0x3E,0x00,0x00,0xE8,0xC0,0x00,0x01,0x80,0x00,0x01,0xE0,0x01,0x80,0x3F,0x81,0xE4,0x3C,0x78,0x23,0xC0,0x00,0x00,0x01,0x80,0x0C,0x4C,0x18,0x00,0xC2,0x03,0x80,0x78,0x1F,0xF0,0x00,0xFC,0x60,0x00,0x01,0x80,0x00,0x01,0xE0,0x03,0x80,0x3F,0xC1,0xE8,0x3C,0x78,0x43,0xC0,0x00,0x00,0x01,0x80,0x0C,0x5E,0x18,0x00,0xC2,0x07,0x00,0x68,0x3F,0xF8,0x03,0xFC,0x22,0x00,0x01,0x80,0x00,0x01,0xE0,0x03,0x00,0x6F,0xC0,0xF0,0x3C,0x3C,0x83,0xC0,0x00,0x00,0x01,0x80,0x06,0x3F,0x38,0x01,0x82,0x0E,0x00,0x09,0xF8,0x00,0x03,0xC0,0x32,0x00,0x01,0x80,0x00,0x01,0xE0,0x06,0x00,0xC3,0xE0,0x78,0x3C,0x3C,0xFF,0xF0,0x00,0x00,0x01,0x80,0x07,0x10,0x38,0x00,0x82,0x1C,0x00,0x0B,0x99,0xC0,0x03,0x00,0x1A,0x00,0x01,0x80,0x00,0x01,0xE0,0x0C,0x11,0xC3,0xE0,0x78,0x3C,0x3C,0xFF,0xF0,0x00,0x00,0x01,0x80,0x03,0xFF,0xF0,0x00,0x02,0x38,0x00,0x08,0x30,0xE0,0x02,0x00,0x1E,0x00,0x01,0x80,0x00,0x01,0xE0,0x08,0x11,0xC1,0xE0,0x7C,0x3C,0x3C,0xFF,0xF0,0x00,0x00,0x01,0x80,0x01,0xEF,0xF0,0x00,0x00,0xE0,0x00,0x08,0xE0,0x60,0x00,0x00,0x0E,0x00,0x01,0x80,0x00,0x01,0xE0,0x1F,0xF1,0xC1,0xE0,0xBC,0x1C,0x3C,0x03,0xC0,0x00,0x00,0x01,0x80,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x07,0x00,0x01,0x80,0x00,0x01,0xE0,0x3F,0xE1,0xC1,0xC0,0x9E,0x1E,0x38,0x03,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x80,0x00,0x01,0xF0,0x7F,0xE0,0xE3,0x83,0x1F,0x0E,0x70,0x03,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x0F,0xFC,0xFF,0xE0,0x3F,0x07,0xDF,0x83,0xE0,0x03,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论