附录
#include
sbit adrd=P3^7; //IO口定义 sbit adwr=P3^6; sbit adcs=P0^7; sbit diola=P2^5; sbit beep=P2^3; sbit setkey=P3^7;
uchar key_num,num; uchar RMB_s,RMB_g,RMB; long date,ren,dat; int add_i2c,bianma;
uchar code table[]=%uchar table1[4];
/********************************************************************
蜂鸣器驱动
********************************************************************/ void BEEP() { uchar i;
for(i=0;i<180;i++)
29
{
delayB(5); beep=!beep; } beep=1; }
/********************************************************************
ADC0804 起始信号
********************************************************************/ void ad_start() { adcs=0; _nop_(); adwr=0; _nop_(); adwr=1; _nop_(); adcs=1; }
/********************************************************************
ADC0804 读操作
********************************************************************/ uchar ad_read() {
uchar temp; adcs=0; _nop_();
30
adrd=0; _nop_(); temp=P1; _nop_(); adrd=1; _nop_(); adcs=1;
return(temp);
}/*******************************************************************
矩阵键盘扫描
********************************************************************/ uchar getkey() {
static unsigned char flag = 0; unsigned char key; P3=0x0f; if(P3!=0x0f) {
if(flag==0) {
flag=1; key=P3|0xf0; P3=key; switch(P3) {
case 0xee:return 0; break; case 0xde:return 1; break;
//松手检测
case 0xbe:return 2; break;
31
{ }
case 0x7e:return 3; break;
case 0xed:return 4; break; case 0xdd:return 5; break; case 0xbd:return 6; break; case 0x7d:return 7; break;
case 0xeb:return 8; break; case 0xdb:return 9; break; case 0xbb:return 10;break; case 0x7b:return 11;break;
} else
}
}
case 0xe7:return 12;break; case 0xd7:return 13;break; case 0xb7:return 14;break; case 0x77:return 15;break;
}
flag=0;
return 0xff;
/********************************************************************
控制按键设置
********************************************************************/ void keyscan()
32
{
static uchar i=0,flag = 0,flag1=0,flag2=0; static bit flag_frist = 1; static uchar p; uchar pri; num = getkey(); if(num != 0xff) {
if((num>=0)&&(num<10)&&(flag==0)) {
//
if(flag1==0) {
flag1=1; if(i==0) {
Lcd_dis_str(12,1,\
} } else {
}
display(0x8c+i,table[num]); table1[i]=num; i++; if(i==4) {
i=0;
Lcd_dis_str(4,2,\
33