找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于80c52单片机+ADC0808的八路数字电压表仿真设计

[复制链接]
跳转到指定楼层
楼主
做了一个关于数字电压表的课程设计,已经验收

电路原理图如下:


电路原理图如下:


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


c源码
  1. #include<AT89X52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint a1,b1,ge,fen,fen1;
  5. uchar t,dispcount,count=0,flag=0;
  6. uchar dispbuf[4]={0,0,0,0};// 0x76,0x3f,0x3f,0x4f
  7. uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0Xff};
  8. sbit W0=P3^5; //
  9. sbit W1=P3^4; //
  10. sbit W2=P3^3; //
  11. sbit W3=P3^2; //数码管位选
  12. sbit PIN=P1^7;
  13. sbit st=P2^4; sbit ale=P2^3;  //通道控制
  14. sbit oe=P2^5; //输出控制
  15. sbit eoc=P3^7;  //转换结束标志
  16. sbit a=P2^0; //
  17. sbit b=P2^1; //
  18. sbit c=P2^2; //通道选择
  19. sbit k1=P3^0; //功能转换键
  20. sbit k2=P3^1; //通道选择键
  21. void delay(uchar x)
  22. {
  23. uint a,b;
  24. for(a=x;a>0;a--)
  25. for(b=110;b>0;b--);
  26. }
  27. void xz()//通道选择
  28. {
  29. if(t==0)
  30. {
  31. a=0;b=0;c=0;
  32. ale=1;
  33. delay(1);
  34. ale=0; }
  35. if(t==1)
  36. {a=1;b=0;c=0;
  37. ale=1;
  38. delay(1);
  39. ale=0; }
  40. if(t==2)
  41. {a=0;b=1;c=0;
  42. ale=1;
  43. delay(1);
  44. ale=0; }
  45. if(t==3)
  46. {
  47. a=1;b=1;c=0;
  48. ale=1;
  49. delay(1);
  50. ale=0; }
  51. if(t==4)
  52. {
  53. a=0;b=0;c=1;
  54. ale=1;
  55. delay(1);
  56. ale=0; }
  57. if(t==5)
  58. {
  59. a=1;b=0;c=1;
  60. ale=1;
  61. delay(1);
  62. ale=0;
  63. }
  64. if(t==6)
  65. {
  66. a=0;b=1;c=1;ale=1;
  67. delay(1);
  68. ale=0;
  69. }
  70. if(t==7)
  71. {a=1;b=1;c=1;ale=1;
  72. delay(1);
  73. ale=0;
  74. }
  75. }
  76. void aj()//按键
  77. {
  78. if(k1==0)
  79. {
  80. delay(2);
  81. if(k1==0)
  82. TR1=!TR1; //定时器1 使能取反
  83. while(!k1);
  84. }
  85. if(TR1==0)
  86. {
  87. if(k2==0)
  88. {
  89. delay(5);
  90. if(k2==0)
  91. {
  92. t++;
  93. if(t==8)
  94. t=0;
  95. }
  96. while(!k2);
  97. }
  98. }
  99. }
  100. void du()//读数据
  101. {
  102. uchar tmp;
  103. st=1;
  104. st=0;
  105. delay(1); //这里必须延时给硬件处理时间if(eoc==1) //转换结束标志
  106. {
  107. oe=1; //转换结束输出控制
  108. delay(1);
  109. tmp=P0;
  110. oe=0;
  111. delay(1);
  112. }
  113. if(tmp>=255)
  114. {
  115. flag=1;
  116. }
  117. else
  118. {
  119. flag=0;
  120. }
  121. ge=tmp/51;
  122. a1=(tmp%51)*10;
  123. fen=a1/51;
  124. b1=(a1%51)*10;
  125. fen1=b1/51;
  126. dispbuf[0]=dispcode[t];
  127. dispbuf[1]=dispcode[ge];
  128. dispbuf[2]=dispcode[fen];
  129. dispbuf[3]=dispcode[fen1];
  130. }
  131. void init()//初始化
  132. {
  133. EA=1;
  134. ET1=1;
  135. TMOD=0x10;
  136. TH1=(65536-50000)/256;
  137. TL1=(65536-50000)%256;
  138. T2MOD=0x00;
  139. T2CON=0x04; TR2=1 ;RCAP2L=(65536-4000)%256;
  140. RCAP2H=(65536-4000)/256;
  141. TR2=1; //打开定时器中断1,2
  142. ET2=1;
  143. W0=1;
  144. W1=1;
  145. W2=1;
  146. W3=1;
  147. ale=0;
  148. oe=0;
  149. st=0;
  150. t=0;k1=1;k2=1;
  151. }
  152. void as() interrupt 3 using 0 {
  153. uchar a;
  154. TH1=(65536-50000)/256;
  155. TL1=(65536-50000)%256;
  156. a++;
  157. if(a==20)
  158. {
  159. a=0;
  160. t++;
  161. if(t==8)
  162. t=0;
  163. }
  164. }
  165. void main()
  166. {
  167. init();
  168. while(1)
  169. {
  170. aj();
  171. xz();
  172. du();
  173. // xs();
  174. }
  175. }
  176. void t1(void) interrupt 5 using 0
  177. {
  178. TF2=0;  //T2定时器必须用软件清0
  179. P1=dispbuf[dispcount]; //控制数码管显示
  180. if (dispcount==0)
  181. {
  182. W0=0;
  183. W1=1;
  184. W2=1;
  185. W3=1;
  186. }
  187. if(dispcount==1)
  188. { PIN=0;
  189. W0=1;
  190. W1=0;
  191. W2=1;
  192. W3=1;
  193. }
  194. if(dispcount==2)
  195. {
  196. PIN=1;
  197. W0=1;
  198. W1=1;
  199. W2=0;
  200. W3=1;
  201. }
  202. if(dispcount==3)
  203. {
  204. W0=1;W1=1;W2=1;W3=0;
  205. }
  206. dispcount++;
  207. if(flag==1)
  208. count++;
  209. if(dispcount==4) dispcount=0;
  210. }
复制代码

全部资料51hei下载地址:
51上传.zip (975.31 KB, 下载次数: 85)



评分

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

查看全部评分

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

使用道具 举报

沙发
ID:110490 发表于 2018-10-9 17:59 | 只看该作者
此帖仅作者可见

使用道具 举报

板凳
ID:455401 发表于 2018-12-28 13:49 | 只看该作者
此帖仅作者可见

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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