基于单片机的数控直流稳压电源的设计毕业设计(编辑修改稿)内容摘要:
{ void ledout(unsigned char ATA,char add,char j)。 void delays(unsigned char t)。 unsigned char odata,key,temp。 unsigned int F,f=0x100。 //初始频率 char add=0,j=1。 odata = 155。 //电压初值为 5v j=1。 while(1) { for(F=f。 F0x110。 F++) { P3=0xff。 key=P3。 if (key!=0xff) { unsigned char i。 for(i=0。 i10。 i++) { ledout(odata,add,j)。 delays(10)。 ledout(odata,add,j)。 delays(10)。 } key=P3。 if (key==0xff) break。 for(i=0。 i10。 i++) { 13 ledout(odata,add,j)。 delays(10)。 ledout(odata,add,j)。 delays(10)。 } if(add==0) temp=odata。 //记录当前电压 值 switch(key) { case 0x7f: if (add==0) if(odata57) odata=odata2。 //电压加 break。 case 0xbf: if (add==0) if(odata255) odata=odata+2。 break。 case 0xdf: if(add==0) { //三角波 f=0x100。 //1 时为频率最高,最大允许 256 odata=155。 add=1。 } else if(add==1) { //方波 //f=f*200。 //频率跟随 f=0x100。 odata=55。 add=200。 } else if(add==1) { //f=f*200。 f=0x100。 odata=55。 add=200。 14 } else if(add==200) { //直流电压 add=0。 odata=temp。 //电压记忆恢复 } else { add=0。 odata=temp。 } break。 case 0xef: if(add!=0) { f=f/2。 //频率频率加 if (f==1) if(add==1) f=0x100。 else f=0x3200。 } break。 } } if(odata==255) add=add。 odata=odata+add。 if(odata==55) add=add。 P0=odata。 //送数据 } ledout(odata,add,j)。 //送显示 j=j。 } } 15 void ledout(unsigned char ATA,char add,char j) { unsigned char DH,DL,temp。 switch(add) { case 0: { temp=((ATA55)/2)1。 //十进制转换 DH=temp/10。 DL=temp%10。 }break。 case 1: { DH=11。 DL=12。 }break。 case 1: { DH=11。 DL=12。 }break。 case 200: { DH=13。 DL=14。 }break。 case 200: { DH=13。 DL=14。 }break。 } switch(j) { case 1: 16 { P1=led[DH]。 //送数码管高位显示 P1_7=1。 //动态显示 }break。 case 1: P1=led[DL]。 //送数码管低位显示 break。 } } void delays(unsigned char t) { unsigned char s。 for(。 t0。 t) for(s=0。 s255。 s++)。 } 17 . 扫描键盘程序 C语言程序如下: include void key_deal(void) {unsigned char Key_value。 // 按键键值 开始 将 和 能输入口 读取 p1 口输入状态 P1口屏蔽高 5 位,赋值key_valu=? 若 key_valu=6 S1 键按下 若 key_valu=5 S2 键按下 若 key_valu=4 S3 键按下 否则检查错误退出 S1 件对应子程序 S2 件对应子程序 S3 件对应子程序 结束 18 P1 |= 0x07。 // ~ 为输入端口 Key_value = P1 amp。 07。 // 屏蔽 P1口高 5 位,取键值 switch (Key_value){ case 6: Sub_S1()。 break。 // S1 按键按下,执行对应子程序 case 5: Sub_S2()。 break。 // S2 按键按下,执行对应子程序 case 3: Sub_S3()。 break。 // S3 按键按下,执行对应子程序 default: break。 } } . 显示驱动程序 C语言程序如下: include include include 开始 程序初始化 是否是状态 s1 是否是状态 s2 启动状态 s2 是否是状态 s3 启动状态 s3 启动状态 s1 按键处理 按键是否按下 返回 K1 按键 K2 按键 S2+, S3 进入时间调整 返回 K3 按键 循环执行 S2 循环执行 S1 19 code uchar disp_seg[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5f,0x79,0x71,0x40,0x00,0xff,0xf3}。 // 0 1 2 3 4 5 6 7 8 9 a b c d e f 全灭 , 全亮 , P. //定义显示缓冲区(由定时中断程序自动扫描) uchar DispBuf[8]。 //8 位数码管显示的数字码(显示段码的偏移量) uchar bdata ke。基于单片机的数控直流稳压电源的设计毕业设计(编辑修改稿)
相关推荐
或累减 ( 1) “时”修改程序 选中时位说明 (51H)+03H 是 00H,然后判断是 K2 键有效还是K3 键有效,如果是 K2 键有效,则对取出的十位内容进行加一操作,在将结果存入 00H 单元去显示( 0024),按下一次加一次,退出后等待第二次按下 K2 键进行累加(加到 24 重新赋 0 再加,依次循环);如果是 K3 键有效,则对取出的十位内容进行减一操作,再将结果存入 00H
部分一般分两种情况,一是微处理器接受键盘输入的命令后,不需经过数模转换器,直接由接口输出控制信息和数据信息,去控制一些执行机构。 智能电能表硬件设计各功能环节如下: 微处理器或微控制器微处理器和微控制器在智能电能表中都是智能电能表的心脏,它们的结构、特性对智能电能表的性能影响很大。 微处理器也是一种通用器件,如果给予足够的外部支持电路和处理时间,它几乎可以完成任何任务
而达到控制电机的目的。 此设计简单,成本低,易于实现。 5 第三章 系统硬件设计 硬件系统的主要包括对外界温度信息的采集电路,单片机控制电路,散热风扇控制电路,上位机串口通信电路,电源电路。 下面对具体电路进行阐述。 第一节 单片机 STC90C516 RD 一、 芯片特点 1 工作电压: (5V 单片机 )、 ( 3V 单片机) ; 2 增强型 6 时钟 /机械周期, 12 时钟 /机械周期
程序储存允许( PSEN)输出是外部程序 存储器 的读选通信号,当 AT89S52 由外部 程序存储器 取指令(或数据)时,每个 机器周期 输出两个脉冲。 在此期间,当访问 外部数据 存储器 , PSEN 信号 被跳过两次。 (10) XTAL1 管脚: 振荡器反相放大器 及 内部时钟发生器的输入端。 ( 11) XTAL2 管脚: 振荡器反相放大器的输出端。 模数转换器 CS5522 芯片 模
补偿前后系统的特性。 第 9 页 共 65 页 3 系统硬件电路设计 如图 1所示中,本设计硬件电路设计包括 6大部分电路。 功率因数测量电路 功率因数测量原理 本设计中采用 51 单片机的 INT0 和 INT1 接收的信号的时间差来测量功率因数,下面介绍功率因数测量的原理。 功率因数是交流电路中电压与电流之间的相位差 的余弦。 在我国,电网的交流信号的频率 f 和周期 T 都是知道得
也可以提供低 8位地址和 8位数据的复用总线。 此时, P0 口内部上拉电阻有效。 在 Flash ROM 编程时, P0 端口接收指令字节;而在校验程序时,则输出指令字节。 验证时,要求外接 一个 上拉电阻。 P1 口双向 8位 I/O口 P1 端口( ~ , 40~ 44引脚 ,1~ 3 引脚): P1口是一个带 有 内部上拉电阻的 8位双向 I/O 口。