📄 main.c
字号:
//-----------------------------------------------------------------
// 名称: 三端可调正电压稳压器LM317应用测试
//-----------------------------------------------------------------
// 说明: 本例运行时,通过两个按键可实现1.5V~9.0V的直流电压步进调节,
// 步进值为0.5V,输出电压值将同时显示在7406驱动的数码管上.
//
//-----------------------------------------------------------------
#include <pic.h>
#define INT8U unsigned char
#define INT16U unsigned int
#define _XTAL_FREQ 1000000UL
#define K1 RD6
#define K2 RD7
//0-9的数码管段码,最后3位是黑屏及"dC"的段码,索引为10,11,12
const INT8U SEG_CODE[] =
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xA1,0xC6};
//待显示数据
INT8U Disp_Buff[] = {11,12,10,0,0,0};
//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
void main()
{
INT8U volt = 0, Disp_Volt = 0, PreKey = 0xFF;
TRISB = TRISC = 0x00; //RB,RC端口均设为输出
PORTB = PORTC = 0xFF; //初始时关闭数码管
TRISD = 0xF0; //高四位输入,低四位输出
PORTD = 0xFF;
PSA = 0; //前分频分配给TMR0
PS2 = 0; PS1 = PS0 = 1; //16分频(OPTION低3位为011)
TMR0 = (INT8U)(256 - _XTAL_FREQ/4/16*0.004); //4ms定时初值
T0IF = 0; //清TMR0中断标志
T0CS = 0; //TMR0工作于定时器方式
T0IE = 1; //允许TMR0溢出中断
GIE = 1; //开全局中断
while (1)
{
if ((PORTD & 0B11000000) != PreKey)
{
}
}
}
//-----------------------------------------------------------------
// TMR0定时器溢出中断控制数码管显示
//-----------------------------------------------------------------
void interrupt TMR0_Refresh_DSY( )
{
static INT8U i = 0;
if (T0IF)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -