湖南理工学院毕业设计(论文)
附录三:实物作品(要在正文对应位置作必要说明)
40
湖南理工学院毕业设计(论文)
附录四:程序清单(要在正文对应位置作必要说明)
(注意格式规范,字体为5号宋体)
#include
sbit dula=P2^6; sbit wela=P2^7;
//sbit sda = P2^1; //掉电存储芯片 //sbit scl = P2^0;
sbit start_key=P3^2;//对应外部中断0
sbit key1=P3^4; //定义4个按键的位置 启动计价开关 sbit key2=P3^5; //显示当前标准时间
sbit key3=P3^6; //清除存储芯片里数据 关闭定时器 外部中断 停止计价 sbit key4=P3^7; //显示车开启到现在所经历的时间
uchar hour,min,sec; //标准时间 //sbit shi=P1^0; //sbit fen=P1^1; //sbit miao=P1^2;
sbit ce=P1^0; // 时钟芯片引脚 sbit sck=P1^2; sbit io=P1^1;
uint count_num=0;//记车轮转的圈数,假设车轮周长1米 uint count_num1=0;//车跑的公里
uint count1=0; //现在的车轮圈数 uint count2=0;//1分钟前的车轮圈数 //*************************
//************************** uchar val_start_w=60 ;//设置起步价6元 uchar val_start_b=70 ;//设置起步价7元 uchar val_w=20; //白天价格(每公里) uchar val_b=25; //晚上价格
41
湖南理工学院毕业设计(论文)
uchar val_s=10; //每分钟 等待价格 uchar val_s_num = 0; //路上停的时间 分钟 uchar val_f = 1; //设置价格标志 默认白天
uchar time1_shi=0; // 定时器1 记时 小时 uchar time1_fen=0; //定时器1 记时 分钟 uchar time1_miao=0; //定时器1 记时 秒 uchar time1_num=0; //定时器1 个数
uint time0_num=0; //定时器0 个数 uint time0_num1=0; //秒数 //bit ack; uchar dan_jia=0; uint lu_cheng=0; uint jin_e=0;
uchar sev_count_num1,sev_jin_e,sev_val;//保存的数据 uchar sev_time1_miao,sev_time1_fen,sev_time1_shi;
uchar buf[6]={0};
uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 };
uchar code table1[]={ 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87, 0xff,0xef,0xf7,0x7c, 0x39,0x5e,0x79,0x71 };
void delayms(uchar xms) {
uchar i,j; for(i=xms;i>0;i--) }
// ************************************ 24c02
#define _Nop( ) _nop_( ) //定义空指令
for(j=110;j>0;j--);
42
湖南理工学院毕业设计(论文)
// 常,变量定义区
sbit SDA=P2^1; //模拟I2C数据传送位 sbit SCL=P2^0; //模拟I2C时钟控制位 //char mm=0,mm1=1,mm2=2;
bit ack; //应答标志位
/*------------------------------------------------ 启动总线 ------------------------------------------------*/
void start( ) {
SDA=1; //发送起始条件的数据信号 _Nop( ); SCL=1;
_Nop( ); //起始条件建立时间大于4.7us,延时 _Nop( ); _Nop( ); _Nop( ); _Nop( );
SDA=0; //发送起始信号
_Nop( ); //起始条件锁定时间大于4μ _Nop( ); _Nop( ); _Nop( ); _Nop( );
SCL=0; //钳住I2C总线,准备发送或接收数据 _Nop( ); _Nop( ); }
/*------------------------------------------------ 结束总线 ------------------------------------------------*/
void stop( ) {
SDA=0; //发送结束条件的数据信号 _Nop( ); //发送结束条件的时钟信号
43
湖南理工学院毕业设计(论文)
SCL=1; //结束条件建立时间大于4μ _Nop( ); _Nop( ); _Nop( ); _Nop( ); _Nop( );
SDA=1; //发送I2C总线结束信号 _Nop( ); _Nop( ); _Nop( ); _Nop( ); }
/*---------------------------------------------------------------- 字节数据传送函数 函数原型: void SendByte(unsigned char c);
功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对 此状态位进行操作.(不应答或非应答都使ack=0 假) 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。 ------------------------------------------------------------------*/
void write_byte(unsigned char c) {
unsigned char BitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++) //要传送的数据长度为8位 {
if((c< SCL=1; //置时钟线为高,通知被控器开始接收数据位 _Nop( ); _Nop( ); //保证时钟高电平周期大于4μ _Nop( ); _Nop( ); _Nop( ); SCL=0; } _Nop( ); _Nop( ); SDA=1; //8位发送完后释放数据线,准备接收应答位 44