⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hardware.h

📁 利用ATmega64实现了对测温芯片DS18B20
💻 H
字号:
#ifndef _HARDWARE_H
#define _HARDWARE_H

#include "main.h"



#define SET_LCD_E PORTF|=0x02           //LCD读写使能
#define CLR_LCD_E PORTF&=~(0x02)        //LCD读写禁止

#define LCD_R_N   PORTF|=0x04           //LCD读
#define LCD_W     PORTF&=~(0x04)        //LCD写

#define LCD_RS_REG PORTF&=~(0x08)       //读写LCD寄存器
#define LCD_RS_RAM PORTF|=0x08          //读写LCD的RAM

#define CLR_LCD_LIGHT PORTG|=0x08       //点亮LCD背景灯
#define SET_LCD_LIGHT PORTG&=~(0x08)    //熄灭LCD背景灯

#define DATAOUT  PORTA                  //LCD数据输出口
#define DATAIN    PINA                  //LCD数据输入口


#define SECOND_R 0
#define MINUTE_R 1
#define HOUR_R 2
#define DATE_R 3
#define MONTH_R 4
#define DAY_R 5
#define YEAR_R 6
#define WP_R 7
#define TCS_R 8



#define SET_DS1302_SCL PORTD|=0x01       //DS1302总线时钟高
#define CLR_DS1302_SCL PORTD&=~(0x01)    //DS1302总线时钟低

#define SET_DS1302_SDA PORTD|=0x02       //DS1302总线数据高
#define CLR_DS1302_SDA PORTD&=~(0x02)    //DS1302总线数据低

#define SET_DS1302_CE PORTG|=0x10        //DS1302使能
#define CLR_DS1302_CE PORTG&=~(0x10)        //DS1302禁止

#define DATABIT PIND&0x02                //DS1302总线数据接收

#define CLK_ADDR 0x80
#define RAM_ADDR 0xc0
#define TWI_W 0
#define TWI_R 1
 
#define B20DATA_SET PORTE|=0x80     //ds18b20数据口高
#define B20DATA_CLR PORTE&=~(0x80)  //ds18b20数据口低

#define B20DATABIT PINE&0x80       //DS18b20总线数据接收


void shortdelay(void);
void delay_us(int time);              //微秒级延时



void Write_command(uint8 cmd);        //向LCD写命令
void Write_data(uint8 addr,uint8 dat);//向LCD写数据
uint8 Is_Busy(void);                  //LCD的Busy函数
uint8 Read_data(void);                //从LCD读数据函数
void gotoxy(uint8 x,uint8 y);         //设置光标位置
void Welcome(void);                       //LCD欢迎词




uint8 twi_read_byte(uint8 addr,uint8 clk_ram);//  两线总线读一字节
void twi_write_byte(uint8 addr,uint8 data,uint8 clk_ram);//  两线总线写一字节



uint8 ds18b20_ack();                 //检测ds18b20是否存在
uint8 ds18b20_read();                //ds18b20读一字节操作
void ds18b20_write(uint8 cmd);       //ds18b20写一字节操作
void Is_ds18b20_done();              //转换是否完成(电源引脚供电时有效)



void LCD_init(void);                  //LCD初始化
void port_init(void);                 //端口初始化
void uart_init(void);                 //串口初始化
void DS_init();                       //DS1302初始化
void DS18B20_init();                  //18b20初始化
void timer0_init();                      //定时器初始化



#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -