• 大小: 319KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签:

资源简介

单片机课程设计数字电压表,有软件仿真图,C源程序,和文档,所有可直接运行。集大家之所成,所以分高

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int
uchar code dispcode[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x00};//定义数码管码段0~9显示码,最后一个表示管灭/
uchar code dispbitcode[]={0xef0xdf0xbf0x7f};                                // 定义变量,用于P2对LED的片选控制/
uchar dispbuf[4]={10000};                                                  //定义变量,用于表示三位电压数字最前一个数码管灭/
uchar dispcountgetdata;                                                      //定义循环计数变量与读数转换变量/
uint temp;                                                                     //定义整型变量/
sbit ST=P3^0;                          //定义了单片机和ADC0809芯片的接口 /                                 
sbit OE=P3^1; 
sbit EOC=P3^2;
sbit CLK=P3^3;
void main(void)                   //定义工作主函数/
{
 ST=0;                            // ADC0808未开始工作/
 OE=0;                            //ADC0808无输出/
 ET0=1;                          // 定时器0允许中断/
 ET1=1;                           //定时器1允许中断/
 EA=1;                           // CPU开中断/
 TMOD=0x12;                       //设置定时器工作方式T1工作方式1,T0工作方式2/
 TH0=216;                        // T0计数初值,定时 80us/
 TL0=216;
 TH1=(65536-4000)/256;            //T1计数初值,定时8ms(65536-5000高8位给TH1)/
 TL1=(65536-4000)%256;             //65536-5000低8位给TH1/
 TR1=1;                            //启动定时器1,将单片机处理结果输出,控制数码管显示/
 TR0=1;                            //启动定时器0产生ADC0808时序脉冲/
 ST=1;                             //产生上升沿信号, ADC0808清除内部寄存器/
 ST=0;                             //产生下降沿信号, ADC0808启动A/D转换/
 while(1)                          //循环/
 {
  if(EOC==1)                       // ADC0808转换结束/
    {
     OE=1;                        //允许ADC0808输出数据  /
     getdata=P0;                  //读入数据/
     OE=0;                        //禁止ADC0808数据输出/  
     temp=getdata*196;            //采得的AD值转换为实际的电压值/
     dispbuf[1]=temp/10000;       //第二位小数/
     temp=temp%10000;
     dispbuf[2]=temp/1000;        //第一位小数/
     temp=temp%1000;
     dispbuf[3]=temp/100;         //整数部分/
     ST=1;                        //ADC0808准备下一次工作/
     ST=0;
    }
 }
}
void t0(void) interrupt 1 using 1      //T0中断服务程序,使用第一组工作寄存器/
{
 CLK=~CLK;                             //定时取反一次,制造脉冲/
}
void t1(void) interrupt 3 using 1      //T1中断服务程序,使用第一组工作寄存器/
{
 TH1=(65536-8000)/256;                 //重装初值/
 TL1=(65536-8000)%256;
 P2=0xff;                              //读P2引脚/
 P2=dispbitcode[dispcount];            //扫描数码管的每一位,即控制某个数码管显示/
 P1=dispcode[dispbuf[dispcount]];      // 获取数码管显示内容的段码,显示某个数字/
 if(dispcount==1)                      //判断整数位/
    P1=P1+0x80;                        //在显示7段码基础上,加上小数点/ 
 dispcount++;                          //计数变量自加,对数码管控制信息逐位扫描/
 if(dispcount==4)                      //四位数码管全部扫描后计数初值复位/
    dispcount=0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     108734  2014-03-16 17:10  数字电压表——李兰\Last Loaded 数字电压表——李兰.DBK

     文件      16999  2014-03-16 14:13  数字电压表——李兰\定EDA稿.txt

     文件       4141  2014-03-16 17:09  数字电压表——李兰\数字电压表——李兰

     文件       3196  2014-03-16 17:11  数字电压表——李兰\数字电压表——李兰.c

     文件     331864  2014-03-16 18:36  数字电压表——李兰\数字电压表——李兰.doc

     文件     108574  2014-03-16 18:25  数字电压表——李兰\数字电压表——李兰.DSN

     文件       1382  2014-03-16 17:09  数字电压表——李兰\数字电压表——李兰.hex

     文件         53  2014-03-16 17:09  数字电压表——李兰\数字电压表——李兰.lnp

     文件        845  2014-03-16 17:09  数字电压表——李兰\数字电压表——李兰.LST

     文件       6262  2014-03-16 17:09  数字电压表——李兰\数字电压表——李兰.M51

     文件       4511  2014-03-16 17:09  数字电压表——李兰\数字电压表——李兰.OBJ

     文件        742  2014-03-16 18:26  数字电压表——李兰\数字电压表——李兰.PWI

     文件       3180  2014-03-16 17:00  数字电压表——李兰\数字电压表——李兰.txt

     文件          0  2014-03-16 17:02  数字电压表——李兰\数字电压表——李兰.uv2

     目录          0  2014-03-16 18:36  数字电压表——李兰

----------- ---------  ---------- -----  ----

               590483                    15


评论

共有 条评论