ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:171.30KB ,
资源ID:18020174      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18020174.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机实验报告9.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机实验报告9.docx

1、单片机实验报告9洛阳理工学院实验报告系别计算机系班级B140505学号B14050414姓名史锦峰课程名称单片机原理及组成实验日期2016.5.30实验名称 可调时钟成绩实验目的:了解LCD1602的用法实验条件:计算机,Keil uVision4,ISIS 7 Professional,实验箱实验内容:实验过程1.实验电路图2.C51源程序#include#define uint unsigned int#define uchar unsigned charsbit rs=P24; /定义液晶显示器控制端口sbit rw=P25;sbit en=P26;sbit s1=P10; /定义按键控

2、制sbit s2=P11;sbit s3=P12;sbit s4=P13;uchar shi,fen,miao,ri,yue,nin;uchar code table= Time;uchar code table1= 00:00:00;uchar num,num1,count;uint i,sh,ge,s,g;void delay(uchar time) /延时 uint j; for(;time0;time-) for(j=0;j125;j+); void write_com(uchar com) /写指令函数 en=0; rs=0; delay(5); P0=com; delay(5);

3、en=1; delay(5); en=0;void write_data(uchar dat) /写数据函数 en=0; rs=1; delay(5); P0=dat; delay(5); en=1; delay(5); en=0;void init() /初始化 en=0; rw=0; write_com(0x38);/设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);/设置开显示,不显示光标 write_com(0x06);/写一个字符后地址指针加1 write_com(0x01);/显示清零,数据指针清零 for(i=0;i(sizeof(table)-1);i

4、+) /第一行写 write_com(0x80+i); write_data(tablei);for(i=0;i(sizeof(table1)-1);i+) /第二行写 write_com(0x80+0x40+i); write_data(table1i);miao=59;fen=59;shi=23; TMOD=0x01; /time0作为定时器工作在模式1下TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1; /开启总中断ET0=1; /开启time0中断TR0=1; /启动time0void write_sfm(uchar add,uchar

5、num) /时分秒函数 sh=num/10; /分离出十位 ge=num%10; /分离出个位 write_com(0x80+0x40+add); /第二行数据指针位置调整 write_data(0x30+sh); /更改显示数据的十位 write_data(0x30+ge); /更改显示数据的个位void timer0() interrupt 1 /time0中断 TH0=(65536-50000)/256; /重装初始值 TL0=(65536-50000)%256; count+; if(count=20) /20次到则满一秒 count=0; miao+; if(miao=60) mia

6、o=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; write_sfm(4,shi); write_sfm(7,fen); write_sfm(10,miao); void keyscan() /键盘扫描 if(s1=0) /按下S1 delay(5); if(s1=0) num1+; while(!s1);/等待释放 if(num1=1) TR0=0; write_com(0x0e); /显示光标,不闪烁 write_com(0x80+0x40+0x0b); /数据指针移动到秒的个位处 write_com(0x0f);/显示光标,闪烁 i

7、f(num1=2) write_com(0x80+0x40+0x08); /数据指针移到到分钟的个位处 if(num1=3) write_com(0x80+0x40+0x05); /数据指针移到到小时的个位处 if(num1=4) num1=0; /清零 write_com(0x0c); /重新显示 TR0=1; /重新启动计时 if(num1!=0) /按下S2则选择时/分/秒加1 if(s2=0) delay(5); if(s2=0) while(!s2); if(num1=1) delay(20); miao+; if(miao=60) miao=0; write_sfm(10,miao

8、); write_com(0x80+0x40+0x0a); if(num1=2) fen+; if(fen=60) fen=0; write_sfm(7,fen); write_com(0x80+0x40+0x07); if(num1=3) shi+; if(shi=24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+0x04); if(num1!=0) if(s3=0) /按下S3则选择时/分/秒 减1 delay(5); if(s3=0) while(!s3); if(num1=1) delay(20); miao-; if(miao=-1)

9、miao=59; write_sfm(10,miao); write_com(0x80+0x40+0x0a); if(num1=2) fen-; if(fen=-1) fen=59; write_sfm(7,fen); write_com(0x80+0x40+0x07); if(num1=3) shi-; if(shi=-1) shi=23; write_sfm(4,shi); write_com(0x80+0x40+0x04); if(num1!=0) if(s4=0) /确定按键 delay(5); if(s4=0) while(!s4); num1=0; /清零 write_com(0x

10、0c); /重新显示 TR0=1; /重新启动计时 void main() init(); while(1) keyscan(); 3.程序调试方法 在Keilc里面先敲入程序,保存成“.c”的文件,在新建一个工程,在工程里面添加保存好的文件,在设置里面的生成“,hex”选项后面打上勾,在编译程序,如果提示有错误就点击错误,程序上就会在错误的地方有一个光标,然后检查修改。4.仿真运行效果实验总结:图和程序都是网上找的。但是程序和实验箱又是不符合的。所以我们要烧进实验箱的程序还得重新调,重新改。有一个问题是个位显示的数字到9之后会显示一些符号,通过治疗查到,那些是LCD1602内部的显示,我们计数的显示只能选择前10个数字,所以在显示各位时,当秒计数应该求余数,显示十位时,应该求除数。另外还有一些小问题就是程序比较复杂,具体实现不太清楚。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1