?? sio.i
字號:
** 日 期: 2007年01月13日
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 呂海安
** 日 期: 2008年03月02日
** 描 述: For 智能充電器 FOR AVR MCU / Mega16
**
**------------------------------------------------------------------------------------------------------
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 村長 aleyn.wu
** 日 期: 2008年3月3日
** 描 述: 修改了一些BUG,使本項目能在CVAVR下編譯通過
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
// UCSRA
// UCSRB
// UCSRC
extern void putchar(char c);
extern void debug_usart_init(void);
extern void usart_init(void);
/**************************************************************************************×*****************
** END OF FILE
********************************************************************************************************/
/****************************************Copyright (c)**************************************************
** 智 能 充 電 器 開 發 小 組
** OurAVR 論壇
** QQ 群: 26052247
**
** http://www.ouravr.com/bbs
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: LCD1602.h
**創 建 人: 呂海安
**最后修改日期: 2008年03月02日
**描 述: LCD1602 的底層函數頭文件 FOR AVR MCU / Mega16
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 呂海安
** 版 本: v1.0
** 日 期: 2008年03月02日
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 呂海安
** 日 期: 2008年03月02日
** 描 述: 修改格式,歸檔
**
**------------------------------------------------------------------------------------------------------
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 村長 aleyn.wu
** 日 期: 2008年3月3日
** 描 述: 修改了一些BUG,使本項目能在CVAVR下編譯通過
** 增加了一個函數
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern void delay_1us(void);
extern void delay_xus(unsigned char t);
extern void lcd_write_cmd(unsigned char cmd);
extern void lcd_write_byte(unsigned char byte, unsigned char type);
extern void lcd_cls();
extern void lcd_init();
extern void lcd_write_char(unsigned char lcd_x, unsigned char lcd_y, unsigned char data);
extern void lcd_locate(unsigned char lcd_x, unsigned char lcd_y);
extern void lcd_print_string(char *pstring);
extern void lcd_print_stringF(flash char *pstring);
extern void lcd_print_number(int number , unsigned char ca , unsigned char cb);
/**************************************************************************************×*****************
** END OF FILE
********************************************************************************************************/
/****************************************Copyright (c)**************************************************
** 智 能 充 電 器 開 發 小 組
** OurAVR 論壇
** QQ 群: 26052247
**
** http://www.ouravr.com/bbs
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: ADC.h
**創 建 人: 呂海安
**最后修改日期: 2008年03月02日
**描 述: AD轉換的底層函數頭文件 FOR AVR MCU / Mega16
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 呂海安
** 版 本: v0.03
** 日 期: 2008年03月02日
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 呂海安
** 日 期: 2008年03月02日
** 描 述: 修改格式,歸檔
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
// 電壓放大倍數 3.1
// 電流放大倍數 6.6
/*According to the Trinove's memory Planning
26 AD電池1 電壓
27 AD電池1 電壓
28 AD電池1 電流
29 AD電池1 電流
30 AD電池1 溫度
31 AD電池1 溫度
32 AD電池2 電壓
33 AD電池2 電壓
35 AD電池2 電流
34 AD電池2 電流
36 AD電池2 溫度
37 AD電池2 溫度
*/
/* ADC Channel Definition
ADC0-- BAT_0_VOL
ADC1-- BAT_1_VOL
ADC2-- BAT_0_CUR
ADC3-- BAT_1_CUR
ADC4-- BAT_0_TEMP
ADC5-- BAT_1_TEMP
ADC6-- Key
*/
//#define KEY_CH 6
extern void s_analog_init();
extern unsigned int s_analog();
extern unsigned int vol_to_bat_vol(unsigned int vol);
extern int vol_to_bat_cur(unsigned int vol);
extern unsigned int vol_to_temp(unsigned int vol);
extern unsigned char filter_adc(unsigned char channel);
extern void ReadBatterySTAT(unsigned char channel);
/**************************************************************************************×*****************
** END OF FILE
********************************************************************************************************/
/****************************************Copyright (c)**************************************************
** 智 能 充 電 器 開 發 小 組
** OurAVR 論壇
** QQ 群: 26052247
**
** http://www.ouravr.com/bbs
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: PWM.h
**創 建 人: 呂海安
**最后修改日期: 2008年03月02日
**描 述: PWM 的底層函數頭文件 FOR AVR MCU / Mega16
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 呂海安
** 版 本: v1.0
** 日 期: 2008年03月02日
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 呂海安
** 日 期: 2008年03月02日
** 描 述: 修改格式,歸檔
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern void pwm_init();
extern void bat_discharge(unsigned char bat_no,unsigned int discharge_value);
extern void bat_charge_set(unsigned char bat_no, unsigned char cur_or_vol,unsigned int charge_data_set);
extern int cell_pid0(void);
extern int cell_pid1(void);
extern void cell_output(void);
/**************************************************************************************×*****************
** END OF FILE
********************************************************************************************************/
//#include "Menu.h" // 菜單 functions
//#define Memory_Char_to_Int(x) (((INT16U)memory[x]<<8) | ((INT16U)memory[x+1]))
//#define Memory_Char_To_Long(x) (((unsigned long)memory[x])<<24|((unsigned long)memory[x+1])<<16|((unsigned long)memory[x+2])<<8|((unsigned long)memory[x+3]))
//#define Memory_Long_add(x) memory[x]=((Memory_Char_To_Long(x)+1)>>24);memory[x+1]=((Memory_Char_To_Long(x)+1)>>16);memory[x+2]=((Memory_Char_To_Long(x)+1)>>8);memory[x+3]=Memory_Char_To_Long(x)+1
typedef struct // 定義一個位段結構,用于處理輸入的各個位
{
unsigned char bit0 :1;
unsigned char bit1 :1;
unsigned char bit2 :1;
unsigned char bit3 :1;
unsigned char bit4 :1;
unsigned char bit5 :1;
unsigned char bit6 :1;
unsigned char bit7 :1;
}BITTYPE;
typedef union datatype // 定義一個聯合位段
{
unsigned char bbyte;
BITTYPE bbit;
}COMMBYTE;
extern unsigned int t0flag;
extern unsigned char para[230];
extern void ShowMenu(void); // 菜單函數
/*
#include "SIO.c" // Keyboard functions
#include "UART.c" // UART functions
#include "LCD1602.c" // LCD functions
#include "ADC.c" // ADC functions
#include "PWM.c" // PWM functions
*/
/**************************************************************************************×*****************
** END OF FILE
********************************************************************************************************/
/****************************************Copyright (c)**************************************************
** 智 能 充 電 器 開 發 小 組
** OurAVR 論壇
** QQ 群: 26052247
**
** http://www.ouravr.com/bbs
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: SIO.h
**創 建 人: 呂海安
**最后修改日期: 2008年03月02日
**描 述: 按鍵的底層函數頭文件 FOR AVR MCU / Mega16
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 呂海安
** 版 本: v0.01
** 日 期: 2008年03月02日
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 呂海安
** 日 期: 2008年03月02日
** 描 述: 修改格式,歸檔
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/**************************************************************************************×*****************
** END OF FILE
********************************************************************************************************/
/***************************************************
74HC166并入串出
連線如下
KEY_SDO = PB0
KEY_CLK = PB1
KEY_SLOAD = PB2
KEY_1 = A (UP) 62
KEY_2 = B (DOWN) 61
KEY_3 = C (LEFT) 59
KEY_4 = D (RIGHT) 55
KEY_5 = E (ENTER) 47
KEY_6 = F (CANCEL) 31
***************************************************/
/*******************************************************************************************************
** 函數名稱: KEY_init
** 功能描述: 74HC166 通信端口設置
** 輸入參數: 無
** 輸出參數: 無
********************************************************************************************************/
void KEY_init(void)
{
// SLOAD SCK 輸出,SDO 輸入
DDRB |= (1 << 2)|(1 << 1);
DDRB &=~ (1 << 0);
// SLOAD = 1
// SCK = 0
// SDO上拉電阻啟用
(PORTB |= (1 << 2));
(PORTB &=~ (1 << 1));
PORTB |= (1 << 0);
}
/*******************************************************************************************************
** 函數名稱: SCK_low_to_high
** 功能描述: 時鐘產生
** 輸入參數: 無
** 輸出參數: 無
********************************************************************************************************/
void SCK_low_to_high(void)
{
(PORTB &=~ (1 << 1));
(PORTB |= (1 << 1));
(PORTB &=~ (1 << 1));
}
/*******************************************************************************************************
** 函數名稱: read_keycode
** 功能描述: 鍵值讀取函數
** 輸入參數: 無
** 輸出參數: 鍵值
********************************************************************************************************/
unsigned char read_keycode(void)
{
unsigned char key_code = 0,i;
(PORTB |= (1 << 2));
(PORTB &=~ (1 << 2)); // 允許并行數據 <----> Parallel enable input (active LOW)
SCK_low_to_high(); // 時鐘信號,上升沿鎖存數據并移出最高位 BIT7,非常重要
(PORTB |= (1 << 2)); // 并行鎖存結束,非常重要
// 先讀取 BIT7,非常重要
for(i = 8; i > 0; i--)
{
if((PINB & (1 << 0)))
{
key_code |= (1 << i-1);
}
//產生下一個時鐘信號
SCK_low_to_high();
}
//返回鍵值,六個按鍵,只要低六位,高兩位未用
return (key_code & 0x3f);
}
/*******************************************************************************************************
** 函數名稱: read_keycode
** 功能描述: 連接并接收鍵盤信號,并進行持續按鍵判斷
** 鍵盤按鍵值和持續按鍵標志 均直接寫入內存數據表
** 鍵盤內存分配一個單元 INT8U
** 前2位代表狀態,后6位對應每一個按鍵
** 最多存儲三個按鍵狀態,多余將被忽略
** 狀態: 1 1 --- 前兩次結果未處理,等待
** 1 0 --- 上次按鍵結果未處理,等待
** 0 1 --- 正常按下,等待處理
** 0 0 --- 空閑 忽略,不處理
** 普通按鍵位1代表正常,0代表按下
** 輸入參數: 無
** 輸出參數: 鍵值
********************************************************************************************************/
void s_keyboard(void)
{
unsigned char i;
i = read_keycode();
if(i != 63)
{
lcd_locate(14,0);
lcd_print_number(i,2,0);
}
}
/**********************************************************************************************************
** END OF FILE
********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -