单片机课设(三篇课设均带带仿真图和源程序代码)

2019-03-04 14:16

12232 LCD PROTEUS仿真(51C)

12232在proteus 里模型用关键字P ,“12232” 查不出LCD的,要用1232 查找 。

好不容易得到模型,编写程序,一直不能成功。第一个字符正常,后面的就乱了。最后才明白:12232的模型和实物不一样,共4页(这和实物一样),每页只能从地址0开始,水平方向从左往右显示。另外,按实物的程序,仿真中显示是相反的,所以初始化时应改为反向显示,仿真显示才正常。

//12232LCD proteus仿真

//2012 01 20 E:\\DPJ_C\\12232\\12232UV4\\12232_2C.C #include #include #include\#define uchar unsigned char #define uint unsigned int #define LCD_DB P0 sbit E2=P3^5; sbit E1=P3^6; sbit A0=P3^7;

void WR_Mcom(uchar i) { E1=1; _nop_(); _nop_();

1 / 53

A0=0; _nop_(); _nop_(); LCD_DB=i; _nop_(); _nop_(); E1=0; _nop_(); _nop_(); }

void WR_Mdat(uchar i) { E1=1; _nop_(); _nop_(); A0=1; _nop_(); _nop_(); LCD_DB=i; _nop_(); _nop_(); E1=0; _nop_(); _nop_(); }

void WR_Scom(uchar i) { A0=0; _nop_(); _nop_(); E2=1; _nop_(); _nop_(); LCD_DB=i; _nop_(); _nop_(); E2=0; _nop_(); _nop_();

2 / 53

}

void WR_Sdat(uchar i) { A0=1; _nop_(); _nop_(); E2=1; _nop_(); _nop_(); LCD_DB=i; _nop_(); _nop_(); E2=0; _nop_(); _nop_(); }

void lcdini() {

WR_Mcom(0XE2); WR_Scom(0XE2);// WR_Mcom(0XAE);

WR_Scom(0XAE);//显示开关:关 WR_Mcom(0XA4);//动态显示 WR_Scom(0XA4);//

WR_Scom(0XA9);//1/32 占空比 WR_Mcom(0XA1); WR_Scom(0XA1); WR_Mcom(0XEE); WR_Scom(0XEE);//写模式 WR_Mcom(0X00);//起始列0 WR_Mcom(0XC0);//起始行0 WR_Scom(0X00); WR_Scom(0XC0); WR_Mcom(0XAF);

WR_Scom(0XAF);//显示开关:开 }

void SetPage(uchar page0,uchar page1) {

WR_Mcom(0xB8|page1);

3 / 53

WR_Scom(0xB8|page0); }

void SetAddress(uchar address0,uchar address1) {

WR_Mcom(address1&0x7F); WR_Scom(address0&0x7F); }

void clrscr( ) { uchar i; uchar page;

for (page=0;page<4;page++) {

SetPage(page,page); SetAddress(0,0); for (i=0;i<61;i++) {

WR_Mdat(0); WR_Sdat(0); } } }

void display() {

uchar i,j,page;

for(page=0;page<4;page++) {

SetPage(page,page); SetAddress(0,0); for(i=0;i<4;i++) {

for(j=0;j<15;j++) { if(page<2) {

WR_Mdat(chr16[2*i][j+page*15]); WR_Sdat(chr16[2*i+8][j+page*15]); } else

4 / 53

{

WR_Mdat(chr16[2*i+16][j+(page-2)*15]); WR_Sdat(chr16[2*i+24][j+(page-2)*15]); } } } } }

void main() { lcdini(); clrscr(); while(1) { display(); } }

/****************************************************************************************/

CHR16.H //

unsigned char code chr16[32][15]={

{0x00,0x40,0x40,0xDA,0xFE,0x24,0x20,0xF8,0xDE,0xD6,0xD8,0xC8,0x48,0x00,0x00,}, {0x08,0x0C,0x07,0x3F,0x3F,0x03,0x0F,0x1F,0x17,0xD5,0xFF,0x3F,0x11,0x11,0x01,},/*\梅\{0x00,0x00,0x10,0x10,0x9C,0x9C,0x10,0x98,0x9E,0x0E,0x88,0x88,0x08,0x00,0x00,}, {0x10,0x18,0x0C,0x7F,0x7F,0x08,0x08,0x3F,0x7F,0x43,0x41,0x40,0x78,0x38,0x00,},/*\花\{0x00,0x00,0x20,0x20,0xE0,0xE0,0x60,0xFA,0xFE,0x24,0x60,0x60,0x20,0x00,0x00,}, {0x00,0x10,0x19,0x0F,0x07,0x24,0x38,0x1F,0x07,0x0C,0x38,0x30,0x20,0x20,0x00,},/*\欢\{0x00,0x00,0x00,0x08,0xA8,0xA8,0xFE,0x7E,0xEC,0xC4,0x44,0x00,0x00,0x00,0x00,},

{0x08,0x08,0x08,0x08,0x6A,0xEF,0xAD,0xBD,0xD7,0x77,0x34,0x04,0x04,0x04,0x00,},/*\喜\{0x00,0x40,0x40,0x18,0x98,0x84,0xFC,0xFC,0xEC,0xFE,0xDE,0xC4,0x40,0x00,0x00,}, {0x00,0x10,0x3C,0x3E,0x42,0x45,0x6D,0x3D,0x1F,0x3F,0x63,0x60,0x40,0x40,0x40},/*\漫\{0x00,0x00,0x80,0x88,0x88,0x88,0xF8,0x7C,0x44,0x44,0x40,0x40,0x00,0x00,0x00,},

{0x00,0x20,0x20,0x30,0x1C,0x0F,0x03,0x07,0x0E,0x18,0x30,0x30,0x20,0x20,0x00,},/*\天\{0x00,0x80,0xF0,0x70,0x64,0x64,0xFC,0xFC,0xD6,0xD2,0x10,0x30,0x30,0x00,0x00,}, {0x00,0x00,0x00,0x44,0x55,0x55,0x55,0x5F,0x6A,0x3E,0x1E,0x00,0x00,0x00,0x00,},/*\雪\{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, {0x00,0x00,0x68,0x78,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*\,\{0x00,0x00,0x10,0xB0,0xB0,0x00,0xE0,0xF8,0xDE,0xD6,0x10,0x10,0x00,0x00,0x00,}, {0x00,0x08,0x0C,0x0F,0x23,0x3B,0x1B,0x42,0x7F,0x7F,0x09,0x39,0x31,0x00,0x00,},/*\冻\

5 / 53


单片机课设(三篇课设均带带仿真图和源程序代码).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:葡萄胎1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: