8051 与 LCD1602 液晶显示时钟电路仿真图Keil C51源程序#include #define uchar unsigned char#define uint unsigned intsbit rs=P2^0;sbit rw=P2^1;sbit en=P2^2;sbit K1=P1^0;sbit K2=P1^1;sbit K3=P1^2;sbit K4=P1^3;uchar Count,s1num;char shi,fen,miao;uchar code table[]=" 2014-4-23 Wed";uchar code table1[]=" 00:00:00 ";//延时函数void delay(uint z){ uchar i; while(z--) for(i=0;i<120;i++);}//LCD1602写命令函数void write_com(uchar com){ rs=0; rw=0; en=0; P0=com; delay(5); en=1; delay(5); en=0; }//LCD1602 写数据函数 void write_date(uchar dat) { rs=1; rw=0; en=0; P0=dat; delay(5); en=1; delay(5); en=0; }//LCD1602初始化函数void init(){ uchar num; write_com(0x38); delay(1); write_com(0x0c); delay(1); write_com(0x06); delay(1); write_com(0x01); delay(1); write_com(0x80); for(num=0;num<15;num++) { write_date(table[num]); delay(2); } write_com(0x80+0x40); for(num=0;num<15;num++) { write_date(table1[num]); delay(2); } TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;}//LCD1602写时分秒函数void write_sfm(uchar add, uchar date){ uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); }//时钟调整按键扫描函数 void keyscan() { if (K1==0) { delay(5); if(K1==0) { s1num++; while(!K1); if(s1num) { TR0=0; write_com(0x80+0x40+10); write_com(0x0f); } if(s1num==2) { write_com(0x80+0x40+7); } if(s1num==3) { write_com(0x80+0x40+4); } if(s1num==4) { s1num=0; write_com(0x0c); TR0=1; } } } if(s1num!=0) { if(K2==0) { delay(5); if(K2==0) { while(!K2); if(s1num==1) { miao++; if(miao==60) miao=0; write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2) { fen++; if(fen==60) fen=0; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) { shi++; if(shi==24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); } } } if(K3==0) { delay(5); if(K3==0) { while(!K3); if(s1num==1) { miao--; if(miao==-1) miao=59; write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2) { fen--; if(fen==-1) fen=59; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) { shi--; if(shi==-1) shi=23; write_sfm(4,shi); write_com(0x80+0x40+4); } }} } }//定时中断设置void time0() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; Count++; if (Count==20) { Count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } write_sfm(4,shi); } write_sfm(7,fen); } write_sfm(10,miao); }}void main(){ init(); while(1) { keyscan(); } }在能力与知识结构方面,要求学生应具有扎实的专业和日语语言基础,熟练掌握日语听、说、读、写、译的基本技能;了解日本社会及日本文化等方面的基本知识,熟悉日本国情,具有一定的日本人文知识及运用这些知识与日本人进行交流的能力。