📄 main.c
字号:
//-----------------------------------------------------------------
// 名称: 交流电压检测系统仿真
//-----------------------------------------------------------------
// 说明: 本例运行时,0~222V的交流电压将显示在数码管上,调整外部“被测”
// 交流电压时,数码将实时刷新显示当前交流电压。
//
//-----------------------------------------------------------------
#include <pic.h>
#include <math.h>
#define INT8U unsigned char
#define INT16U unsigned int
#define INT32U unsigned long
#define _XTAL_FREQ 4000000UL
//595引脚定义
#define ST_CP RB0 //输出锁存器控制脉冲
#define DS RB1 //串行数据输入
#define SH_CP RB2 //移位时钟脉冲
//数码管段码表
const INT8U SEG_CODE[] =
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
int Sample_Array[40];//40次电压采样
double max_AC_Volt,AC_Volt,ui;
INT8U digit[4],i;
//-----------------------------------------------------------------
// 串行输入子程序
//-----------------------------------------------------------------
void Serial_Input_595(INT8U dat)
{
}
//-----------------------------------------------------------------
// 并行输出子程序
//-----------------------------------------------------------------
void Parallel_Output_595()
{
}
//-----------------------------------------------------------------
// ADC初始化
//-----------------------------------------------------------------
void ADC_Initialise()
{
}
//-----------------------------------------------------------------
// CCP2模块初始化
//-----------------------------------------------------------------
void CCP2_Initialise()
{
}
//-----------------------------------------------------------------
// A/D中断服务程序,读取一次A/D转换结果并保存到采样数组
//-----------------------------------------------------------------
void interrupt AD_Int_ISR()
{
}
//-----------------------------------------------------------------
// 将4位整数分解位为4个数位
// 该函数仅使用加/减运算符,这比使用/与%分解的效率要高
//-----------------------------------------------------------------
void DEC_TO_4DIGIT(int x, INT8U d[])
{
d[0] = d[1] = d[2] = d[3] = 0;
while (x >= 1000) { x -= 1000; d[0]++; }
while (x >= 100) { x -= 100; d[1]++; }
while (x >= 10) { x -= 10; d[2]++; }
d[3] = x;
}
//-----------------------------------------------------------------
// 交流电压检测
//-----------------------------------------------------------------
void get_AC_Voltage()
{
max_AC_Volt = 0.0;
//共进行5趟计算
for (INT8U j = 0; j < 5; j++)
{
}
}
//-----------------------------------------------------------------
// 串行输出到595驱动数码管显示
//-----------------------------------------------------------------
void Output_To_595_Display()
{
//将数字段码字节串行输入595
//595移位寄存数据传输到存储寄存器并出现在输出端
}
//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
void main()
{
//RB端口设为输出,控制74HC595
TRISB0 = TRISB1 = TRISB2 = 0;
ADC_Initialise(); //ADC初始化
CCP2_Initialise(); //CCP2模块初始化
while (1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -