《初学者C51自学笔记》之ADC0804

 

 

#include<reg52.h>
#define uchar unsigned char 
#define uint unsigned int 

sbit rs=P2^4;
sbit rw=P2^5;
sbit e=P2^6;
sbit adcs=P3^5;
sbit adrd=P3^0;
sbit adwr=P3^3;
sbit P23=P2^3;

uchar table1[]=" www.baidu.com ";
uchar table2[]="LCD1602 test ok!";
uchar table3[]="0123456789"; 

//延时函数,在12MHz的晶振频率下
//大约50us的延时
void delay_50us(uint t)
{
	uchar j;
	for(;t>0;t--)
        for(j=19;j>0;j--);
}

void write_com(uchar com)//液晶写指令
{
	e=0;
	rs=0;
	rw=0;
	P0=com;
	delay_50us(10);
	e=1;
	delay_50us(20);
	e=0;
}

void write_data(uchar dat)//液晶写数据
{
	e=0;
	rs=1;
	rw=0;
	P0=dat;
	delay_50us(10);
	e=1;
	delay_50us(20);
	e=0;	
}

void init(void)//液晶初始化
{
	delay_50us(300);
	write_com(0x38);
	delay_50us(100);
	write_com(0x38);
	delay_50us(100);
	write_com(0x38);
	write_com(0x38);
	write_com(0x08);
	write_com(0x01);
	write_com(0x06);
	write_com(0x0c);
}

void main()
{
	uchar value;
	uchar k,l,m,n;
	uchar i;
     //关点阵
	P23=1;
	P1=0x00;
	P23=0;
	P1=0xff;
	while(1)
	{
		//数据写入过程
		adcs=0;
		adwr=0;
		delay_50us(2);
		adwr=1;
		adcs=1;
		delay_50us(10);
		//读数据过程
		adcs=0;
		adrd=0;
		delay_50us(1);
		value=P1;	 
		adrd=1;
		adcs=1;
		//把数据分开
		k=value/100; 
		l=value%100;  
		m=l/10;       
		n=l%10; 
		//覆盖液晶原来的数据并显示      
		table1[2]=table3[n];
		table1[1]=table3[m];
		table1[0]=table3[k];
		init();
		write_com(0x80);
		for(i=0;i<3;i++)
		{
			 write_data(table1[i]);
			 delay_50us(20);
		}
	}

		
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值