第13章数控步进直流稳压电源
13.3.4源程序代码
#include<pic.h>
//此程序实现"数控步进直流稳压电源"的功能,调试时为了避免资源冲突,应使实验板上的拔码开关S8拔向高电平
//本程序设定S9键为增加键,当按住S9键不松开时,输出Vout以0.1V连续步进,
//直至键S9松开,当以一定的时间间隔点动S9键时,输出Vout也为点动步进
//递减键S11的功能与S9基本相同时,输出电压的值显示在3个LED上
unsignedchar R1,R2,R3,TXDATA,LEDF,BJF,COUNTW,data;
unsignedint i;
constchar table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0xFF};
//不带小数点的显示段码表
constchar table0[11]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10,0xFF};
//带小数点的的显示段码表
unsignedchar s[4]; //定义一个显示缓冲数组
//把需要显示的数字装入显示缓冲数组
void sfz()
{
s[0]=R3;
s[1]=R2;
s[2]=R1;
s[3]=0x0A;//最后一个LED显示"DARK"
}
//系统各寄存器初始化子程序
void initial()
{
R1=0X00;
R2=0X00;
R3=0X00;
sfz(); //把需要显示的数字装入显示缓冲数组
TXDATA=0X00;
LEDF=0X01;
BJF=0X01;
TRISB1=0;
TRISB2=0;
TRISB4=1;
TRISB5=1;//设置与键盘相关的各口的输入输出方式
RB1=0;
RB2=0;//设置扫描初始条件
}
//spi方式显示初始化子程序
void SPIINIT()
{
PIR1=0;
SSPCON=0x30;
SSPSTAT=0xC0;
//设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送,与"74HC595,当其
//SCLK从低到高跳变时,串行输入寄存器"的特点相对应
TRISC=0xD7;&n