#include<reg52.h>
#include <intrins.h>
#include <math.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_DATA P0
sbit lcd_flag=P0^7
sbit LCD_RS=P3^0
sbit LCD_RW=P3^1
sbit LCD_E=P3^3
sbit p32=P3^2
sbit ST=P2^3
sbit OE=P2^4
sbit EOC=P2^5
static long int counter
static long float f
float Vbuf=0,xy,tmp,flag=0
void lcd_delay(int ms) //延时函数
{
uchar i
while(ms--)
{
for(i=0i<250i++)
{
_nop_()_nop_()_nop_()_nop_()
}
}
}
bit lcd_busy()//判断是否忙碌 RS=Low,RW=High,E=High:读状态
{
bit flag
LCD_RS=0//寄存器为Low
LCD_RW=1//是否读写为High
LCD_E=1 //使能端为High
if (lcd_flag==1) flag=1
else flag=0
LCD_E=0
return flag//返回标志,判断是否LCD忙碌
}
write_command(uchar command)//写指令时序
{ while(lcd_busy())
LCD_RS=0
LCD_RW=0
LCD_E=0
LCD_DATA=command
//delay_1ms(5)
LCD_E=1
LCD_E=0
}
write_data(uchar da) //写数据时序
{ while(lcd_busy())
LCD_RS=1
LCD_RW=0
LCD_E=0
// delay_1ms(5)
LCD_DATA=da
LCD_E=1
LCD_E=0
}
void LCD_INIT(void)
{ write_command(0x38)lcd_delay(1)//LCD为2行,5×7字
write_command(0x0c)lcd_delay(1)//打开显示,显示光标,光标不闪
write_command(0x06) lcd_delay(1)//每次右移一字符
}
void main()
{
uchar i,j,n
uchar buff[16],buf[16]
LCD_INIT()
P2 &=0xf8
while(1)
{
flag++
if(flag >= 10)
{
ST = 0
OE = 0
ST = 1
ST = 0
if(EOC == 1)
{
OE = 1
xy = P1
OE =0
if(xy >tmp)
{
tmp = xy
Vbuf = xy*1.0/50
}
}
}
if(flag <10)
{
TMOD=0X09
TH0=0
TL0=0
while(p32==1)
TR0=1
while(p32==0)
while(p32==1)
TR0=0
}
counter=TH0*256+TL0
while(counter<=500) /*判断是否分频及计算分频次数*/
{
P2++
i++
counter=counter*10
if(i==2)
{
P2 &= 0xf8
break
}
}
f=(1843200.0/(2*counter))*pow(10,i)
sprintf(buf,"V=%4.2fv",Vbuf)
//if(f<1500) f = f / 1.3123
if(f<1000)
{
sprintf(buff,"f=%4.2fHZ",f)
}
else if(f<1000000)
{
f=f/1000
sprintf(buff,"f=%4.2fkHZ",f)
}
write_command(0x80)
for( j=0j<16&&buf[j] != '\0'j++)
{
write_data(buf[j])
}
write_command(0xc0)
for(n=0n<16&&buff[n]!='\0'n++)
{
write_data(buff[n])
}
}
}
#include <reg51.h>#define uchar unsigned char
#define uint unsigned int
#define lcd_ports P1
sbit lcdrs=P3^5
sbit lcdrw=P3^3
sbit lcde=P3^4
void delay(uint z) //延迟子程序
{
uchar i,j
for(i=zi>0i--)
for(j=256j>0j--)
}
void write_com(uchar com) //1602写指令
{
lcdrs=0
P1=com
delay(5)
lcde=1
delay(5)
lcde=0
}
void write_data(uchar date) //1602写数据,写的是你要显示数据的ASCLL码值
{
lcdrs=1
P1=date
delay(5)
lcde=1
delay(5)
lcde=0
}
void init() //初始化
{
lcdrw=0
lcde=0
write_com(0x38)//使液晶显示点阵
write_com(0x0e)//初始设置
write_com(0x06) //初始设置
write_com(0x01) //清零
write_com(0x80+0x00)//使指针指向第一行第一列
}
void main()
{
init()
while(1){
write_com(0x80)//从第一行第一列开始写数据。
write_data(0x73) //显示s字符
write_data(0x69)//第一行第二列显示字符i
write_data(0x6e)//第一行第三列显示字符n
write_data(0x65)//第一行第四列显示字符e;}
}
南京罗姆液晶显示技术有限公司是旗下直属公司,成立于2000年,致力于液晶显示屏、液晶显示模组产品的生产、研发和销售。公司拥有强大的模块设计、开发和生产能力,公司各类COB、COG、SMT液晶显示模组种类达上百种,主要经营128128、24032、320240、12864、160128、19264、240128、160160等系列还可以为客户定制特殊需要,产品遍及医疗、衡器、电力控制、工业、航空、电子、仪表、数控机床、汽车电子、通讯领域等。公司同时还拥有优秀的销售团队和专业的服务部门,不但在品牌、价格、供货、服务等方面领先业界,而且可为客户提供及时、可行的技术支持和整体服务,满足不同客户多层次需要。
公司秉承“尽全力为客户提供一流的产品和服务”的经营宗旨,以“诚信、服务、创新、共赢”的经营理念,在业界用户中赢得了赞誉和支持。
hi,我有详细资料哦,加我的Q:1376235918 发给你 1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)