欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
汽車倒車雷達的單片機源程序 12864顯示距離溫度和時間
[打印本頁]
作者:
13675545861
時間:
2017-8-16 16:06
標題:
汽車倒車雷達的單片機源程序 12864顯示距離溫度和時間
汽車倒車雷達源程序lcd12864顯示倒車的距離,及當前溫度和時間
單片機源程序如下:
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
/************* 12864LCD引腳定義 *************/
#define LCD_data P0 //數(shù)據(jù)口
sbit LCD_RS = P2 ^ 4; //寄存器選擇輸入
sbit LCD_RW = P2 ^ 5; //液晶讀/寫控制
sbit LCD_EN = P2 ^ 6; //液晶使能控制
sbit LCD_PSB = P2 ^ 1; //串/并方式控制
uchar address,site;
bit off;
/************Ds1302定義*********************/
#define write_sec 0x80 //寫秒
#define read_sec 0x81 //讀秒
#define write_min 0x82 //寫分鐘
#define read_min 0x83 //讀分鐘
#define write_hour 0x84 //寫小時
#define read_hour 0x85 //讀小時
#define write_day 0x86 //寫日
#define read_day 0x87 //讀日
#define write_mon 0x88 //寫月
#define read_mon 0x89 //讀月
#define write_week 0x8a //寫星期
#define read_week 0x8b //讀星期
#define write_year 0x8c //寫年
#define read_year 0x8d //讀年
#define write_wp 0x8e //寫保護
void DS1302write_byte(uchar data_a);
void writeDS1302(uchar addr,uchar da);
void initDS1302(void);
void DS1302_time();
void DS1302_display();
void assist_display(void);
void DS1302_key(void);
void DS1302_add(void);
void DS1302_reduce(void);
sbit sclk=P1^5; //DS1302時鐘信號
sbit dio=P1^6; //DS1302數(shù)據(jù)信號
sbit rst=P1^7; //DS1302片選
sbit acc_7=ACC^7;
sbit key0=P1^1; //設置鍵
sbit key1=P1^2; //加鍵
sbit key2=P1^3; //減鍵
uchar sec,min,hour,day,mon,week,year,time;
bit set,m,ho,d,mo,w,y,timer,ja,jian;
uchar install; //設置時鐘
/************Ds18b20定義*********************/
sbit DQ =P3^6; //定義室內(nèi)DS18B20通信端口
uint t,h; //t:讀取溫度,h:顯示延時
uchar tt,shi,ge,shi0,ge0,shi1,ge1; //tt:處理后的溫度,shi:溫度十位,ge:溫度個位
void init_18b20(); //復位程序
void write_18b20(uchar data_a); //寫一個字節(jié)程序
void read_t(); //讀取溫度程序
void dispose_t(); //處理溫度
void DS18B20_display(); //顯示溫度
bit Temp_mark;
/*****************超聲波測距程序定義******************************/
sbit key3=P1^4;
sbit led=P3^3;
sbit buzzer=P2^0;
bit wave,change;
uchar times,Q,delayed;
uint L;
long int S;
bit open;
sbit P1_0=P1^0;
void ultrasonic_key(void);
void ultrasonic_display(void);
void alerting(); //報警
/*********************************************************/
unsigned char code DIS1[] =
{
'0','1','2','3','4','5','6','7','8','9',' '
};
unsigned char code DIS2[] =
{
"Date:"
};
unsigned char code DIS3[]=
{
':',' ',':',' ',':',' ',':',' ',':',' '
};
unsigned char code DIS4[]=
{
'a','m','p'
};
unsigned char code DIS5[]=
{
"Week:"
};
unsigned char code DIS6[]=
{
"Monday"
};
unsigned char code DIS7[]=
{
"Tuesday"
};
unsigned char code DIS8[]=
{
"Wednesday"
};
unsigned char code DIS9[]=
{
"Thursday"
};
unsigned char code DIS10[]=
{
"Friday"
};
unsigned char code DIS11[]=
{
"Saturday"
};
unsigned char code DIS12[]=
{
"Sunday"
};
unsigned char code DIS13[]=
{
"<T>:"
};
unsigned char code DIS15[]=
{
" "
};
unsigned char code Photo0[] =
{
/*-- 數(shù)字0,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,
0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x01,0xFF,0xFF,0x80,
0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/******************************************************************************/
unsigned char code Photo1[] =
{
/*-- 數(shù)字1,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0xE0,0x00,
0x00,0x0F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x03,0xE0,0x00,
0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,
0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x03,0xFF,0xFF,0xE0,
0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo2[] =
{
/*-- 數(shù)字2,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFE,0x00,0x00,0x3F,0xFF,0x00,
0x00,0x7F,0xFF,0x80,0x00,0xF0,0x07,0x80,0x00,0xF0,0x07,0x80,0x00,0xE0,0x07,0x80,
0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,
0x00,0x00,0x0F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x78,0x00,
0x00,0x00,0xF0,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0x80,0x00,
0x00,0x0F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x78,0x00,0x00,
0x00,0xF0,0x00,0x00,0x01,0xF0,0x00,0xE0,0x01,0xF0,0x00,0xE0,0x01,0xFF,0xFF,0xE0,
0x01,0xFF,0xFF,0xE0,0x01,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo3[] =
{
/*-- 數(shù)字3,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xF0,0x00,0x01,0xFF,0xF8,0x00,
0x07,0xFF,0xFC,0x00,0x07,0x80,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x01,0xFF,0xFC,0x00,0x01,0xFF,0xF8,0x00,
0x01,0xFF,0xFC,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x1E,0x00,0x03,0xC0,0x1E,0x00,0x03,0xFF,0xFC,0x00,
0x00,0xFF,0xF8,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo4[] =
{
/*-- 數(shù)字4,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x3C,0x00,
0x00,0x00,0x7C,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xFC,0x00,
0x00,0x07,0xBC,0x00,0x00,0x0F,0x3C,0x00,0x00,0x1E,0x3C,0x00,0x00,0x3C,0x3C,0x00,
0x00,0x78,0x3C,0x00,0x00,0xF0,0x3C,0x00,0x01,0xE0,0x3C,0x00,0x03,0xC0,0x3C,0x00,
0x07,0x80,0x3C,0x00,0x0F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xC0,
0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,
0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,
0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo5[]=
{
/*-- 數(shù)字5,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,
0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,
0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,
0x01,0xE0,0x00,0x00,0x01,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0xC0,
0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,
0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,
0x00,0x00,0x07,0xC0,0x01,0xE0,0x07,0xC0,0x01,0xE0,0x07,0xC0,0x00,0xFF,0xFF,0xC0,
0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo6[]=
{
/*-- 數(shù)字6,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0xE0,0x00,
0x00,0x0F,0xE0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF0,0x00,0x00,
0x01,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,
0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0xFF,0xF8,0x00,0x07,0xFF,0xFE,0x00,
0x07,0xFF,0xFE,0x00,0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,
0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,
0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x03,0xFF,0xFE,0x00,0x03,0xFF,0xFE,0x00,
0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo7[]=
{
/*-- 數(shù)字7,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xC0,
0x01,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0xC0,0x01,0xC0,0x03,0xC0,0x01,0xC0,0x03,0xC0,
0x00,0x00,0x07,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3E,0x00,0x00,0x00,0x7C,0x00,
0x00,0x01,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,
0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,
0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo8[]=
{
/*-- 數(shù)字8,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,
0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x01,0xFF,0xFF,0x80,
0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,
0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x01,0xFF,0xFF,0x80,
0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo9[]=
{
/*-- 數(shù)字9,寬度x高度=32x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,0x7F,0xFF,0x00,
0x00,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0xC0,0x01,0xE0,0x07,0xC0,0x01,0xE0,0x07,0xC0,
0x01,0xE0,0x07,0xC0,0x01,0xE0,0x07,0xC0,0x01,0xE0,0x07,0xC0,0x01,0xE0,0x07,0xC0,
0x01,0xE0,0x07,0xC0,0x01,0xE0,0x07,0xC0,0x01,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xC0,
0x00,0xFF,0xFF,0xC0,0x00,0x3F,0xFF,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,
0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,
0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x3F,0xFF,0x80,0x00,0x3F,0xFF,0x00,
0x00,0x3F,0xFE,0x00,0x00,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code Photo10[]=
{
/*-- 車,寬度x高度=128x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x10,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x20,0x00,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x00,0x40,0x00,0x04,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x80,0x00,0x80,0x00,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x80,0x01,0x00,0x00,0x10,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x02,0x00,0x00,0x60,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xFF,0xFF,0xFF,0xFF,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x00,0x03,0xFF,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x00,0x03,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x41,
0x00,0x00,0x00,0x06,0xA4,0x60,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x42,
0x00,0x00,0x00,0x0D,0x12,0x60,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x44,
0x00,0x00,0x00,0x11,0x21,0xE0,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x60,0x00,0x48,
0x00,0x00,0x00,0x21,0xC3,0xF7,0xF0,0x00,0x00,0x00,0x00,0x87,0xC0,0x60,0x7E,0x50,
0x00,0x07,0xFF,0xC1,0x77,0x01,0xF8,0x00,0x00,0x00,0x00,0x8F,0xC0,0xF0,0x63,0x60,
0x00,0x0F,0xEB,0x01,0x04,0x00,0x0C,0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x63,0x40,
0x00,0x18,0x00,0x08,0x04,0x00,0x06,0x00,0x00,0x00,0x00,0x98,0x01,0x98,0x63,0x40,
0x00,0x30,0x00,0x08,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x98,0x03,0x0C,0x7F,0x40,
0x00,0x20,0x00,0x08,0x74,0x00,0x01,0x0F,0x3C,0xF3,0xC0,0x98,0x03,0xFC,0x7E,0x40,
0x00,0x40,0x00,0x08,0x04,0x00,0x01,0x09,0x24,0x92,0x40,0x98,0x07,0xFE,0x78,0x40,
0x00,0x84,0x00,0x08,0x00,0x00,0x01,0x09,0x24,0x92,0x40,0x98,0x06,0x06,0x6C,0x40,
0x01,0x8A,0x18,0x08,0x00,0x0C,0x07,0x39,0xE7,0x9E,0x60,0x8F,0xCC,0x03,0x66,0x40,
0x01,0x84,0x24,0x00,0x00,0x12,0x04,0x00,0x00,0x00,0x00,0x87,0xCC,0x03,0x63,0x40,
0x00,0x80,0x42,0x00,0x00,0x21,0x58,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x40,
0x00,0x7F,0x99,0xF0,0xFF,0xCC,0xC0,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x40,
0x00,0x1F,0x99,0xFF,0xFF,0xCC,0x80,0x00,0x00,0x00,0x07,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x42,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x0F,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x24,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x1F,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x18,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x3F,0x80,0x02,0x00,0x00,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x02,0x00,0x00,0x40,
};
unsigned char code Photo11[]=
{
/*單位cm,32*32*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0xF0,0x3C,0xF0,0x1F,0xF8,0x7F,0xF8,0x38,0x38,0xE7,0x9C,0x70,0x00,0xC3,0x0C,
0x60,0x00,0xC3,0x0C,0x60,0x00,0xC3,0x0C,0x60,0x00,0xC3,0x0C,0x70,0x00,0xC3,0x0C,
0x38,0x38,0xC3,0x0C,0x1F,0xF8,0xC3,0x0C,0x0F,0xF0,0xC3,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/**********************************************************
us延時子函數(shù) (4.34us)
**********************************************************/
void delayNOP()
{
_nop_();
_nop_();
_nop_();
_nop_();
}
/**********************************************************
ms延時子函數(shù)
***********************************************************/
void delayms(unsigned int ms)
{
unsigned char y;
while (ms--)
{
for (y = 0; y < 114; y++)
;
}
}
/**********************************************************
檢查LCD忙狀態(tài)
lcd_busy為1時,忙,等待。
lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。
**********************************************************/
bit lcd_busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0 &0x80);
LCD_EN = 0;
return (result);
}
/**********************************************************
寫指令數(shù)據(jù)到LCD
RS=L,RW=L,E=高脈沖,D0-D7=指令碼。
**********************************************************/
void lcd_wcmd(unsigned char cmd)
{
while (lcd_busy())
;
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 1;
P0 = cmd;
delayNOP();
LCD_EN = 0;
}
/**********************************************************
寫顯示數(shù)據(jù)到LCD
RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。
**********************************************************/
void lcd_wdat(unsigned char dat)
{
while (lcd_busy())
;
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 1;
P0 = dat;
delayNOP();
LCD_EN = 0;
}
/**********************************************************
LCD初始化設定
**********************************************************/
void lcd_init()
{
LCD_PSB = 1; //并口方式
delayms(5);
lcd_wcmd(0x34); //擴充指令操作
delayms(5);
lcd_wcmd(0x30); //基本指令操作
delayms(5);
lcd_wcmd(0x0C); //顯示開,關光標
delayms(5);
lcd_wcmd(0x06); //光標的移動方向
delayms(5);
lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容
delayms(5);
}
/****指定要顯示字符的坐標********/
void gotoxy(unsigned char y, unsigned char x)
{
if(y==1)
lcd_wcmd(0x80|x);
if(y==2)
lcd_wcmd(0x90|x);
if(y==3)
lcd_wcmd((0x80|x)+8);
if(y==4)
lcd_wcmd((0x90|x)+8);
}
/*****液晶顯示字符串程序******/
void print(uchar *str)
{
while(*str!='\0')
{
lcd_wdat(*str);
str++;
}
}
/*****填充液晶DDRAM全為空格******/
void clrram_lcd (void)
{
lcd_wcmd(0x30);
lcd_wcmd(0x01);
}
/********設定圖片顯示位置子函數(shù)********************************/
void lcd_pos(unsigned char X, unsigned char Y)
{
unsigned char pos;
if (X == 1)
{
X = 0x80;
}
else if (X == 2)
{
X = 0x90;
}
else if (X == 3)
{
X = 0x88;
}
else if (X == 4)
{
X = 0x98;
}
pos = X + Y; //確定顯示地址
lcd_wcmd(pos); //寫顯示地址
}
/******清屏子函數(shù)**************/
void clr_screen()
{
lcd_wcmd(0x30); //基本指令操作
delayms(5);
lcd_wcmd(0x01); //清屏
delayms(5);
}
/***********寫字符串子函數(shù)**************/
void wr_string(unsigned char str[])
{
unsigned char num = 0;
while (str[num])
{
lcd_wdat(str[num++]); //寫數(shù)據(jù)
}
}
/****32*32圖形顯示子函數(shù)-上半屏四塊***********/
void photodisplay(unsigned char *amp)
{
unsigned char i, j;
if(off==0)
{
lcd_wcmd(0x34); //寫數(shù)據(jù)時,關閉圖形顯示
}
switch(address)
{
case 0:site=0x80;break;
case 1:site=0x82;break;
case 2:site=0x84;break;
case 3:site=0x86;break;
default: break;
}
for (i = 0; i < 32; i++)
//32行(上半屏)
{
lcd_wcmd(0x80 + i); //先寫入Y坐標值
lcd_wcmd(site); //寫入X坐標值
for (j = 0; j < 4; j++)
//4*8列
lcd_wdat(*amp++);
delayms(1);
}
if(off==1)
lcd_wcmd(0x36); //寫完數(shù)據(jù),開圖形顯示
}
/*******128*32圖形顯示子函數(shù)-下半屏一塊************/
void phot4display(unsigned char *bmp)
{
unsigned char i, j;
for (i = 0; i < 32; i++)
//32行(下半屏)
{
lcd_wcmd(0x80 + i); //先寫入Y坐標值
lcd_wcmd(0x88); //寫入X坐標值
for (j = 0; j < 16; j++)
//16*8列
lcd_wdat(*bmp++);
delayms(1);
}
lcd_wcmd(0x36); //寫完數(shù)據(jù),開圖形顯示
}
/***********主函數(shù)**************/
void main()
{
TMOD=0x12; //定時器控制狀態(tài),定時器0只要TR0,1置1時,定時器選通。定時器1在INT0或1為高電平且TR0或1 為1時,被選通,工作方式為0,13位計數(shù)器
CP_RL2=0; //捕獲/重裝載標志,選擇重裝載功能
RCLK=0; //接收時鐘標志,定時器1溢出脈沖做接收時鐘
TCLK=0; //發(fā)送時鐘標志,定時器1溢出脈沖做發(fā)送脈沖
RCAP2H=(65536-30000)/256;
RCAP2L=(65536-30000)%256; //預定義重裝載值, CP_RL2=0把預定義的數(shù)據(jù)自動裝入TH2 TL2
ET2=1; //定時器2中斷運行
TR2=1; //定時器2運行控制,啟動定時器
TH0=256-12;
TL0=256-12; //定時器0取時間12微秒,因為外部中斷引腳每個機器周期被采樣一次,為確保采樣,由引腳INT0輸入的信號
//應至少保持一個機器周期,即12個振蕩周期。
TH1=0;
TL1=0; //定時器1初始化
ET0=1; //運行定時器0中斷
ET1=1; //允許定時器1中斷
TR1=1; //啟動定時器1
IT0=0; //外部中斷0類型控制位,低電平觸發(fā)
IP=0x01; //外部中斷0的優(yōu)先級最高
EA=1; //總中斷允許,每個中斷源由各自的允許位確定
initDS1302(); //初始化DS1302
lcd_init(); //初始化LCD
P1_0=0;
times=10; // 初始化
off=0; //關顯示圖片標志位
Temp_mark=0; //溫度標志位
change=0; //切換標志
wave=0; //切換鍵標志位
led=1;
timer=1;
m=ho=d=1;
mo=w=y=1; //分,時,日,月,年,星期標志位
delayms(50); //上電,等待穩(wěn)定
clrram_lcd();
gotoxy(1,0);
print("汽車倒車雷達"); //第一行顯示汽車倒車雷達
gotoxy(3,2);
print("畢業(yè)設計!!") ;
off=1; //開顯示圖片標志位
delayms(3000); //停留3000ms
off=0; //關顯示圖片標志位
clr_screen(); //清屏
delayms(500); //停留500ms
assist_display(); //輔助顯示時鐘和溫度字體和圖形
while (1)
{
buzzer=0;
led=1;
ultrasonic_key(); //切換鍵
if(change==0)
{
DS1302_key(); //設置鍵
DS1302_add(); //加鍵
DS1302_reduce(); //減鍵
read_t(); //讀取溫度
if(timer==1)
{
timer=0;
DS1302_time(); //讀時鐘
DS1302_display(); //顯示時鐘
DS18B20_display();
Temp_mark=~Temp_mark;
buzzer=1;
}
}
else
{
if(open==1)
{
open=0;
EA=0;
S=TH1*256+TL1;
L=(uint)(S/58);//為什么除以58等于厘米, Y米=(X秒*344)/2
// X秒=( 2*Y米)/344 -> X秒=0.0058*Y米 -> 厘米=微秒/58
ultrasonic_display();
delayms(10);
alerting();
EA=1;
TR1=1;
TH1=0;
TL1=0;
}
}
}
}
/***************************************************
DS1302程序
***************************************************/
/*DS1302寫一個字節(jié)*/
void DS1302write_byte(uchar data_a)
{
uchar i;
for(i=8;i>0;i--)
{
dio=(bit)(data_a&0x01);
sclk=0;
data_a>>=1;
sclk=1;
}
}
/*DS1302讀一個字節(jié)*/
uchar DS1302read_byte(void)
{
uchar i;
uchar data_b=0;
for(i=8;i>0;i--)
{
sclk=1;
ACC>>=1;
sclk=0;
acc_7=dio;
}
data_b=ACC;
return data_b;
}
/*寫DS1302寄存器*/
void writeDS1302(uchar addr,uchar da)
{
rst=0;
sclk=0;
rst=1;
DS1302write_byte(addr);
DS1302write_byte(da);
sclk=1;
rst=0;
}
/*讀DS1302寄存器內(nèi)容*/
uchar readDS1302(uchar addr)
{
uchar ucdata;
rst=0;
sclk=0;
rst=1;
DS1302write_byte(addr|0x01);
ucdata=DS1302read_byte();
sclk=1;
rst=0;
return ucdata;
}
/*DS1302初始化*/
void initDS1302(void)
{
unsigned char flag;
flag= readDS1302(0x81);
if(flag&0x80)
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_sec,0x50); //秒位初始化,50秒
writeDS1302(write_min,0x35); //分鐘初始化,35分
writeDS1302(write_hour,0x09); //小時初始化,9點
writeDS1302(write_day,0x23); //日初始化,23日
writeDS1302(write_mon,0x05); //日初始化,5月
writeDS1302(write_year,0x12); //看初始化 2012年
writeDS1302(write_week,0x03); //日初始化,星期三
writeDS1302(write_wp,0x80); //允許寫保護
}
/*讀取時間日期*/
void DS1302_time()
{
sec=readDS1302(read_sec); //讀秒
min=readDS1302(read_min); //讀分鐘
hour=readDS1302(read_hour); //讀小時
day=readDS1302(read_day); //讀日
mon=readDS1302(read_mon); //讀月
week=readDS1302(read_week); //讀星期
year=readDS1302(read_year); //讀年
}
/********************************
DS1302時鐘顯示程序
*********************************/
void DS1302_display()
{
uchar second_a,minute_a,minute_b;
uchar hour_a,hour_b,day_a,day_b,mon_a,mon_b;
uchar year_a,year_b,week_a,am,pm;
second_a=sec&0x0f;
if(y==1)
{
year_a=year>>4;
year_b=year&0x0f;
}
else
{
year_a=year_b=10;
}
if(mo==1)
{
mon_a=(mon>>4)&0x01;
mon_b=mon&0x0f;
}
else
{
mon_a=mon_b=10;
}
if(d==1)
{
day_a=day>>4;
day_b=day&0x0f;
}
else
{
day_a=day_b=10;
}
if(ho==1)
{
hour_a=(hour>>4)&0x03;
hour_b=hour&0x0f;
}
else
{
hour_a=hour_b=10;
}
if(m==1)
{
minute_a=min>>4;
minute_b=min&0x0f;
}
else
{
minute_a=minute_b=10;
}
if(hour<0x12)
{
am=0;
pm=1;
}
else
{
am=2;
pm=1;
}
if(w==1)
{
week_a=week;
}
else
{
week_a=0x08;
}
lcd_pos(1,4);
lcd_wdat(DIS1[year_a]);
lcd_wdat(DIS1[year_b]);
lcd_pos(1,5);
lcd_wdat('-');
lcd_wdat(DIS1[mon_a]);
lcd_pos(1,6);
lcd_wdat(DIS1[mon_b]);
lcd_wdat('-');
lcd_pos(1,7);
lcd_wdat(DIS1[day_a]);
lcd_wdat(DIS1[day_b]);
lcd_pos(2,1);
lcd_wdat(DIS4[am]);
lcd_wdat(DIS4[pm]);
lcd_pos(2,3);
lcd_wdat(DIS1[hour_a]);
lcd_wdat(DIS1[hour_b]);
lcd_pos(2,4);
lcd_wdat(DIS3[second_a]);
lcd_wdat(DIS1[minute_a]);
lcd_pos(2,5);
lcd_wdat(DIS1[minute_b]);
lcd_pos(3,3);
switch (week_a)
{
case 0x07: wr_string(DIS12);
lcd_pos(3,6);
lcd_wdat(0x20);
lcd_wdat(0x20);
break;
case 0x01: wr_string(DIS6); break;
case 0x02: wr_string(DIS7); break;
case 0x03: wr_string(DIS8); break;
case 0x04: wr_string(DIS9);
lcd_pos(3,7);
lcd_wdat(0x20); break;
case 0x05: wr_string(DIS10);
lcd_pos(3,6);
lcd_wdat(0x20);
lcd_wdat(0x20);break;
case 0x06: wr_string(DIS11); break;
case 0x08: wr_string(DIS15);break;
default:break;
}
}
/********************************
DS1302時鐘輔助顯示程序
*********************************/
void assist_display(void)
{
lcd_pos(1,0); //寫date地址
wr_string(DIS2); //寫date字體數(shù)據(jù)
lcd_pos(1,3); //寫年20地址
lcd_wdat(DIS1[2]);
lcd_wdat(DIS1[0]); //寫年20數(shù)據(jù)
lcd_pos(2,0); //左三角形地址
lcd_wdat(0x10); //顯示左三角形
lcd_pos(2,7); //右三角形地址
lcd_wdat(0x11); //顯示右三角形
lcd_pos(3,0); //寫week地址
wr_string(DIS5); //寫week數(shù)據(jù)
lcd_pos(4,0); //寫<T>:地址
wr_string(DIS13); //寫<T>:字體數(shù)據(jù)
lcd_pos(4,3); //寫車外溫度單位地址
lcd_wdat(0xa1);
lcd_wdat(0xe6); //寫車外溫度單位
}
/*DS1302設置鍵程序*/
void DS1302_key(void)
{
if(key0==0)
{
set=1;
}
if((set&&key0)==1)
{
buzzer=0;
set=0;
install++;
if(install>=7)
{
install=0;
m=ho=d=mo=w=y=1;
}
}
switch(install)
{
case 0:m=ho=d=mo=w=y=1;break;
case 1:m=~m;ho=d=mo=w=y=1;break;
case 2:ho=~ho;m=d=mo=w=y=1;break;
case 3:d=~d;m=ho=mo=w=y=1;break;
case 4:mo=~mo;m=ho=d=w=y=1;break;
case 5:y=~y;m=ho=d=mo=w=1;break;
case 6:w=~w;m=ho=d=mo=y=1;break;
default:break;
}
}
/*DS1302加鍵程序*/
void DS1302_add(void)
{
if(key1==0)
{
ja=1;
}
if(ja&&key1)
{
ja=0;
if(install==1)
{
buzzer=0;
min++;
if((min&0x0f)==0x0a)
{
min=(min&0x70)+0x10;
if((min&0x70)==0x60)
{
min=0x00;
}
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_min,min); //修改分鐘時間
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==2)
{
buzzer=0;
hour++;
if(hour!=0x24)
{
if((hour&0x0f)==0x0a)
{
hour=(hour&0x30)+0x10;
}
}
else
{
hour=hour&0x00;
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_hour,hour); // 修改小時時間
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==3)
{
buzzer=0;
day++;
if(day!=0x32)
{
if((day&0x0f)==0x0a)
{
day=(day&0x30)+0x10;
}
}
else
{
day=0x01;
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_day,day); // 修改日期
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==4)
{
buzzer=0;
mon++;
if(mon!=0x13)
{
if((mon&0x0f)==0x0a)
{
mon=0x10;
}
}
else
{
mon=0x01;
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_mon,mon); // 修改月期
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==5)
{
buzzer=0;
year++;
if((year&0x0f)==0x0a)
{
year=(year&0xf0)+0x10;
if((year&0xf0)==0xa0)
{
year=0x00;
}
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_year,year); // 修改年
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==6)
{
buzzer=0;
week++;
if(week==0x08)
{
week=0x01;
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_week,week); // 修改星期
writeDS1302(write_wp,0x80); //允許寫保護
}
}
}
/*DS1302減鍵程序*/
void DS1302_reduce(void)
{
if(key2==0)
{
jian=1;
}
if(jian&&key2)
{
jian=0;
if(install==1)
{
buzzer=0;
min--;
if((min&0x0f)==0x0f)
{
min=min&0x79;
if(min==0x79)
{
min=0x59;
}
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_min,min); //分鐘初始化,59分
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==2)
{
buzzer=0;
hour--;
if((hour&0x0f)==0x0f)
{
hour=hour&0x39;
if(hour==0x39)
{
hour=0x23;
}
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_hour,hour); // 修改小時時間
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==3)
{
buzzer=0;
day--;
if(day!=0x00)
{
if((day&0x0f)==0x0f)
{
day=day&0x39;
}
}
else
{
day=0x31;
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_day,day); // 修改日期
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==5)
{
buzzer=0;
year--;
if((year&0xf0)!=0xf0)
{
if((year&0x0f)==0x0f)
{
year=year&0xf9;
}
}
else
{
year=0x99;
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_year,year); // 修改年
writeDS1302(write_wp,0x80); //允許寫保護
}
else if(install==6)
{
buzzer=0;
week--;
if(week==0x00)
{
week=0x07;
}
writeDS1302(write_wp,0x00); //禁止寫保護
writeDS1302(write_week,week); // 修改星期
writeDS1302(write_wp,0x80); //允許寫保護
}
}
}
/***************************************************
DS18B20程序
***************************************************/
/*DS18B20延時程序*/
void delay_18b20(uint n)
{
while(n--);
}
/*復位程序*/
void init_18b20(void)
{ if(Temp_mark==0)
DQ=1; //拉高總線
delay_18b20(8); //延時一段時間
DQ=0; //拉低總線
delay_18b20(80); //延時大于480us
DQ=1; //拉高總線
delay_18b20(14);
while(DQ!=1) //稍做延時后,等待DS18B20應答
delay_18b20(5);
}
/*寫一個字節(jié)程序*/
void write_18b20(uchar data_a)
{
uchar loop=0;
for(loop=8;loop>0;loop--)
{
if(Temp_mark==0)
DQ=1;
_nop_();
_nop_();
DQ=0; // 拉低總線,一段時間
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
DQ=data_a&0x01; //寫一位
delay_18b20(5); //稍做延時
DQ=1; //拉高總線
data_a>>=1; //為下一位做準備
}
}
/*讀一個字節(jié)程序*/
uchar read_18b20()
{
uchar loop=0,data_b=0;
for(loop=8;loop>0;loop--)
{
if(Temp_mark==0)
DQ=0; //拉低總線
data_b>>=1; //讀取一位
DQ=1; //拉高總線,為讀取溫度做準備
if(DQ) //判斷總線上是否讀取1
data_b|=0x80; //是,送1
delay_18b20(4); //稍做延時
}
return data_b;
}
/*讀溫度程序*/
void read_t(void)
{
uchar t_l=0; //清溫度低位
uchar t_h=0; //清溫度高位
init_18b20(); //復位
write_18b20(0xcc); //跳過Rom
write_18b20(0x44); //溫度轉換
delay_18b20(160); //延時900us,等待溫度轉換
init_18b20(); //復位
write_18b20(0xcc); //跳過Rom
write_18b20(0xbe); //讀暫存器溫度
t_l=read_18b20(); //讀取溫度低位
t_h=read_18b20(); //讀取溫度高位
t=t_h;
t<<=8;
t|=t_l; //將溫度低位與高位合并
dispose_t(); //處理溫度數(shù)據(jù)
}
/*處理溫度*/
void dispose_t(void)
{
t=(t*0.0625); //得到正確溫度值
tt=(uchar)t; //取整數(shù),舍去小數(shù)部分
shi=tt%100/10;
ge=tt%100%10;
if(shi==0) //十位是否等于0
shi=10; //十位等于0,十位不顯示
if(Temp_mark==0)
{
shi0=shi;
ge0=ge;
}
else
{
shi1=shi;
ge1=ge;
}
}
/*顯示程序*/
void DS18B20_display()
{
lcd_pos(4,2); //室內(nèi)溫度地址
lcd_wdat(DIS1[shi0]); //室內(nèi)溫度十位
lcd_wdat(DIS1[ge0]); //室內(nèi)溫度個位
}
/*定時器2*/
void timer2(void) interrupt 5 using 1
{
TF2=0;
time++;
if(time==11)
{
time=0;
timer=1;
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
汽車倒車雷達源程序.zip
(69.97 KB, 下載次數(shù): 83)
2017-8-16 16:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
CDB51
時間:
2017-8-18 02:16
沙發(fā)。我要下載學習。感謝!
作者:
xyz9836
時間:
2017-8-18 08:11
收藏備用
作者:
xymiss
時間:
2017-10-13 20:41
我看到暈。做為新手的我。真的看不懂了。先留個印。慢慢研究。
作者:
yyfpy
時間:
2017-10-19 11:17
樓主牛!學習!
作者:
xymiss
時間:
2017-10-22 15:08
這個真是頭暈,希望有電路圖看一下
作者:
yehuo96
時間:
2018-4-20 16:35
學習一下
作者:
zgs660429
時間:
2018-4-22 12:38
下載學習學習,準備也做一個看看。
作者:
白建武
時間:
2018-5-15 19:55
厲害了,好好學習吧
作者:
﹌信念。
時間:
2018-5-19 22:26
收藏一下,慢慢學習
作者:
SDVER
時間:
2018-5-22 08:34
贊贊贊 感謝分享
作者:
hqinghua
時間:
2018-5-22 11:08
下載學習學習
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1