这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 郁闷啊!protues中AT89C52无法点亮LCD1602

共1条 1/1 1 跳转至

郁闷啊!protues中AT89C52无法点亮LCD1602

工程师
2020-08-30 11:26:36     打赏

郁闷啊!protues中AT89C52无法点亮LCD1602,以下分别是我的电路图和源码,大家有空帮我看看,谢谢咯!


#include<reg51.h>

#define uint signed int

#define uchar signed char

 uchar aa[]={"current voiltage :"};

 sbit lcden = P3^4;    

 sbit lcdrs = P3^5;

 sbit START = P2^0;

 sbit CLK = P2^1;

 sbit EOC = P2^2;

 sbit OE = P2^3;

 sbit AA = P2^4;

 sbit BB = P2^5;

 sbit CC = P2^6;

 float v;

 void delay(uint ms)   //延时函数

 {

  uchar i;

  while(ms--);

  {

   for(i<0;i<120;i++);

  }

 }

 void write_com(uchar com)    //写命令函数

 {

  lcdrs=0;

  P0=com;

  delay(5);

  lcden=1;

  delay(5);

  lcden=0;

 }

 void write_data(uchar date)   //写数据函数

 {

  lcdrs=1;

  P0=date;

  delay(5);

  lcden=1;

  delay(5);

  lcden=0;  

 }

 void LCD1602_init()   //1602初始化函数

 {

  lcden=0;

  write_com(0x38);

  write_com(0x0C);

  write_com(0x01);  

 }

 void display (int v)

 {

  int shu,i;

  write_com(0x80);

  for(i=0;i<16;i++)

   {

    write_data(aa[i]);

   }

  write_com(0x80+0x46);

   shu=v/100;

   write_data(shu+'0');

   delay(5);

   write_data('.');

   delay(5);

    shu=v%100/10;

    delay(5);

    write_data(shu+'0');

    delay(5);

     shu=v%10;

     write_data(shu+'0');

     delay(5);

     write_data('V');

 }

 void main()

 {

  LCD1602_init();

  TMOD=0x02;

  TH0=0x14;

  TL0=0X14;

  IE=0X82;

  TR0=1;

  P2=0x0f;  //选用通道0,CLK=1,START=1,EOC=1,OE=1.

  while(1)

  {

   START=0;

   START=1;

   START=0;

   while(EOC=0);

   OE=1;

   v=P1*1.0/255*500;

   display(v);

   OE=0;

  }

 }

 void Timer0() interrupt 1

 {

  CLK=!CLK;

 }





关键词: LCD1602     AT89C52     protues    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]