完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 hanhan1129 于 2016-6-2 19:46 编辑
目的: 用1602显示6行数据,分3页显示。每行数据输入后,按确定键保存当前输入的数据。两行输入完成后,按翻页键 翻到下一页,继续输入数据。当翻页键按到第4次时,重新显示第一页之前输入的数据,后面两页依次类推。 目前的主要问题是第4次按下时,无法显示之前输入的数据。 程序如下: #include #include #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long /******************LCD1602**********************/ ***it LCD_RS = P2^3; // ***it LCD_RW = P2^4; // ***it LCD_EN = P2^5; // ***it dula = P2^6; // ***it wela = P2^7; // ***it pulse = P1^1; // #define LCD_DA P0 #define KEY P3 // /**************************/ uchar code title[6][16]= { "T :", "t1:", "t2:", "d1:", "d2:", "N :" }; /*****************************/ uchar code table1[]={" SVC TEST "}; uchar code table2[]={" Set Parameters "}; /************************/ long int data_a=0; long int data_b=0; ulong data_1=0; ulong data_2=0; ulong data_3=0; ulong data_4=0; ulong data_5=0; ulong data_6=0; ulong dispaly[10]; uchar i,j; uchar key=0xff; uchar a=0; uchar b=8; uchar x=0; uchar flag=0; uchar flag1=0; uchar enterflag=0; /****************************/ void delay(uint time) { uint i,j; for(i=time;i>0;i--) for(j=110;j>0;j--); } /****************************/ void DelayS(uint time) { delay(1000*time); } /****************************/ void delay_fmq(uint time) { uint x,y; for(x=time;x>0;x--) for(y=5;y>0;y--); } /****************************/ void write_com(uchar com) { LCD_RS=0; LCD_RW=0; LCD_EN=0; LCD_DA=com; delay(2); LCD_EN=1; delay(2); LCD_EN=0; } /***************************/ void write_date(uchar date) { LCD_RS=1; LCD_RW=0; LCD_EN=0; LCD_DA=date; delay(2); LCD_EN=1; delay(2); LCD_EN=0; } /***************************/ void LCD_Clear(void) { write_com(0x01); delay(5); } /**********************/ void W_lcd(unsigned char x,unsigned char y,unsigned char Data) { if(y==0) { write_com(0x80 + x); } else { write_com(0xc0 + x); } write_date(Data); } /*****************/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { if(y==0) { write_com(0x80 + x); } else { write_com(0xC0 + x); } while(*s) { write_date(*s); s++; } } /*******************************/ void LCD_init() { dula=0; wela=0; write_com(0x38); delay(5); write_com(0x38); delay(5); write_com(0x38); delay(5); write_com(0x0f); delay(5); write_com(0x06); delay(5); write_com(0x01); delay(5); } /********************************/ void Start(unsigned long T,unsigned long t1,unsigned long t2,unsigned long d1,unsigned long d2,unsigned long N) { unsigned long Low_time,High_time; unsigned long Low_S,High_S; unsigned int Low_Ms,High_Ms; unsigned char n; for(n=1;n<=N;n++) { Low_time=t1+n*d1; High_time=t2+n*d2; Low_S=(T+Low_time)/1000; Low_Ms=(T+Low_time)%1000; High_S=High_time/1000; High_Ms=High_time%1000; pulse =0; DelayS(Low_S); delay(Low_Ms); pulse =1; DelayS(High_S); delay(High_Ms); } } /**************************/ void stop() { pulse=1; } /**************************/ short keycheckdown() { short temp1,temp2,temp,a=0xff; KEY=0xf0; delay(20); temp1=KEY; KEY=0xff; delay(20); KEY=0x0f; delay(20); temp2=KEY; KEY=0xff; temp=(temp1&0xf0)|(temp2&0xf); switch(temp) { case 0xee :a=7; break; case 0xed :a=8; break; case 0xeb :a=9; break; case 0xe7 :a=0x0a; break; case 0xde :a=4; break; case 0xdd :a=5; break; case 0xdb :a=6; break; case 0xd7 :a=0x0b; break; case 0xbe :a=1; break; case 0xbd :a=2; break; case 0xbb :a=3; break; case 0xb7 :a=0x0c; break; case 0x7e :a=0; break; case 0x7d :a=0x0e; break; case 0x7b :a=0x0f; break; case 0x77 :a=0x0d; break; default :a=0xff; } return a; } /*********************************/ void display_a() { dispaly[6]=data_a%10000000/1000000; dispaly[5]=data_a%1000000/100000; dispaly[4]=data_a%100000/10000; dispaly[3]=data_a%10000/1000; dispaly[2]=data_a%1000/100; dispaly[1]=data_a%100/10; dispaly[0]=data_a%10; write_com(0x80+3); if(data_a>999999) { write_date('0'+dispaly[6]); } if(data_a>99999) { write_date('0'+dispaly[5]); } if(data_a>9999) { write_date('0'+dispaly[4]); } if(data_a>999) { write_date('0'+dispaly[3]); } if(data_a>99) { write_date('0'+dispaly[2]); } if(data_a>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } /*********************************/ void display_b() { write_com(0xc0+3); dispaly[6]=data_b%10000000/1000000; dispaly[5]=data_b%1000000/100000; dispaly[4]=data_b%100000/10000; dispaly[3]=data_b%10000/1000; dispaly[2]=data_b%1000/100; dispaly[1]=data_b%100/10; dispaly[0]=data_b%10; if(data_b>999999) { write_date('0'+dispaly[6]); } if(data_b>99999) { write_date('0'+dispaly[5]); } if(data_b>9999) { write_date('0'+dispaly[4]); } if(data_b>999) { write_date('0'+dispaly[3]); } if(data_b>99) { write_date('0'+dispaly[2]); } if(data_b>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } void display_1() { if(data_1<10000000&&data_1>-1) { dispaly[6]=data_1%10000000/1000000; dispaly[5]=data_1%1000000/100000; dispaly[4]=data_1%100000/10000; dispaly[3]=data_1%10000/1000; dispaly[2]=data_1%1000/100; dispaly[1]=data_1%100/10; dispaly[0]=data_1%10; write_com(0x80+3); if(data_1>999999) { write_date('0'+dispaly[6]); } if(data_1>99999) { write_date('0'+dispaly[5]); } if(data_1>9999) { write_date('0'+dispaly[4]); } if(data_1>999) { write_date('0'+dispaly[3]); } if(data_1>99) { write_date('0'+dispaly[2]); } if(data_1>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } } void display_2() { if(data_2<10000000&&data_2>-1) { dispaly[6]=data_2%10000000/1000000; dispaly[5]=data_2%1000000/100000; dispaly[4]=data_2%100000/10000; dispaly[3]=data_2%10000/1000; dispaly[2]=data_2%1000/100; dispaly[1]=data_2%100/10; dispaly[0]=data_2%10; write_com(0x80+0x40+3); if(data_2>999999) { write_date('0'+dispaly[6]); } if(data_2>99999) { write_date('0'+dispaly[5]); } if(data_2>9999) { write_date('0'+dispaly[4]); } if(data_2>999) { write_date('0'+dispaly[3]); } if(data_2>99) { write_date('0'+dispaly[2]); } if(data_2>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } } void display_3() { if(data_3<10000000&&data_3>-1) { dispaly[6]=data_3%10000000/1000000; dispaly[5]=data_3%1000000/100000; dispaly[4]=data_3%100000/10000; dispaly[3]=data_3%10000/1000; dispaly[2]=data_3%1000/100; dispaly[1]=data_3%100/10; dispaly[0]=data_3%10; write_com(0x80+3); if(data_3>999999) { write_date('0'+dispaly[6]); } if(data_3>99999) { write_date('0'+dispaly[5]); } if(data_3>9999) { write_date('0'+dispaly[4]); } if(data_3>999) { write_date('0'+dispaly[3]); } if(data_3>99) { write_date('0'+dispaly[2]); } if(data_3>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } } void display_4() { if(data_4<10000000&&data_4>-1) { dispaly[6]=data_4%10000000/1000000; dispaly[5]=data_4%1000000/100000; dispaly[4]=data_4%100000/10000; dispaly[3]=data_4%10000/1000; dispaly[2]=data_4%1000/100; dispaly[1]=data_4%100/10; dispaly[0]=data_4%10; write_com(0x80+0x40+3); if(data_4>999999) { write_date('0'+dispaly[6]); } if(data_4>99999) { write_date('0'+dispaly[5]); } if(data_4>9999) { write_date('0'+dispaly[4]); } if(data_4>999) { write_date('0'+dispaly[3]); } if(data_4>99) { write_date('0'+dispaly[2]); } if(data_4>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } } void display_5() { if(data_5<10000000&&data_5>-1) { dispaly[6]=data_5%10000000/1000000; dispaly[5]=data_5%1000000/100000; dispaly[4]=data_5%100000/10000; dispaly[3]=data_5%10000/1000; dispaly[2]=data_5%1000/100; dispaly[1]=data_5%100/10; dispaly[0]=data_5%10; write_com(0x80+3); if(data_5>999999) { write_date('0'+dispaly[6]); } if(data_5>99999) { write_date('0'+dispaly[5]); } if(data_5>9999) { write_date('0'+dispaly[4]); } if(data_5>999) { write_date('0'+dispaly[3]); } if(data_5>99) { write_date('0'+dispaly[2]); } if(data_5>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } } void display_6() { if(data_6<10000000&&data_6>-1) { dispaly[6]=data_6%10000000/1000000; dispaly[5]=data_6%1000000/100000; dispaly[4]=data_6%100000/10000; dispaly[3]=data_6%10000/1000; dispaly[2]=data_6%1000/100; dispaly[1]=data_6%100/10; dispaly[0]=data_6%10; write_com(0x80+0x40+3); if(data_6>999999) { write_date('0'+dispaly[6]); } if(data_6>99999) { write_date('0'+dispaly[5]); } if(data_6>9999) { write_date('0'+dispaly[4]); } if(data_6>999) { write_date('0'+dispaly[3]); } if(data_6>99) { write_date('0'+dispaly[2]); } if(data_6>9) { write_date('0'+dispaly[1]); } write_date('0'+dispaly[0]); } } /*****************************/ void Keypro(uchar Funkey) { switch(Funkey) { case 1: write_com(0x0f); write_com(0x10); break; case 2: write_com(0x0f); write_com(0x14); break; case 3: if(enterflag==3) enterflag=0; if(flag==0) { if(enterflag==1) { data_1=data_a; data_a=0; display_b(); } if(enterflag==2) { data_2=data_b; data_b=0; } } if(flag==1) { if(enterflag==1) { data_3=data_a; data_a=0; display_b(); } if(enterflag==2) { data_4=data_b; data_b=0; } } if(flag==2) { if(enterflag==1) { data_5=data_a; data_a=0; display_b(); } if(enterflag==2) { data_6=data_b; data_b=0; } } break; case 4: if(flag==3) {flag=0;} if(flag==0) { LCD_Clear(); LCD_Write_String(0, 0, Title[flag*2]); display_1(); LCD_Write_String(0, 1, Title[flag*2+1]); display_2(); } if(flag==1) { LCD_Clear(); LCD_Write_String(0, 0, Title[flag*2]); display_3(); LCD_Write_String(0, 1, Title[flag*2+1]); display_4(); } if(flag==2) { LCD_Clear(); LCD_Write_String(0, 0, Title[flag*2]); display_5(); LCD_Write_String(0, 1, Title[flag*2+1]); display_6(); } write_com(0x80+3); break; case 0: break; } } void main() { LCD_init(); LCD_Write_String(0,0,Title[0]); LCD_Write_String(0,1,Title[1]); while(1) { key=keycheckdown(); if(0xff!=key) { if(key<10) { if(a<7) { data_a=data_a*10+key; b=8; display_a(); } a++; if(b<7) { data_b=data_b*10+key; a=8; display_b(); } b++; } else { switch(key) { case 0x0a: a=0;b=0; //left x=1; Keypro(x); break; case 0x0b: a=0;b=0; //right x=2; Keypro(x); break; case 0x0c: a=0;b=0; //down flag++; enterflag=0; x=4; Keypro(x); break; case 0x0d: a=8;b=0; //enter enterflag++; x=3; Keypro(x); break; } } do{KEY=0xf0;} while(KEY!=0xf0); } } } |
|
相关推荐
3个回答
|
|
2222222 啊啊啊啊啊啊啊啊啊啊啊啊啊
|
|
|
|
是不是被你覆盖掉了啊
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11793 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 23:19 , Processed in 0.686277 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号