完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void write_cmd(uchar cmd)
{ LCD_RS=0; LCD_RW=0; LCD_EN=0; 0=cmd; delay(5); LCD_EN=1; delay(5); LCD_EN=0; } 为什么这个函数从第一句执行后,不执行下一句,而是直接跳到倒数第二句了,求解。。。。 |
|
相关推荐
6个回答
|
|
有可能是編譯器優化的結果,你繼續執行看看.
|
|
|
|
可以写数据吗?如果可以就无需理会
|
|
|
|
奇怪的是数据函数也是这样,LCD根本不能初始化
|
|
|
|
那就真奇怪了.全编译试试.
|
|
|
|
#include
#include #include #define uchar unsigned char #define uint unsigned int #define LCD_date 0//数据口 ***it LCD_RS=P3^5;//寄存器选择入口 ***it LCD_RW=P3^6;//液晶读/写控制 ***it LCD_EN=P3^4;//液晶使能控制 ***it LCD_PSB=P3^7;//串/并方式选择 uchar code dis2[]={"0123456789"}; uchar key; /********************************** //延时函数 **********************************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /************************************** //写指令数据到LCD //RS=L;RW=L;E=高脉冲,D0-D7=指令码。 *************************************/ void write_cmd(uchar cmd) { LCD_RS=0; LCD_RW=0; LCD_EN=0; P0=cmd; delay(5); LCD_EN=1; delay(5); LCD_EN=0; } /************************************* //写数据都LCD //RS=H;RW=L;E=高脉冲,D0-D7=数据。 ************************************/ void write_dat(uchar dat) { LCD_RS=1; LCD_RW=0; LCD_EN=0; P0=dat; delay(5); LCD_EN=1; delay(5); LCD_EN=0; } /*********************************** //设定显示位置 ***********************************/ void lcd_pos(uchar X,uchar Y) { uchar pos; if(X==0) {X=0x80;} else if(X==1) {X=0x90;} else if(X==2) {X=0x88;} else if(X==3) {X=0x98;} pos=X+Y; write_cmd(pos);//显示地址 } /************************************ //LCD初始化 ************************************/ void lcd_init() { LCD_PSB=1; write_cmd(0x30);//基本操作指令 delay(5); write_cmd(0x0e);//显示开,开光标 delay(5); write_cmd(0x01);//清除显示内容 delay(5); } /*********************************** //显示函数 ***********************************/ void display_num(uchar y) { lcd_pos(0,0);//设置显示位置为第1行的第一个字符 switch(y){ case 0:write_dat(dis2[0]);//显示字符0 break; case 1: write_dat(dis2[1]);//显示字符1 break; case 2:write_dat(dis2[2]);//显示字符2 break; case 3:write_dat(dis2[3]);//显示字符3 break; case 4:write_dat(dis2[4]);//显示字符4 break; case 5:write_dat(dis2[5]);//显示字符5 break; case 6:write_dat(dis2[6]);//显示字符6 break; case 7:write_dat(dis2[7]);//显示字符7 break; case 8:write_dat(dis2[8]);//显示字符8 break; case 9:write_dat(dis2[9]);//显示字符9 break; } } /*********************************** //键盘扫描 ************************************/ void keyscan() { uchar temp; uchar num; while(1) { P1=0xfe; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(22); if(temp!=0xf0) { switch(temp) { case 0xe0:num=0; break; case 0xd0:num=1; break; case 0xb0:num=2; break; case 0x70:num=3; break; } } while(temp!=0xf0)//键盘松开去抖动 { temp=P1; temp=temp&0xf0; } display_num(num); } P1=0xfd; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(22); if(temp!=0xf0) { switch(temp) { case 0xe0:num=4; break; case 0xd0:num=5; break; case 0xb0:num=6; break; case 0x70:num=7; break; } } while(temp!=0xf0)//键盘松开去抖动 { temp=P1; temp=temp&0xf0; } display_num(num); } P1=0xfb; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(22); if(temp!=0xf0) { switch(temp) { case 0xe0:num=8; break; case 0xd0:num=9; break; case 0xb0:num=10; break; case 0x70:num=11; break; } } while(temp!=0xf0)//键盘松开去抖动 { temp=P1; temp=temp&0xf0; } display_num(num); } P1=0xf7; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(22); if(temp!=0xf0) { switch(temp) { case 0xe0:num=12; break; case 0xd0:num=13; break; case 0xb0:num=14; break; case 0x70:num=15; break; } } while(temp!=0xf0)//键盘松开去抖动 { temp=P1; temp=temp&0xf0; } } display_num(num); } } /*********************************** //主函数 ***********************************/ void main() { lcd_init();//初始化 while(1){ keyscan(); } } |
|
|
|
求解。。。。
|
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 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 07:00 , Processed in 1.239132 second(s), Total 91, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号