




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include#define uint unsigned int #define uchar unsigned char signed long count=0; signed long houd,fq;signed long k1,k2,k3;int i=0, x=0;sbit p2_4=p24; sbit rs=p25; sbit rw=p26; sbit e=p27; /数字ascii码放在数组中 /unsigned int shu=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39; unsigned int shu1=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39; void delay(int count) /延时 int p; while(count-) for(p=0;p110;p+); void write_com(unsigned int n) /写指令 rs=0; p1=n; delay(5); e=1; delay(5); e=0; void write_data(unsigned char t) /写数据 rs=1; p1=t; delay(5); e=1; delay(5); e=0; void time1_int(void) interrupt 3 th1=tl1=0; tr1=1; x+; void time0_int(void) interrupt 1 th0=(65535-50000)/256; /装初值,定时50ms tl0=(65535-50000)%256; i+; if(i=20) /1s时间已到 i=0; tr1=0; /关闭计数器1 count=(65536*x+256*th1+tl1)*1000; x=0; if(k1=1)fq=2.65; else if(k2=1)fq=2.7; else if(k3=1) fq=3.97; houd=0.123*(6000000-count)/fq; th1=tl1=0; /重新装初值 tr1=1; /重新启动计数器器 void show() write_com(0x85);write_data(shucount/100000); delay(5); /显示十万位 write_com(0x86);write_data(shu(count/10000)%10);delay(5); /显示万位 write_com(0x87);write_data(shu(count/1000)%10);delay(5); /显示千位 write_com(0x88); write_data(shu(count/100)%10);delay(5); /显示百位 write_com(0x89);write_data(shu(count/10)%10);delay(5); /显示十位 write_com(0x8a);write_data(shucount%10);delay(5); /显示个位 write_com(0x83);write_data(0x66);delay(5); /显示频率表示的字符f write_com(0x84);write_data(0x3d);delay(5); /显示字符= write_com(0x8b);write_data(0x48);delay(5); /显示字母h write_com(0x8c);write_data(0x7a);delay(5); /显示字母z write_com(0xc5);write_data(shu1houd/100000); delay(5); /显示十万位 write_com(0xc6);write_data(shu1(houd/10000)%10);delay(5); /显示万位 write_com(0xc7);write_data(shu1(houd/1000)%10);delay(5); /显示千位 write_com(0xc8); write_data(shu1(houd/100)%10);delay(5); /显示百位 write_com(0xc9);write_data(shu1(houd/10)%10);delay(5); /显示十位 write_com(0xca);write_data(shu1houd%10);delay(5); /显示个位 write_com(0xc3);write_data(0x68);delay(5); /显示频率表示的字符hwrite_com(0xc4);write_data(0x3d);delay(5); /显示字符= write_com(0xcb);write_data(0x6e);delay(5); /显示字母n write_com(0xcc);write_data(0x6d);delay(5); /显示字母m void main() tmod=0x51; /t1计数、t2定时,且都工作在方式1 th1=0x00;tl1=0x00; th0=(65535-50000)/256; /装初值,定时50ms tl0=(65535-50000)%256; ea=1; /开总中断 et0=1;et1=1; /中断允许 tr0=1;tr1=1; /启动定时器 rw=0; e=0; write_com(0x01); /显示清零,数据指针清零 write_com(0x38); /设置16x2显示5x7点阵,8位数据口 write_com(0x0c); /设置开显示,显示光标且闪烁 write_com(0x06); /写一个字符后地址指针加1 while(1) show(); delay(5); #include #define uchar unsigned charsbit rs=p25;sbit rw=p26;sbit e=p27;uchar busyc,line;uchar code table116= freq= 6000.0 khz;uchar code table216= houd= 0000.0 nm ;void delay(uchar n) uchar x,y; for(x=n;x0;x-) for(y=110;y0;y-);void busy(uchar busyc)rs=0;rw=1;e=1;delay(1);busyc=p1;e=0;void write_command(uchar command)while(busyc);/判断lcd是否忙碌rs=0;rw=0;e=1;p1=command;delay(10);e=0;void write_date(uchar date)while(busyc);/判断lcd是否忙碌rs=1;rw=0;e=1;p1=date;delay(10);e=0;void init()e=0;write_command(0x38);delay(15);write_command(0x0c);write_command(0x06);write_command(0x01);void display()uchar i;write_command(0x80);/设置显示位置(第一行开头)for(i=0;i16;i+)write_date(table1i);/显示字符write_command(0xc0);/ 设置显示位置(第二行开头)for(i=0;i16;i+)write_date(table2i);/ 显示字符void main(void)init(); / 初始化lcddelay(20);while(1)display();#include#include#define uchar unsigned char#define uint unsigned intsbit rs=p25;sbit rw=p26;sbit en=p27;uchar str=f=6000.0khz,h=0000.0nm;/延时void delayms(uint ms)uchar i;while(ms-) for(i=0;i120;i+);/忙检查uchar busy_check()uchar lcd_status;rs=0;/寄存器选择rw=1;/读状态寄存器en=1;/开始读delayms(1);lcd_status=p1;en=0;return lcd_status;/写lcd命令void write_lcd_command(uchar cmd)while(busy_check()&0x80)=0x80);/忙等待rs=0;/选择命令寄存器rw=0;/写en=0;p1=cmd;en=1;delayms(1);en=0;/发送数据void write_lcd_data(uchar dat)while(busy_check()&0x80)=0x80);/忙等待rs=1;rw=0;en=0;p1=dat;en=1;delayms(1);en=0;/lcd初始化void initialize_lcd()write_lcd_command(0x38);delayms(1);write_lcd_command(0x01);delayms(1);/清屏write_lcd_command(0x06);delayms(1);/字符进入模式:屏幕不动,字符后移write_lcd_command(0x0c);delayms(1);/显示开,光标关/显示字符串void showstring(uchar x,uchar y,uchar *str)uchar i=0;if(y=0) write_lcd_command(0x80|x);/设置显示起始位置if(y=1) write_lcd_command(0xc0|x);for(i=0;i16;i+)/输出字符串write_lcd_data(stri);void main()initialize_lcd();while(1)showstring(0,0,str);showstring(0,1,str);#include #include#define uint unsigned int #define uchar unsigned char sbit lcd_rs=p25; sbit lcd_rw=p26; sbit lcd_en=p27; uchar code disa = 6000.0 khzz ;uchar code disb = 0000.0nm ;void delaynop( )_nop_( );_nop_( );_nop_( );_nop_( );_nop_( );void delay (uint ms)uchar t;while(ms-) for(t=0; t120;t+);bit lcd_busy( )bit result;lcd_rs=0;lcd_rw=1;lcd_en=1;delaynop( );result=(bit)(p0&0x80);lcd_en=0;return(result);void lcd_write(bit start,uchar in_data)while(lcd_busy();if(start=0)lcd_rs=0;elselcd_rs=1;lcd_rw=0;lcd_en=0;delaynop( );p0=in_data;lcd_en=1;delaynop( );lcd_en=0;delaynop( );void lcd_init( )delay(15);lcd_write(0,0x28);delay(5);lcd_write(0,0x28);delay(5);lcd_write(0,0x28);delay(5);lcd_write(0,0x0c);delay(5);lcd_write(0,0x06);delay(5);lcd_write(0,0x01);delay(25);void lcd_pos(uchar pos)lcd_write(0,pos|0x80);void main( )uchar m;lcd_init( );lcd_pos(0x00);for(m=0;m16;m+)lcd_write(1,disam);delay(150);lcd_pos(0x40);for(m=0;m16;m+)lcd_write(1,disbm);delay(150);while(1);#include #define uchar unsigned charsbit rs=p25;sbit rw=p26;sbit e=p27;uchar busyc,line;uchar code table116= 6000 khzz ;uchar code table216= 0000nm ;void delay(uchar n) uchar x,y; for(x=n;x0;x-) for(y=110;y0;y-);void busy(uchar busyc)rs=0;rw=1;e=1;delay(1);busyc=p0;e=0;void write_command(uchar command)while(busyc);/判断lcd是否忙碌rs=0;rw=0;e=1;p0=command;delay(10);e=0;void write_date(uchar date)while(busyc);/判断lcd是否忙碌rs=1;rw=0;e=1;p0=date;delay(10);e=0;void init()e=0;write_command(0x38);delay(15);write_command(0x0c);write_command(0x06);write_command(0x01);void display()uchar i;write_command(0x80);/设置显示位置(第一行开头)for(i=0;i16;i+)write_date(table1i);/显示字符write_command(0xc0);/ 设置显示位置(第二行开头)for(i=0;i16;i+)write_date(table2i);/ 显示字符void main(void)init(); / 初始化lcddelay(20);while(1)display();#include #define uchar unsigned char#define uint unsigned intsbit rs=p25; /数据、命令选择,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人与海鸥课件
- 《谁看见过风》诗歌课件
- 《读后感》课件教学课件
- 肺移植患者术后的护理
- 慢性肾脏病护理查房
- 高效团队管理技巧培训
- 童年的家绘本讲解
- 电解质代谢紊乱患者护理
- 高血压低血压的自我护理
- 《苏三起解》课件
- 企业运营管理学习课件
- 蓝藻治理打捞管理制度
- 2025年合肥兴泰金融控股(集团)有限公司招聘23人笔试参考题库附带答案详解
- 苏州市建设工程档案立卷程序与标准
- 国庆、中秋节前安全教育培训
- 2024年江苏省《辅警招聘考试必刷500题》考试题库附答案(能力提升)
- 公共管理学:理论、实践与方法 课件 第2章 公共管理的公共性、服务性与共治性
- ISO9001质量管理体系标准
- 歌曲《wake》中英文歌词对照
- 2024年职教高考《机械制图》考试题库
- 电子政务概论-形考任务5(在线测试权重20%)-国开-参考资料
评论
0/150
提交评论