为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

一个1602显示汉字程序

2017-09-27 5页 doc 18KB 23阅读

用户头像

is_637320

暂无简介

举报
一个1602显示汉字程序一个1602显示汉字程序 //************************************* //lcd头文件 //************************************* #include #include #include #define lcd_data P0 //定义端口 #define uchar unsigned char #define uint unsigned int sbit RS=P2^1; sbit RW=P2^2; sbit E=P2^3; sbi...
一个1602显示汉字程序
一个1602显示汉字程序 //************************************* //lcd头文件 //************************************* #include #include #include #define lcd_data P0 //定义端口 #define uchar unsigned char #define uint unsigned int sbit RS=P2^1; sbit RW=P2^2; sbit E=P2^3; sbit BF=P0^7; //*************************************** //延时函数 //*************************************** void delay(uint i) { while(i--); } //*************************************** //写控制字 //*************************************** void write_struct(uchar temp) { E=0; delay(100); //while(BF==1); RW=0; RS=0; lcd_data=temp; delay(3); E=1; delay(3); E=0; } //************************************** //写数据 //************************************** void write_data(uchar temp) { delay(100); //while(BF==1); E=0; RS=1; RW=0; lcd_data=temp; E=1; delay(3); E=0; } //*************************************** //获得显示地址 //x示是第几行显示 (0-1) //y表示某行的第几个字符(0-15) //*************************************** uchar getchar_adress(uchar x,uchar y) { uchar address; if(x==0) address=0x80+y; //第一行 else address=0xc0+y; //第二行 return address; } //*************************************** //lcd初始化 //*************************************** void lcd_init() { write_struct(0x38); //设置接口DB宽度(8位)和LCM显示行数(2行) write_struct(0x08); // write_struct(0x0c); //设置光标为移位模式 write_struct(0x01); //执行清屏操作 write_struct(0x06); //设置光标为加1模式 } //*************************************** //向CGRAM写入数据 //*************************************** void write_cgram(unsigned char adress,unsigned char *p) { char i; for(i=0;i<8;i++) { write_struct(adress+i); write_data(p[i]); } } //*************************************** //显示CGRAM数据 //x表示是第几行显示 (0-1) //y表示某行的第几个字符(0-15) //*************************************** void display_cgram(unsigned char x,uchar y,uchar *CgramData) { uchar address,cgram_address,p; address=getchar_adress(x,y); //获得CGRAM字符显示位置 cgram_address=0x40+(address&0x07)*8; //CGRAM初始地址 p=address&0x07; write_cgram(cgram_address,CgramData); write_struct(address); //设置DDRAM地址 write_data(p); } //显示字符 //*************************************** void display(char temp0,char *p) { write_struct(temp0); delay(3); write_data(*p); } //**************************************** //显示字符串 //**************************************** void display_str(uchar x,uchar y,char *p) { char i,temp0; temp0=getchar_adress(x,y); write_struct(temp0); for(i=0;i<16;i++) { if(*p=='\0') break; write_data(*p); p++; } } //**************************************** //清屏 //**************************************** void lcd_clr() { write_struct(0x01); } //*****************************************************end
/
本文档为【一个1602显示汉字程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索