#include<stc89.h> #include<intrins.h> #define uchar unsigned char #define uint unsgined int uchar code shuzi[]="0123456789-:"; uchar d0,d1,d2,d3,t0; sbit lcd_rs=P2^5;//數據/命令選擇端 H高 L低 sbit lcd_rw=P2^6;//讀/寫選擇端 H高 L低 sbit lcd_e=P2^7; //使能信號 上升沿所存數據 void init(); //液晶初始化操作 void write_com(uchar com); //液晶寫命令函數 void write_data(uchar dat);//液晶寫數據函數 void delay(uchar a0); //延時函數 void main() {init(); //調用液晶初始化函數對液晶初始化操作 ISP_CONTR=0x82; ISP_ADDRH=0x20;//高八位地址定義 ISP_ADDRL=0x00;//低八位地址定義 ISP_TRIG=0x00; ISP_CMD=0x01;//讀取內容 ISP_TRIG=0x46;//手冊中說要先寫入 ISP_TRIG=0xb9; d0=ISP_DATA; while(1) { write_com(0x83); d1=d0/100%10; d2=d0/10%10; d3=d0%10; write_data(shuzi[d1]); write_data(shuzi[d2]); write_data(shuzi[d3]); if(d0>=255) {d0=0;} ISP_DATA=d0; ISP_CMD=0x03;//扇區擦除 ISP_TRIG=0x46; ISP_TRIG=0xb9; ISP_CMD=0x02;;//編程 ISP_TRIG=0x46; ISP_TRIG=0xb9; for(t0=10;t0>0;t0--) { delay(255); } d0++; }} void init()//液晶初始化操作 {lcd_rw=0; //讀寫選擇端 始終為寫 lcd_e=0; //使能端拉低 以便形成上升沿 delay(15); write_com(0x38);//設置顯示模式為1602 write_com(0x0c);//光標設置和 顯示開不開設置 write_com(0x06);//光標和屏幕移動不移動 設置 write_com(0x01);//清屏操作 write_com(0x80);//設置數據指針 } void write_com(uchar com)//液晶寫命令函數 { lcd_rs=0; //設置數據命令為 命令 P0=com; //將命令送到P0口 delay(2); //延時一下 lcd_e=1; //e使能端上升沿吧數據讀走 delay(2); //延時一下好讓液晶準備好 lcd_e=0; //使能端拉低 以便下次形成上升沿 } void write_data(uchar dat)//液晶寫數據函數 { lcd_rs=1; //設置數據命令為 數據 P0=dat; //將命令送到P0口 delay(2); //延時一下 lcd_e=1; //e使能端上升沿吧數據讀走 delay(2); //延時一下好讓液晶準備好 lcd_e=0; //使能端拉低 以便下次形成上升沿 } void delay(uchar a0) { uchar a1,a2; for(a2=a0;a2>0;a2--) for(a1=110;a1>0;a1--); }