No.80928 作者:beyondmw1983 邮件:beyondwm1983@163.com ID:36939 登陆:1次 文章数:1篇 最后登陆IP:61.175.228.135 最后登陆:2005/7/7 2:03:27 注册:2005/7/7 2:00:44 财富:105 发帖时间:2005/7/7 2:03:27 发贴者IP:61.175.228.135 标题:beyondmw1983:LCD显示,数据采集器,高手帮忙!(keil C51) 摘要:No.80928LCD显示,数据采集器,高手帮忙!(keil C51) 希望那位高手帮忙修改下下面的程序,程序已经测试成功,环境Keil C51,最好能把下面的 程序简化下,比如模块话一下,等等,谢谢各位大虾 ---------------------------------------------------------------------- #include <stdio.h> #include <at89x51.h> #include <absacc.h> //////////////////////////////////////////////////////////////////////////////// ////////////////////// #define RS P2_3 //lcd命令数据状态口 #define RW P2_4 //lcd读写口 #define E P2_5 //lcd使能口 #define ADC_add XBYTE[0x7800] //预定义ad0809的地址 #define uchar unsigned char //////////////////////////////////////////////////////////////函数声明 void lcd_init(); void lcd_command(unsigned char); //lcd命令字写入 void lcd_data(unsigned char ); //lcd显示数据写入 void delay(unsigned char); //延时 unsigned char check_key(); //扫描按键 void calc(unsigned char); //采集数据处理转换 void time(); void timeToDisplay(); unsigned char time_index=0,adc0809_index=0,adc0809_value[8]={0},adcv[6]= {0},sec1=0,sec2=0; unsigned int tt=0x0000; unsigned char sec100,sec,min,hour,flag; void main(void) { unsigned char key_value=0,p; // 0x80----第一行,第一列显? //0xC0 0H设定显示地址为第二行? lcd_init(); lcd_data(0x54); lcd_data(0x69); lcd_data(0x6d); lcd_data(0x65); lcd_data(0x20); lcd_data(0x69); lcd_data(0x73); lcd_data(0x20); EA=1; EX1=1; TMOD=0x00; TH0=0x63; TL0=0x18; ET0=1; TR0=1; hour =0;// 小时的初始值 min = 0;// 分钟的初始值 sec = 0;// 秒的初始值 flag=0; sec100=0; lcd_command(0xc0); lcd_data(0x31); lcd_data(0x3a); while(1) { if((p=check_key())!=0) { key_value=p; lcd_command(0xc0); lcd_data(0x30+key_value); lcd_data(0x3a); delay(100); while(P1!=0xff); } if(sec1==1) { calc(adc0809_value[key_value-1]); lcd_command(0xc3); lcd_command(0xc3); lcd_command(0xc3); lcd_data(0x30+adcv[0]); lcd_data(0x30+adcv[1]); lcd_data(0x30+adcv[2]); lcd_data(0x30+adcv[3]); lcd_data(0x2e); lcd_data(0x30+adcv[4]); lcd_data(0x30+adcv[5]); lcd_data(0x20); lcd_data(0x20); lcd_data(0x6d); lcd_data(0x76); lcd_data(0x20); lcd_data(0x20); sec1=0; } if(sec2==1) { timeToDisplay(); sec2=0; } } } unsigned char check_key() { unsigned char temp,k=1; temp=P1; while(P1!=0xff); delay(20); te ......
>>返回讨论的主题
|