单片机源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- uchar code table1[]="0123456789";
- uchar table2[]="Vo:0.00V;Nu:000";
- uchar table3[]="made by Xfei";
- uchar num,x,adval,wen,dy,date;
- sbit lcden=P3^2; //使能
- sbit lcdrs=P3^0; //数据/指令
- sbit lcdrw=P3^1; //读/写
- sbit lcds1=P3^3;
- sbit lcds2=P3^4 ;
- sbit adwr=P3^6; //写信号输入端
- sbit adrd=P3^7; //读信号输入端
- sbit adcs=P3^5; //片选信号
- //延时ms//
- void delay(uint x)
- {
- uint i,j;
- for(i=0;i<x;i++)
- for(j=0;j<110;j++);
- }
- //MCU写指令//
- void write_com(uchar com)
- {
- lcdrs=0;
- P2=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- //MCU写数据//
- void write_date(uchar date)
- {
- lcdrs=1;
- P2=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- //初始化//
- void init()
- {
- adcs=0;
- lcdrw=0;
- lcden=0;
- write_com(0x38);
- write_com(0x0c);
- write_com(0x06);
- write_com(0x01);
- /*
- while(table3[num]!='\0')
- {
- write_date(table3[num++]);
- delay(100);
- }
- lcden=1;
- delay(1000);
- lcden=0;
-
- write_com(0x80+0x40);
- num=0;//很重要!
- while(table2[num]!='\0')
- {
- write_date(table2[num++]);
- } */
- }
- /*小改嘻嘻*/
- //显示第一行//
- void disp1()
- {
- uchar i;
- write_com(0x80+0x00);
- for (i=0;i<12;i++)
- {
- write_date(table3[i]);
- delay(100);
- }
- }
- //显示第二行//
- void disp2()
- {
- uchar i;
- write_com(0x80+0x40);
- for (i=0;i<12;i++)
- {
- write_date(table2[i]);
- delay(100);
- }
- }
-
- void set_shu1(uchar add,uchar date)
- {
- uchar bai,shi,ge;
- bai=date/51;
- shi=((date%51)*10/51);
- ge=((date%51)*10%51)*10/51;
- write_com(0x80+0x40+add); //地址
- {
- write_date(table1[bai]); //百位数值
- }
- write_com(0x80+0x40+add+2); //地址右移二位
- {
- write_date(table1[shi]); //十位数值
- }
- write_com(0x80+0x40+add+3); //地址右移三位
- {
- write_date(table1[ge]) ; //个位数值 //将值转换成具体数
- }
- }
- void set_shu2(uchar add,uchar date)
- {
- uchar bai,shi,ge;
- bai=date/100;
- shi=date%100/10;
- ge=date%10;
- write_com(0x80+0x40+add);
- {
- write_date(table1[bai]);
- }
- write_com(0x80+0x40+add+1);
- {
- write_date(table1[shi]);
- }
- write_com(0x80+0x40+add+2);
- {
- write_date(table1[ge]) ;
- } //将电压值转换为0~225的值*/
- }
- void st_ad() //开AD
- {
- adwr=1;
- _nop_();
- adwr=0;
- _nop_();
- adwr=1;
- }
- void red_ad()//读AD
- {
- adrd=1;
- _nop_();
- adrd=0;
- _nop_();
- adrd=0;
- }
- void main()
- {
-
- init();
- disp1();
- disp2();
-
-
- while(1)
- {
- write_com(0x80+0x40+7);
-
- st_ad();
- set_shu1(3,adval);
- set_shu2(12,adval);
- red_ad();
- adval=P1; //P1的值送给date
- // dy=adval/255;
- // P2=wen;
- }
- //while(1);
- }
复制代码
所有资料51hei提供下载:
ADC0804显示电压.rar
(61.54 KB, 下载次数: 69)
|