注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小明砸乱弹琴

一个工程师的日常

 
 
 

日志

 
 
关于我

喜欢哲学、几何学、心理学、物理学、音乐、简单的文字及一切有趣的事物。热爱幻想,追求思想和学术自由,热衷简单平凡的生活和发现美好的事物。

网易考拉推荐
 
 

DA转换-15~15v电压源设计(《微机控制》课程设计作业)  

2011-06-11 16:04:20|  分类: 单片微机 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


不多说,直接上硬件电路和软件设计,最近考试比较忙的!

DA转换-15~15v电压源设计(《微机控制》课程设计作业) - 赵明 - Alexander

             #include<reg52.h>
        #include <intrins.h>
        #include <math.h>
           #define uchar unsigned char
        #define uint  unsigned int
        float num=51;
    float temp;    
       uchar val;
       uchar aa[4];
                        
                     unsigned char code disp_code[]={
              0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
              0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0xff};//数码管显示
  /**********************************************************

  延时子函数

**********************************************************/
void delayms(uint ms)
{
   uchar t;
   while(ms--)
   {
     for(t = 0; t < 120; t++);
   }
}



/******************************************************************
函数功能:显示计数次数的子程序
入口参数:x
********************************************************************/
 void Display(void)
{ uchar i;
P2=0xfe    ;  
for(i=0;i<4;i++)
    {       P1=disp_code[aa[i]];
            if(P2==0xfb)
        P1=disp_code[aa[i]]&0x7f;
         delayms(5);    
         P2=_crol_(P2,1);
    }    
   
 }

/*******************************************
函数功能:主函数
******************************************/    
void main(void)
  {
   EA=1;   //开放总中断
   EX0=EX1=1;  //允许使用外中断
   IT0=IT1=1;  //选择负跳变来触发外中断
    temp=num/8.5;
    val=(uchar)temp;
       if(val<15)
           {aa[0]=16;val=15-val;}
        else {aa[0]=17;val=val-15;}
        aa[1]=val/10;
        if (aa[1]==0)
        aa[1]=17;
        aa[2]=val%10;
        aa[3]=0;
P0=(uchar)num;    
    while(1)
    Display();
    
 }

 void int0(void) interrupt 0 //外中断0的中断编号为0
{
  if(num==0)
   num=num+8.5;    
   num=num-8.5;
   temp=num/8.5;
   val=(uchar)temp;
       if(val<15)
           {aa[0]=16;val=15-val;}
        else {aa[0]=17;val=val-15;}
        aa[1]=val/10;
        if (aa[1]==0)
        aa[1]=17;
        aa[2]=val%10;
        aa[3]=0;
 }
 void int1(void) interrupt 2  //外中断1的中断编号为0
{
 
  if(num==255)
   num=num-8.5;
   num=num+8.5;
 temp=num/8.5;
 val=(uchar)temp;
       if(val<15)
           {aa[0]=16;val=15-val;}
        else {aa[0]=17;val=val-15;}
        aa[1]=val/10;
        if (aa[1]==0)
        aa[1]=17;
        aa[2]=val%10;
        aa[3]=0;
 P0=(uchar)num;
 }
  评论这张
 
阅读(453)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017