基于单片机的可调直流稳压电源设计(1) - 图文(7)

2019-05-17 15:20

参考文献

1) 公茂法,单片机人机接口实例集[M],北京航空航天大学出版社,1998. 2)何希才,稳压电源电路的设计与应用[M],中国电力出版社,2006.

3)陈伟杰,张虹,基于混合最优算法的高精度数控直流电源设计[J],中国集成电路,2008,8(06):48-52

4)吴恒玉,唐民丽,何玲等,基于89S51单片机的数控直流稳压源的设计[J],制造业自动化,2010,32(01):95-96 附录一 系统源程序

//函数声明

void shuchu(unsigned char B);//显示输出和电压调节 void xd_delay();

void max7219_reset();//复位

void max7219_init();//初始化控制寄存器

void max7219_echo(unsigned char bw,sw,gw,dw);//数据寄存器

void max7219_send_data(unsigned char addr,da);//完成一次寄存器的写操作

27

//地址定义

#define adr_bit_1 0x01//显示数据1的寄存器地址 #define adr_bit_2 0x02//显示数据2的寄存器地址 #define adr_bit_3 0x03//显示数据3的寄存器地址 #define adr_bit_4 0x04//显示数据4的寄存器地址 #define adr_bitrans_mode 0x09//译码方式寄存器的地址 #define adr_light_con 0x0a//亮度寄存器 #define adr_scan_count 0x0b//扫描界线寄存器 #define adr_close 0x0c//掉电控制寄存器 #define adr_glint_con 0x0d//闪烁控制寄存器 #define adr_show_test 0x0f//显示测试寄存器 //管脚定义 sbit jia=P1^0; sbit jian=P1^1;

sbit max7219_pin_LOAD=P2^0; sbit max7219_pin_CLK=P2^1; sbit max7219_pin_DIN=P2^2; sbit max7219_pin_RST=P2^3; #include #define uchar unsigned char

void chaoshi_2s();//超时2s判断子程序

void main() {

uchar timer=0;

uchar bw=0,sw=0,gw=5,dw=0; uchar B; //初始化 B=50; P0=B;

max7219_reset();//复位

max7219_init();//初始化控制寄存器

max7219_echo(uchar bw,sw,gw,dw);//数据寄存器显示

max7219_send_data(uchar addr,da);//完成一次寄存器的写操作? { } else {

if(jia==0)//判断按下是否+键 {

if (P0==0xff)//输出已为最大值 {

goto chaxun;

chaoshi_2s();//返回一个timer判断 if(timer==32) //是否超过按键超过2s {

shuchujia_0.1v(uchar B); if (P0==0xff)//输出已为最大值 {

if(jia==0)//判断按下是否+键 {

//xd_delay(); goto chang_jia; goto chaxun; else //未达最大值

else //未达最大值

xd_delay(); goto chaxun;

//uchar a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void max7219_delay(void);

chaxun:if(P1==0xff)//判断是否有键按下

chang_jia:v++;

28

}

if(jian==0) //按下-键 {

if (P0==0)//输出已为最小值 {

chaoshi_2s();//返回一个判断值timer if(timer=32) //是否超过按键超过2s { } else { }

v--;

shuchujian_0.1v(uchar B); goto chaxun;

shuchujian_0.1v(uchar B); if (P0==0)//输出已为最小值 { }

if(jian==0)//判断按下是-键 { } else

goto chaxun;

//xd_delay(); goto chang_jian; goto chaxun; else //未达最小值 goto chaxun; else //已达最小值 }

} else { }

v++;

shuchujia_0.1v(uchar B); goto chaxun;

}

} else

goto chaxun;

chang_jian:v--;

29

}

void shuchu(uchar B)//修改显示数值及电压输出 { }

void chaoshi_2s()//查询超时2s子程序 { }

//延时消抖 void xd_delay() { }

//完成max7219的复位 void max7219_reset() {

uchar i; uchar i;

for(i=0;i<2000;i++); TMOD=0x01; TH0=0xff; TL0=0xff; TR0=1;

while(jia==0||jian==0) { }

while(!TF0);//定时一次未到空等待 timer++;

TH0=0xff;//重新装入数值 TL0=0xff; if(timer==32)

break;

//输出电压改变 P0=B; //显示改变 bw=B/1000; sw=B00/100;

gw=B000/10+0x80; dw=B;

/*bw=a[bw];sw=a[sw];gw=a[gw]+0x80;dw=a[dw];*/

max7219_echo(unsigned char bw,sw,gw,dw);//数据寄存器显示 max7219_send_data(unsigned char addr,da);//完成一次寄存器的写操作 }

}

}

30

}

//通过写控制寄存器,完成max7219的初始化 void max7219_init() { }

//入口参数bw,sw,gw,dw //送8位显示数据到显示寄存器

void max7219_echo(unsigned char bw,sw,gw,dw) { }

//入口地址:addr寄存器地址,da寄存器设置值 //把设置值写入对应的寄存器中

void max7219_send_data(unsegned char addr,da) {

uchar i,byte_out; byte_out=adr; mwx7219_pin_DIN=1; mwx7219_pin_CLK=1; mwx7219_pin_LOAD=0; for(i=1;i<8;i++) {

mwx7219_pin_CLK=1;

mwx7219_pin_DIN=(bit)(byte_out&0x80); byte_out=byte_out<<1; mwx7219_pin_CLK=0; max7219_send_data(addr_bit_1,bw); max7219_send_data(addr_bit_2,sw); max7219_send_data(addr_bit_3,gw); max7219_send_data(addr_bit_4,dw); max7219_reset();

max7219_send_data(addr_scan_count,0x04); max7219_send_data(addr_light_con,0x08); max7219_send_data(addr_trans_mode,0xff); max7219_send_data(addr_close,0x01); max7219_pin_RST=0; for(i=0;i<125;i++)

max7219_delay(); max7219_pin_RST=1; for(i=0;i<255;i++)

max7219_delay(); max7219_pin_RST=0; for(i=0;i<125;i++)

max7219_delay();

31


基于单片机的可调直流稳压电源设计(1) - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工程地质课程设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: