資源簡介
用STM32F407開發的一款示波器,以UCOS III做操作系統,默認4.3寸電容屏顯示(可修改)。
下側數據框,可顯示幅值、Vmax、Vmin、頻率、period、占空比、V/div、T/div等參數。
右側按鈕控制框,具有Auto、Stop、cursor、time/div、V/div、Signal功能。
Signal可作為信號發生器,測試示波器波形顯示。

代碼片段和文件信息
#include?“24cxx.h“
#include?“SysTick.h“
#include?“lcd.h“?
#include?“touch.h“
#include?“key.h“
//初始化IIC接口
void?AT24CXX_Init(void)
{
IIC_Init();//IIC初始化
}
//在AT24CXX指定地址讀出一個數據
//ReadAddr:開始讀數的地址??
//返回值??:讀到的數據
u8?AT24CXX_ReadOneByte(u16?ReadAddr)
{ ??
u8?temp=0; ?? ???? ?
????IIC_Start();??
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); ???//發送寫命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//發送高地址 ????
}
else?
{
IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));???//發送器件地址0XA0寫數據
}? ???
IIC_Wait_Ack();?
????IIC_Send_Byte(ReadAddr%256);???//發送低地址
IIC_Wait_Ack(); ????
IIC_Start();?? ? ???
IIC_Send_Byte(0XA1);???????????//進入接收模式 ???
IIC_Wait_Ack(); ?
????temp=IIC_Read_Byte(0); ???
????IIC_Stop();//產生一個停止條件 ????
return?temp;
}
//在AT24CXX指定地址寫入一個數據
//WriteAddr??:寫入數據的目的地址????
//DataToWrite:要寫入的數據
void?AT24CXX_WriteOneByte(u16?WriteAddru8?DataToWrite)
{ ??? ?? ???? ?
????IIC_Start();??
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); ????//發送寫命令
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr>>8);//發送高地址 ??
}
else?
{
IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));???//發送器件地址0XA0寫數據
}? ?
IIC_Wait_Ack(); ???
????IIC_Send_Byte(WriteAddr%256);???//發送低地址
IIC_Wait_Ack();? ? ?? ???
IIC_Send_Byte(DataToWrite);?????//發送字節 ???
IIC_Wait_Ack();?? ???? ???
????IIC_Stop();//產生一個停止條件?
delay_ms(10); ?
}
//在AT24CXX里面的指定地址開始寫入長度為Len的數據
//該函數用于寫入16bit或者32bit的數據.
//WriteAddr??:開始寫入的地址??
//DataToWrite:數據
//Len????????:要寫入數據的長度24
void?AT24CXX_WriteLenByte(u16?WriteAddru32?DataToWriteu8?Len)
{??
u8?t;
for(t=0;t {
AT24CXX_WriteOneByte(WriteAddr+t(DataToWrite>>(8*t))&0xff);
} ????
}
//在AT24CXX里面的指定地址開始讀出長度為Len的數據
//該函數用于讀出16bit或者32bit的數據.
//ReadAddr???:開始讀出的地址?
//返回值?????:數據
//Len????????:要讀出數據的長度24
u32?AT24CXX_ReadLenByte(u16?ReadAddru8?Len)
{??
u8?t;
u32?temp=0;
for(t=0;t {
temp<<=8;
temp+=AT24CXX_ReadOneByte(ReadAddr+Len-t-1);? ? ???
}
return?temp; ????
}
//檢查AT24CXX是否正常
//這里用了24XX的最后一個地址(255)來存儲標志字.
//如果用其他24C系列這個地址要修改
//返回1:檢測失敗
//返回0:檢測成功
u8?AT24CXX_Check(void)
{
u8?temp;
temp=AT24CXX_ReadOneByte(255);//避免每次開機都寫AT24CXX ???
if(temp==0X55)return?0; ???
else//排除第一次初始化的情況
{
AT24CXX_WriteOneByte(2550X55);
????temp=AT24CXX_ReadOneByte(255); ??
if(temp==0X55)return?0;
}
return?1; ??
}
//在AT24CXX里面的指定地址開始讀出指定個數的數據
//ReadAddr?:開始讀出的地址?對24c02為0~255
//pBuffer??:數據數組首地址
//NumToRead:要讀出數據的個數
void?AT24CXX_Read(u16?ReadAddru8?*pBufferu16?NumToRead)
{
while(NumToRead)
{
*pBuffer++=AT24CXX_ReadOneByte(ReadAddr++);
NumToRead--;
}
}?
//在AT24CXX里面的指定地址開始寫入指定個數的數據
//WriteAddr?:開始寫入的地址?對24c02為0~255
//pBuffer???:數據數組首地址
//NumToWrite:要寫入數據的個數
void?AT24CXX_Write(u16?WriteAddru8?*pBufferu16?NumToWrite)
{
while(NumToWrite--)
{
AT24CXX_WriteOneByte(WriteAddr*pBuffer);
WriteA
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5479??2019-07-30?16:31??示波器(自己)\APP\24Cxx\24cxx.c
?????文件???????5472??2016-10-29?11:13??示波器(自己)\APP\24Cxx\24cxx.h
?????文件???????8711??2019-08-03?11:12??示波器(自己)\APP\adc\adc.c
?????文件????????524??2019-08-01?21:53??示波器(自己)\APP\adc\adc.h
?????文件????????593??2016-08-25?15:15??示波器(自己)\APP\beep\beep.c
?????文件????????220??2016-08-25?11:31??示波器(自己)\APP\beep\beep.h
?????文件???????8193??2019-08-02?21:38??示波器(自己)\APP\dac\dac.c
?????文件????????458??2019-08-02?12:01??示波器(自己)\APP\dac\dac.h
?????文件???????3344??2016-09-14?16:51??示波器(自己)\APP\iic\iic.c
?????文件????????776??2016-09-14?16:51??示波器(自己)\APP\iic\iic.h
?????文件???????2130??2019-07-30?14:20??示波器(自己)\APP\key\key.c
?????文件???????2075??2019-07-30?14:20??示波器(自己)\APP\key\key.h
?????文件??????35016??2016-04-15?21:57??示波器(自己)\APP\lcd\FONT.H
?????文件?????101586??2019-08-03?17:03??示波器(自己)\APP\lcd\lcd.c
?????文件???????8379??2019-08-03?16:55??示波器(自己)\APP\lcd\lcd.h
?????文件????????579??2016-08-23?17:28??示波器(自己)\APP\led\led.c
?????文件????????220??2019-07-31?13:54??示波器(自己)\APP\led\led.h
?????文件???????3161??2019-08-03?10:44??示波器(自己)\APP\pulley\pulley.c
?????文件????????115??2019-08-03?10:44??示波器(自己)\APP\pulley\pulley.h
?????文件???????1960??2019-08-03?13:52??示波器(自己)\APP\struction\structure.c
?????文件???????2435??2019-08-03?16:12??示波器(自己)\APP\struction\structure.h
?????文件???????8850??2019-08-03?14:48??示波器(自己)\APP\task\task_cursor.c
?????文件????????326??2019-08-03?11:12??示波器(自己)\APP\task\task_cursor.h
?????文件???????6304??2019-08-03?17:05??示波器(自己)\APP\task\task_main.c
?????文件????????473??2019-08-02?23:14??示波器(自己)\APP\task\task_main.h
?????文件???????5817??2019-08-03?15:56??示波器(自己)\APP\task\task_show.c
?????文件????????467??2019-08-02?21:32??示波器(自己)\APP\task\task_show.h
?????文件???????6237??2019-08-03?16:55??示波器(自己)\APP\task\task_touchscreen.c
?????文件????????680??2019-08-03?10:22??示波器(自己)\APP\task\task_touchscreen.h
?????文件???????3952??2019-08-02?00:16??示波器(自己)\APP\touch\ctiic.c
............此處省略437個文件信息
- 上一篇:網絡拓撲電子政務信息系統
- 下一篇:基于stm32溫度報警設計
評論
共有 條評論