|
我的顯示有點(diǎn)問題出現(xiàn)亂碼,并且還不走求各位大神指教一下,并且我在protues上可以仿真并且不亂碼可以走,這是我的部分程序
- void lcd_com(uchar com)
- {rw=0;
- rs=0;
- en=0;
- P0=com;
- delay(5);
- en=1;
- delay(5);
- en=0;
- }
- void lcd_date(uchar date)
- {rw=0;
- rs=1;
- en=0;
- P0=date;
- delay(5);
- en=1;
- delay(5);
- en=0;
- }
- void lcd_time(uchar add,uchar Date)
- {
- uchar shi,ge;
- shi=Date/10;
- ge=Date%10;
- lcd_com(0x80+add);
- lcd_date(0x30+shi);
- lcd_date(0x30+ge);
- }
- void init()
- {
- flag=0;
- flag1=0;
- flag2=0;
- en=0;
- rw=0;
- num2=0;
- num3=0;
- num4=0;
- lcd_com(0x38);
- lcd_com(0x06);
- lcd_com(0x0c);
- lcd_com(0x01);
- lcd_com(0x80);
- for(num0=0;num0<16;num0++)
- lcd_date(table0[num0]);
- lcd_com(0x80+0x40);
- for(num0=0;num0<11;num0++)
- lcd_date(table1[num0]);
- }
- void write_ds1302(uchar add,uchar date)
- {
- uchar i,temp;
- rst=0;
- clk=0;
- _nop_();
- rst=1;
- for(i=0;i<8;i++)
- {
- clk=0;
- temp=add;
- io=temp&0x01;
- add>>=1;
- clk=1;
- _nop_();
- }
- for(i=0;i<8;i++)
- {
- clk=0;
- temp=date;
- io=temp&0x01;
- date>>=1;
- clk=1;
- _nop_();
- }
- rst=0;
- }
- void set_ds1302(uchar add,uchar time)
- {
- uchar j;
- write_ds1302(0x8e,0x00);
- j=time/10;
- time=time%10;
- time=time+j*16;
- write_ds1302(add,time);
- write_ds1302(0x8e,0x80);
- }
- uchar read_ds1302(uchar add)
- {
- uchar i,temp,data1,j;
- rst=0;
- clk=0;
- _nop_();;
- rst=1;
- for(i=0;i<8;i++)
- {
- clk=0;
- temp=add;
- io=temp&0x01;
- add>>=1;
- clk=1;
- _nop_();
- }
- for(i=0;i<8;i++)
- {
- data1>>=1;
- clk=0;
- if(io)
- data1=data1|0x80;
- clk=1;
- }
- rst=0;
- _nop_();
- j=data1%16;
- data1=data1/16;
- data1=data1*10+j;
- return(data1);
- }
- void read_rtc()
- {
- uchar i;
- for(i=0;i<7;i++)
- {
- date=read_ds1302(date_read_add);
- }
- }
- void display()
- {
- uchar i;
- for(i=0;i<7;i++)
- {
- lcd_time(lcd_date_add,date);
- }
- }
|
|