完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include #define uchar unsigned char #define uint unsigned int ***it lcden=P2^1; ***it lcdrs=P2^0; ***it lcdrw=P2^2; ***it adwr=P3^7; //***it adcs=P3^0; //oe ==gnd ***it eoc=P2^3; uchar code table[]="the illustion is"; uchar code table1[]="lx"; uint num,a,d,qian,bai,shi,ge,num1; uint illusion,temp; void init(void); //初始化函数 void delay(uint a); //延时函数 void write_com(uchar com); //写指令函数 void write_data(uchar date); //写数据函数 void display(uint d); //显示函数 void main() { void init(); //初始化 EA=1; //开总中断 ET0=1; //开定时器中断 TR0=1; //启动定时器 lcden=0; /***********对1602液晶的模式进行设置***************/ write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); //设置开显示,不显示光标 write_com(0x06); //写一个字符后地址指针加一 write_com(0x01); //显示清零,数据指针清零 while(1) { /*******开始不断扫描P1引脚是否有信号,并且对信号进行计算和显示********/ if(P1!=0) { delay(10); if(P1!=0)//防止误判 { adwr=0; delay(5); adwr=1; delay(5); adwr=0; while(eoc); for(a=10;a>0;a--) {temp=illusion*4; temp=1000; display(temp);//显示照度 } }; }; } } /**********************初始化程序************************/ void init(void) { TMOD=0x01; //定时器0工作于计数方式1 TH0=(65536-5000)/256; TL0=(65536-5000)%256; //定时时间为50ms num=0; // adcs=0; // sign=0; // temp=0; write_com(0x80); } /*************延时函数每次延时50ms********************/ void delay(uint a) { uint b,c; for(b=a;b>0;b--) for(c=110;c>0;c--); } /************定时器中断函数*****************/ void to_time() interrupt 1 { TH0=(65536-5000)/256; //中断函数里重新赋初值 TL0=(65536-5000)%256; num++; if(num==20) //每20*50ms计算一次,并且将速度显示 { num=0; //标志位 illusion=P1; } } /***********写指令函数************/ void write_com(uchar com) { lcdrs=0; lcdrw=0; P0=com; //delay(5); lcden=1; delay(20); lcden=0; } /*********写数据函数*************/ void write_data(uchar date) { lcdrs=1; //delay(5); lcdrw=0; P0=date; // delay(5); lcden=1; delay(20); lcden=0; } /*************显示函数********************/ void display(uint illusion) { qian=illusion/1000; bai=illusion%1000/100; shi=illusion%100/10; ge=illusion%10; //速度范围为0至9999. for(num1=0;num1<20;num1++) //显示前面一段字符 { write_data(table[num1]); delay(20); }; write_com(0x80+0x41); //显示光照强度 write_data(0x30+qian); write_com(0x80+0x42); write_data(0x30+bai); write_com(0x80+0x43); write_data(0x30+shi); write_com(0x80+0x44); write_data(0x30+ge); write_com(0x80+0x47); for(num1=0;num1<2;num1++) { write_data(table1[num1]); delay(20); } write_com(0x80); }
|
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
512 浏览 0 评论
778 浏览 1 评论
746 浏览 1 评论
电路小知识 | 交流电路复数的基础知识以及相位差和电抗的计算
601 浏览 0 评论
1815 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 09:43 , Processed in 0.536290 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号