找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5771|回复: 3
收起左侧

基于51单片机的数字电压表设计程序 用adc0832模数芯片 lcd1602显示

[复制链接]
ID:137190 发表于 2016-9-25 17:38 | 显示全部楼层 |阅读模式
0.png 用51单片机和adc0832做的数字频率计 采用lcd1602来显示数据.

源程序:
  1. #include<reg51.h>
  2. #include<stdio.h>
  3. typedef unsigned char uchar;
  4. typedef unsigned int  uint;
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. uchar table[]=" The voltage is";
  8. uchar cnt,ADtemp;
  9. sbit lcdrs=P2^2;
  10. sbit lcdwr=P2^3;
  11. sbit lcden=P2^4;
  12. sbit adcs=P3^4;
  13. sbit adclk=P3^5;
  14. sbit addo=P3^6;
  15. sbit addi=P3^7;
  16. sbit led=P2^1;
  17. void delay(uint delay_time)
  18. {
  19.         for(;delay_time>0;delay_time--);
  20. }
  21. void write_lcdcom(uchar date)
  22. {
  23.         lcdwr=0;
  24.         lcdrs=0;
  25.         delay(5);        
  26.         P0=date;
  27.         lcden=1;
  28.         delay(5);
  29.         lcden=0;
  30. }
  31. void write_lcddate(uchar lcddate)
  32. {
  33.         lcdwr=0;
  34.         lcdrs=1;
  35.         delay(5);
  36.         P0=lcddate;
  37.         lcden=1;
  38.         delay(5);
  39.         lcden=0;
  40. }
  41. void lcd_init()
  42. {
  43.         write_lcdcom(0x38); //display mode
  44.         write_lcdcom(0x06); //显示光标移动位置
  45.         write_lcdcom(0x0c); //显示开及光标设置
  46.         write_lcdcom(0x01); //显示清屏
  47. }
  48. void display()
  49. {
  50.         uchar i;
  51.         lcdwr=0;
  52.         lcdrs=0;
  53.         lcden=0;
  54.         write_lcdcom(0x80);
  55.         for(i=0;i<16;i++)
  56.         {
  57.                 write_lcddate(table[i]);
  58.         }
  59.         lcdwr=1;
  60.         lcdrs=1;
  61.         lcden=1;
  62. }
  63. //volt显示函数
  64. void lcd_printf(uchar shuju)
  65. {
  66.         uchar qian,bai,shi,ge;
  67.         qian=shuju/1000;
  68.         bai=shuju%1000/100;
  69.         shi=shuju%1000%100/10;
  70.         ge=shuju%10;
  71.         write_lcdcom(0xc5);
  72.         write_lcddate(qian+0x30);
  73.         write_lcdcom(0xc5+1);
  74.         write_lcddate(bai+0x30);
  75.         write_lcdcom(0xc5+2);
  76.         write_lcddate(shi+0x30);
  77.         write_lcdcom(0xc5+3);         
  78.         write_lcddate(ge+0x30);
  79. }
  80. uchar Readadc(uchar channal)
  81. {
  82.         uchar i,j;
  83.         uchar temp=0;
  84.         channal<<=3;
  85.         channal|=3;
  86.         adcs=0;
  87.         for(i=0;i<3;i++)
  88.         {
  89.                 adclk=0;
  90.                 delay(5);
  91.                 addi=channal;
  92.                 channal>>=1;
  93.                 delay(5);
  94.                 adclk=1;
  95.                 addi=0;
  96.         }
  97.         adclk=0;
  98.         delay(5);
  99.         adclk=1;
  100.         for(j=0;j<8;j++)
  101.         {
  102.                 adclk=0;
  103.                 delay(5);
  104.                 if(addo==1)temp|=0x01;
  105.                         temp<<=1;
  106.                 delay(5);
  107.                 adclk=1;
  108.         }
  109.         adcs=1;
  110.         return temp;
  111. }
  112. void T1time1()
  113. {
  114.         TMOD|=0x10;
  115.         TH1=0x3c;
  116.         TL1=0xb0;
  117.         EA=1;
  118.         ET1=1;
  119.         TR1=1;
  120. }
  121. void main()
  122. {
  123.         T1time1();
  124.         lcd_init();
  125.         display();
  126.         while(1)
  127.         {
  128.                 if(cnt==5)
  129.                 {
  130.                         cnt=0;
  131.                         led=~led;
  132.                         ADtemp=Readadc(0);
  133.                         P1=ADtemp;
  134.                 }
  135.                 lcd_printf(ADtemp);
  136.                 lcden=0;
  137.                 lcdwr=1;
  138.         }
  139. }
  140. void t1() interrupt 3 using 1
  141. {
  142.         TH1=0x3c;
  143.         TL1=0xb0;
  144.         cnt++;        
  145. }

复制代码

基于51单片机的数字电压表设计.rar

72.16 KB, 下载次数: 82, 下载积分: 黑币 -5

回复

使用道具 举报

ID:202479 发表于 2017-5-19 11:35 | 显示全部楼层
很好。。。。。。。。。。
回复

使用道具 举报

ID:151422 发表于 2017-6-1 10:36 | 显示全部楼层
很不错,下载下来看看学习一下
回复

使用道具 举报

ID:260825 发表于 2017-12-15 09:28 | 显示全部楼层
你好,这个最大量程只有2.5v请问您知道如何将他改成5v的电压表吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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