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

📄 main.c

📁 单片机c语言程序设计100例--基于PIC+PROTEUS
💻 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 + -