對stc片內eeprom的測試
#includestc89.h>
#includeintrins.h>
#define uchar unsigned char
#define uint unsgined int
uchar code shuzi[]=0123456789-:;
uchar d0,d1,d2,d3,t0;
sbit lcd_rs=P2^5;//數(shù)據(jù)/命令選擇端 H高 L低
sbit lcd_rw=P2^6;//讀/寫選擇端 H高 L低
sbit lcd_e=P2^7; //使能信號 上升沿所存數(shù)據(jù)
void init(); //液晶初始化操作
void write_com(uchar com); //液晶寫命令函數(shù)
void write_data(uchar dat);//液晶寫數(shù)據(jù)函數(shù)
void delay(uchar a0); //延時函數(shù)
void main()
{init(); //調用液晶初始化函數(shù)對液晶初始化操作
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;//扇區(qū)擦除
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);//設置數(shù)據(jù)指針
}
void write_com(uchar com)//液晶寫命令函數(shù)
{
lcd_rs=0; //設置數(shù)據(jù)命令為 命令
P0=com; //將命令送到P0口
delay(2); //延時一下
lcd_e=1; //e使能端上升沿吧數(shù)據(jù)讀走
delay(2); //延時一下好讓液晶準備好
lcd_e=0; //使能端拉低 以便下次形成上升沿
}
void write_data(uchar dat)//液晶寫數(shù)據(jù)函數(shù)
{
lcd_rs=1; //設置數(shù)據(jù)命令為 數(shù)據(jù)
P0=dat; //將命令送到P0口
delay(2); //延時一下
lcd_e=1; //e使能端上升沿吧數(shù)據(jù)讀走
delay(2); //延時一下好讓液晶準備好
lcd_e=0; //使能端拉低 以便下次形成上升沿
}
void delay(uchar a0)
{ uchar a1,a2;
for(a2=a0;a2>0;a2--)
for(a1=110;a1>0;a1--);
}
評論