找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1428|回复: 0
打印 上一主题 下一主题
收起左侧

记录一个数字直流电压表的作业

[复制链接]
跳转到指定楼层
楼主
本帖最后由 Eibles 于 2018-6-21 14:41 编辑
  1. #include<reg51.h>
  2. #define uchar unsigned char //定义数据类型
  3. #define uint unsigned int        //定义数据类型
  4. sbit P2_4=P2^4;
  5. sbit ST=P2^5;
  6. sbit EOC=P2^6;
  7. sbit OE=P2^7;
  8. sbit p2_0=P2^0;
  9. sbit p2_1=P2^1;
  10. sbit p2_2=P2^2;
  11. sbit p2_3=P2^3;
  12. uchar code led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //建立0-9字模

  13. void delay0(void)
  14. {
  15.         uchar i,j;
  16.         for(i=0;i<10;i++)
  17.         for(j=0;j<100;j++);
  18. }
  19. timer0()interrupt 1
  20. {
  21.         P2_4=!P2_4;                                      //改变电平状态
  22. }
  23. void main(void)
  24. {
  25.         uchar k;
  26.         uint l;   
  27.         TMOD=0x02;                    //定时器T0方式2       
  28.         TH0=(256-100)%256;            //0.1ms定时,装载初始值
  29.         TL0=(256-100)%256;
  30.         IE=0x82;
  31.         EA= 1;                                          //开启全局中断
  32.         ET0= 1;
  33.         TR0=1;                                          //启动定时器0
  34.         P2=0x4f;                      //初始化 P2口
  35.         while(1)
  36.         {
  37.                 ST=0;                                                  //发出启动脉冲信号
  38.                 delay0();
  39.                 ST=1;
  40.                 delay0();
  41.                 ST=0;
  42.                 while(EOC==1);                                  //查询结束状态
  43.                 delay0();
  44.                 OE=1;                                                  //OE置1信号
  45.                 k=P1;                                                  //将A/D结果赋值给k
  46.                 l=5000*((float)k/255);                  //计算电压值       
  47.                 p2_3=0;                                                  //打开p2_3口
  48.                 P0=led_mod[l%10];                          //求个位
  49.                 delay0();
  50.                 p2_3=1;                                                  //关闭p2_3口
  51.                 p2_2=0;                                                  //打开p2_2口
  52.                 P0=led_mod[l/10%10];                  //求十位
  53.                 delay0();
  54.                 p2_2=1;                                                  //关闭p2_2口
  55.                 p2_1=0;                                                  //打开p2_1口
  56.                 P0=led_mod[l/100%10];                  //求百位
  57.                 delay0();
  58.                 p2_1=1;                                                  //关闭p2_1口
  59.                 p2_0=0;                                                  //打开p2_0口
  60.                 P0=led_mod[l/1000];                          //求千位
  61.                 delay0();
  62.                 p2_0=1;                                                  //关闭p2_0口
  63.         }
  64. }
复制代码



2018621-143850.jpg (553.09 KB, 下载次数: 31)

2018621-143850.jpg

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表