你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

利用单片机 AT89S51 设计一个数字电压表

[复制链接]
gaosmile 发布时间:2020-6-12 20:17
利用单片机 AT89S51 设计一个数字电压表, 能够测量 0-5V 之间的直流电压值, 四位数码显示。

近年来随着科技的飞速发展, 单片机的应用正在不断地走向深入, 同时带动
传统控制检测日新月益更新。 在实时检测和自动控制的单片机应用系统中, 单片机往往是作为一个核心部件来使用, 仅掌握单片机方面知识是不够的, 还应根据具体硬件结构, 以及针对具体应用对象特点的软件结合, 加以完善。 并且应该学会利用单片机 AT89S51 设计一个数字电压表, 能够精确测量 0-5V 之间的直流电压值, 并用四位数码显示电压值。“单片机原理及应用课程设计” 是电类专业的学科基础课, 它是继“汇编语言程序设计”、“微机原理与接口技术” 等课程之后开出的实践环节课程。


微信图片_20200612201545.png

微信图片_20200612201549.png
程序:

  1. #include <AT89X52.H>
  2. unsigned char code dispbitcode[]={0xfe, 0xfd, 0xfb, 0xf7,0xef, 0xdf, 0xbf, 0x7f} ;
  3. unsigned char code dispcode[]={0x3f, 0x06, 0x5b, 0x4f, 0x66,0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00} ;
  4. unsigned char dispbuf[8]={10, 10, 10, 10, 10, 0, 0, 0} ;
  5. unsigned char dispcount;
  6. unsigned char getdata;
  7. unsigned int temp;
  8. long int i;
  9. unsigned int R1;
  10. sbit ST=P3^0;
  11. sbit OE=P3^1;
  12. sbit EOC=P3^2;
  13. sbit CLK=P3^3;
  14. void main(void)
  15. {
  16. ST=0;
  17. OE=0;
  18. ET0=1;
  19. ET1=1;
  20. EA=1;
  21. TMOD=0x12;
  22. TH0=216;
  23. TL0=216;
  24. TH1=(65536-5000) /256;
  25. TL1=(65536-5000) %256;
  26. TR1=1;
  27. TR0=1;
  28. ST=1;
  29. ST=0;
  30. while(1)
  31. {
  32. if(EOC==1)
  33. {
  34. OE=1;
  35. getdata=P0;
  36. OE=0;
  37. i=getdata*196;
  38. dispbuf[5]=i/10000;
  39. i=i%10000;
  40. dispbuf[6]=i/1000;
  41. i=i%1000;
  42. dispbuf[7]=i/100;
  43. ST=1;
  44. ST=0;
  45. }
  46. }
  47. }
  48. void t0(void) interrupt 1 using 0 //定时器 0 中断服务
  49. {
  50. CLK=~CLK;
  51. }
  52. void t1(void) interrupt 3 using 0 //定时器 1 中断服务
  53. {
  54. TH1=(65536-6000) /256;
  55. TL1=(65536-6000) %256;
  56. P2=0xff;
  57. P1=dispcode[dispbuf[dispcount]];
  58. P2=dispbitcode[dispcount];
  59. if(dispcount==5)
  60. {
  61. P1=P1 | 0x80;
  62. }
  63. dispcount++;
  64. if(dispcount==8)
  65. {
  66. dispcount=0;
  67. }
  68. }
复制代码


通过对本设计的思考, 更加加深了对单片机的认识, 熟练了单片机的编程,更对当前的温度传感器有了更深刻的认识与了解, 但是由于此系统依赖温度传感器, 因而对温度传感器的稳定性, 线性等诸多方面有着严格的要求, 然而, 传感器的性能越好, 相对而言其价格也就越高, 因而在此设计中, 在温度传感器的应用问题上我个人觉的还是存在遗憾, 其次, 由于采用了汇编语言, 所以其编程过程复杂不易查错。 最后由于时间紧迫, 本设计还有诸多地方令人不是很满意。

收藏 评论1 发布时间:2020-6-12 20:17

举报

1个回答
qwzxaserd 回答时间:2020-6-13 08:37:51
不错。

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版