




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机课程设计报告基于8155的8led显示电子码表设计一、 实验目的 本次课程设计是基于51单片机在理论课程的基础上,通过电路设计、理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作。学习在理论课程的基础上,重点培养动手能力,通过电路设计、理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题。学习proteus软件的mcs51单片机仿真。学习和完成的任务:1. 实验板的原理图结构研究2. 51单片机的编程技术二、 实验设备(1) 计算机一台(2) proteus软件平台(3) medwin软件平台三、 实验内容电子码表类:基于8155的8led显示电子码表设计基本要求: 1 设计秒表功能,精度为0。01秒。2 可同时记录和存储10个秒表数据。(连续记录并显示已存储记录数)3 秒表记录数据查询和清除功能。发挥部分:1 可根据速度误差用d/a转换器输出dc信号。2 可设定速度偏差范围,当超范围时通过蜂鸣器能发出提示音。3 有静音功能 动态显示格式:自定四、实验原理本次课程设计是在理论课程的基础上,目的在于培养我们的动手能力,通过电路设计、理论计算、实际编程、调试、测试、分析查找故障,解决在实际设计中的问题,使设计好的电路能正常工作,并可能结合实际的实验板进行下载测试。在此基础上根据实验大纲的要求,按“51单片机课程设计选题表” 每人一题(随机分配),实现其功能。单片机微型计算机简称单片机,是指在一块芯片体上集成了中央处理器cpu、随机存储器ram、程序存储器rom或eprom、定时器/计数器、中断控制器以及串行和并行i/o接口等部件,构成一个完整的微型计算机。目前,新型单片机内还有a/d及d/a转换器、高速输入/输出部件、dma通道、浮点运算等特殊功能部件。由于它的结构和指令功能都是按工业控制设计要求设计的,特别适用于工业控制及其数据处理场合,因此,确切的称谓是微控制器,单片机只是习惯称呼。(1)单片机的特点1)有优异的性能价值比。2)集成度高、体积小、有很高的可靠性。单片机把各个功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取措施,适合于恶劣环境下工作;也易于产品化。3)控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有及其丰富的转移指令、i/o口逻辑操作及位处理指令。一般来说,单片机的逻辑控制功能及运行速度高于同意档次的微机。4)单片机的系统扩展和系统配置都比较典型、规范,而且非常容易构成各种规模的应用系统。(2)单片机并行i/o接口的扩展单片机与外部交换信息是通过i/o接口电路来实现的。at89c51单片机本身有4个8位的并行i/o口p0-p3,但实际使用时往往再增加些i/o口,以便与外部设备交换数据。at89c51单片机外部ram和扩展i/o接口是统一编址的。用户可以把外部64kb ram空间的一部分作为扩展i/o接口地址空间,每一个i/o接口相当于一个ram存储单元,访问外部ram存储单元就像访问外部i/o接口,即用“movx”指令对扩展i/o接口进行输入输出操作。查询式键盘属于独立式键盘,键盘的各个按键之间彼此是独立的且是最简单的键盘电路。每个键地接入一根数据输入线。如图所示。注意:由于每一个按键均需要一根i/o口线 ,当键盘按键数量比较多时,需要的i/o口线也较多,因此独立式键盘只适合于按键较少的应用场合。一般情况下,按键数等于占用i/o端口数。查询式键盘的结构图如图所示:p1.0p1.1图2-5 查询式键盘的接口电路查询式键盘可以工作在多种方式下,中断方式、程序查询方式、定时查询发送和中断查询方式。在中断模式下,按键的数量受到外部中断源的限制。在有特殊需要的场合,还可以借用内部的定时器中断。所以在这种模式下,按键的数目小于外部中断源和单片机定时器数量之和。程序查询和定时查询类似,都是通过读i/o状态,当有键被按下时相应的i/o口线变为低电平,而未被按下的键对应的i/o口线保持为高电平,这样通过读i/o口状态可判断是否有键按下和哪一个键被按下。1. 键盘定义k1:开始、暂停记时k2:记录数据k3:计数器清零k4:查看存储数据2. 流程图(1) 主流程图开始系统初始化键盘扫描数据转换(2)扫描键盘流程图开始初始化key1按下开始/暂停计时删除数据计数器清零nynyykey2按下tr0= =1记录数据key3按下key4按下查看存储的数据结束nyynn3. 主程序/*基于8155的8led显示电子表设计*/#include#include/*宏定义*/#define uint unsigned int#define uchar unsigned char/*定义8155地址*/#define com8155 xbyte0x7ff8 /8155的命令口#define pa8155 xbyte0x7ff9 /8155的pa#define pb8155 xbyte0x7ffa /8155的pb#define pc8155 xbyte0x7ffb /8155的pc/*定义数码管显示的码值*/uchar code du_code=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /8段共阴极数码管显示码值 uchar dis_buf=0x3f,0x3f,0x40,0x3f,0x3f,0x40,0x3f,0x3f; /数码管显示缓存,格式为mm-nn-ssuchar code bit_code=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /数码管显示的位值/*定义系统变量*/bit flag=0; /计时状态标志位bit flag1=0,flag2=0,flag3=0,flag4=0; /按键状态标志位uchar num,second,minute,hour;/秒表变量uchar count=0,count1=0; /计数器变量uchar num_store10,second_store10,minute_store10; /储存秒表数据变量uchar x; /记录数据计数器/*延时程序*/void delayms(uint z)uint y;for(;z0;z-)for(y=110;y0;y-);/*键盘扫描程序*/void keyscan() uchar m; m=pc8155; m=m&0x0f; if(m!=0x0f) delayms(20);/延时消抖 pb8155=0x0f;m=pc8155;m&=0x0f; if(m!=0x0f)/有键被按下 m=pc8155; m&=0x0f; switch(m) case(0x0e):flag1=1;break; /按键一被按下,其标志位置1 case(0x0d):flag2=1;break; /按键二被按下,其标志位置1 case(0x0b):flag3=1;break; /按键三被按下,其标志位置1 case(0x07):flag4=1;break; /按键四被按下,其标志位置1 while(pc8155!=0x0f);/判断键是否松开 if(flag1=1)/按键一被按下,开始计时或停止计时tr0=tr0; /计时开关取反flag=0;flag1=0;/按键一标志位清零if(flag2=1)/按键二被按下 if(tr0=1)/秒表计时,记录数据 if(x=11) /判断计数器是否超过范围count=1;flag4=0; /按键四标志位清零 void trans_data()if(flag=0) /判断秒表是否处于计时状态if(hour=0&minute59)dis_buf0=du_codeminute/10;dis_buf1=du_codeminute%10;dis_buf3=du_codesecond/10;dis_buf4=du_codesecond%10;dis_buf6=du_codenum/10;dis_buf7=du_codenum%10; /计时小于1小时,数据转换elsedis_buf0=du_codehour/10;dis_buf1=du_codehour%10;dis_buf3=du_codeminute/10;dis_buf4=du_codeminute%10;dis_buf6=du_codesecond/10;dis_buf7=du_codesecond%10; /计时超过1小时,数据转换elsedis_buf0=du_codeminute_storecount-1/10;dis_buf1=du_codeminute_storecount-1%10;dis_buf3=du_codesecond_storecount-1/10;dis_buf4=du_codesecond_storecount-1%10;dis_buf6=du_codenum_storecount-1/10;dis_buf7=du_codenum_storecount-1%10; /对记录数据进行转换/*初始化程序*/void initial()tmod=0x11; /定义定时器的工作方式th0=(65536-10000)/256;tl0=(65536-10000)%256; /给t0装初值th1=(65536-100)/256;tl1=(65536-100)%256; /给t1装初值et0=1; /开t0的中断et1=1; /开t1的中断ea=1; /开总中断tr0=0; /关闭t0tr1=1; /开t0hour=0;minute=0;second=0;num=0; /秒表变量初始化com8155=0x03; /定义8155的工作方式,pa和pb为输出,pc为输入/*主程序*/void main()initial();while(1)keyscan();trans_data();/*t0中断程序*/void timer0() interrupt 1th0=(65536-10000)/256;tl0=(65536-10000)%256; /给t1装初值num+; /0.01秒到,计数器加1if(num=100) /判断1s时间是否到/1s到,num清零 num=0;/计数second+;/秒加1,if(second=60) /判断1分钟是否到second=0;/秒清零minute+;/分钟加1if(minute=60) /判断1小时是否到minute=0;hour+;if(hour=24)hour=0; /*t1中断程序*/void timer1() interrupt 3th1=(65536-100)/256;tl1=(65536-100)%256; /给t1装初值pb8155=bit_codecount1;/显示位值pa8155=dis_bufcount1;/显示码值count1+;/计数器加1if(count1=8)/判断计数器的值是否超过范围count1=0; 五、实验过程及其记录1.实验连接图2.运行3.k1闭合,开始计时,4.k2点击两次记录两次数据,k1暂停计时5.k4查看记录数据6.k1继续计时7k1暂停计时,k3清楚记录数据六、实验小结 本次实验不仅学会了使用proteus,keil软件,并且还对51单片机的编程以及调测也有了更进一步的理解,虽然在开头时遇到了很多困难,但是到了最后,感受收获很大,真的学习到了很
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高端人才招聘与人才派遣合同
- 零售科技智能零售解决方案研发与推广
- 建筑行业工程进度及质量证明书(7篇)
- 世界历史与文化背景模拟题集
- 电力行业设施设备运行安全免责条款合同书
- 高校图书馆与学校信息化合作协议
- 工程经济分析报告撰写试题及答案
- 工地冬季防寒健康教育
- 一年级校园防欺凌教育
- 运营效率提升方案计划
- 锐器盒的正确使用规范
- 合伙经营煤炭协议书
- 医生入职考试试题及答案
- 学校食堂安全风险管控清单
- 安徽省C20教育联盟2025年九年级中考“功夫”卷(一)数学(原卷版+解析版)
- 家校社协同育人促进学生核心素养发展的实践研究范文
- 磷矿反浮选操作规程
- 中华人民共和国医疗器械注册申请表
- 医院胸痛中心应知应会
- 1000道二年级数学口算练习题
- 收到个税手续费返还奖励给办税人员的文件-财税实操
评论
0/150
提交评论