完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、想出代码
//代码有网上,但是加上了自己的改动 //1602显示文字 #include #define uchar unsigned char ***it RS=P2^0; ***it RW=P2^1; ***it EN=P2^2; uchar txt_5x7[]={ //HD4478的字模对应的地址 //0x20前属于自定义的区域 "一二三年月日克心度" //写入的对应的汉字 }; uchar code table[]={ 0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//一 0x00,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,//二 0x00,0x1F,0x00,0x0E,0x00,0x1F,0x00,0x00,//三 0x02,0x04,0x0F,0x12,0x0F,0x0A,0x1F,0x02,//年 0x0F,0x09,0x0F,0x09,0x0F,0x09,0x09,0x11,//月 0x1F,0x11,0x11,0x1F,0x11,0x11,0x1F,0x00,//日 0x00,0x00,0x00,0x0A,0x15,0x0A,0x04,0x00,//坦克图案 0x00,0x04,0x15,0x0E,0x1F,0x0E,0x11,0x00,//心形图案 0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00//摄氏度 }; void delay(int x){ //延时 int i; while(x--) for(i=0;i<120;i++); } char Busy(){ //忙碌 char a=0; RS=0,RW=1,EN=1; if(P0&0x80==0x80) a=1; EN=0; return a; } void W_CMD(uchar dat){ //写命令 while(Busy()); RS=0,RW=0,EN=0; P0=dat; EN=1,delay(1),EN=0; } void W_DATA(uchar dat){ //写数据 while(Busy()); RS=1,RW=0,EN=0; P0=dat; EN=1,delay(1),EN=0; } void Init_LCD(){ //LCD初始化 int i=0; W_CMD(0x38); W_CMD(0x01); W_CMD(0x06); W_CMD(0x0c); W_CMD(0x40); //写地址,40后为自定义区的RAM空间;将5x7的字模写入HD4478中 for(i=0;i<72;i++) W_DATA(table); //写入字模 } void Show_txt(uchar x,uchar y,uchar i){ //显示对应位置的汉字或图案 if(y==0) W_CMD(0x80 |x); if(y==1) W_CMD(0xc0 |x); W_DATA(i); } void Show_str(uchar x,uchar y,uchar *s){ //显示字符串 int i=0; if(y==0) W_CMD(0x80 |x); if(y==1) W_CMD(0xc0 |x); for(i=0;i<16;i++) W_DATA(s); } void main(){ Init_LCD(); Show_str(0,0,"2020t08t26t "); //写满16个位,防止出现乱码,一个字占用一个位,但是如果写入汉字,会出现两个位出来(同样会出现乱码),故用一个字母来替代汉字的位置 Show_txt(4,0,3); //然后将字母替代掉(覆盖),写入对应的汉字 Show_txt(7,0,4); // Show_txt(10,0,5); //同理 Show_str(0,1,"29.3t "); //第二行和第一行同理 Show_txt(4,1,8); //覆盖 while(1){ //保持这个状态 } } 二、代码的细究 code的探索:51单片机的存储区的关系 ,这里不多说。 LCD的显示文字:总的过程为,先写入字模的数据,然后读出写入的数据信息,显示出来 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3456 浏览 1 评论
8988 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 13:57 , Processed in 1.020914 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号