完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
引脚图
#include《reg52.h》#include《intrins.h》#define uchar unsigned char#define uint unsigned int#define out P0***it RS=P2^7;***it RW=P2^6;***it E=P2^5;void lcd_initial(void); //LCD初始化函数void check_busy(void); //检查是否忙碌函数void write_command(uchar com); //写命令函数void write_data(uchar dat); //写数据函数void string(uchar ad,uchar *s); //显示字符串函数void delay(uint); //延时函数void main(void) { lcd_initial(); //调用初始化函数 while(1) { string(0x85,“m***”); string(0xC2,“185*****5260”); delay(100); write_command(0x01); delay(100); } }void delay(uint j) //1ms的延时{ uchar i=250; for(;j》0;j--) { while(--i); i=249; while(--i); i=250; }} void check_busy(void){ uchar dt; do { dt=0xff; //dt为变量单元,初值为0xff E=0; RS=0; //RS等于0,E=1时,才能够进行读忙碌状态 RW=1; E=1; dt=out; //out为P0口,将P0口的状态送给dt; }while(dt&0x80); E=0;}void write_command(uchar com){ check_busy(); //检查是否忙碌,检查BF标志位,如果BF=1,则繁忙 E=0; RS=0; //RS,E同时为零时,才可以写入命令; RW=0; out=com; //将命令com写入P0; E=1; //按规定执行命令时,E应为正脉冲,即正跳变,所以前面应该先直零 _nop_(); //空操作给硬件反应时间,此函数包含在intrins里面 E=0; delay(1); }void write_data(uchar dat){ check_busy(); E=0; RS=1; RW=0; out=dat; E=1; _nop_(); E=0; delay(1); }void lcd_initial(void) //液晶显示器初始化函数{ write_command(0x38); //两行显示,5x7点阵,8位数据 write_command(0x0C); //开整体显示,光标关,无闪烁 write_command(0x06); //写入一个字符后,地址指针加一 write_command(0x01); //清屏 delay(1);}void string(uchar ad,uchar *s){ write_command(ad); while(*s》0) { write_data(*s++); delay(100); }} |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1085浏览 2评论
700浏览 1评论
453浏览 0评论
194浏览 0评论
332浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 19:00 , Processed in 1.351510 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号