51单片机模拟计算器数字输入及显示_第1页
51单片机模拟计算器数字输入及显示_第2页
51单片机模拟计算器数字输入及显示_第3页
51单片机模拟计算器数字输入及显示_第4页
51单片机模拟计算器数字输入及显示_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、23.模拟计算器数字输入及显示3 / 121 .实验任务<1 ,开机时,显示0"<2.第一次按下时,显示 D1”;第二次按下时,显示 D1D2;第三按下时,显示D1D2D3, 8个全显示完毕,再按下按键下时,给出 嘀“提示音。b5E2RGbCAP2 .电路原理图 1 E *日日日日gnu鼻”口 3电工 SS E £ 目0 §-£MC mJ Irfrs 【w "£ IT* Mwrfi n -HS-£A首>.32巳普由二,eull图4.23.13 .系统板上硬件连线< 1 . 把 单片机系统”区域中的P1

2、.0端口用导线连接到 音频放大模块 区域中的SPK IN端口上;p1EanqFDPw< 2.把单片机系统 区域中的P3.0 P3.7端口用8芯排线连接到4X4亍列式键盘”区域中的C1- C4R卜R4® 口上;DXDiTa9E3d< 3.把单片机系统”区域中的P0.0 P0.7端口用8芯排线连接到 动态数码显示"区域中的A H® 口上;RTCrpUDGiT< 4.把单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到 动态数码显示"区域中的S1- S端口上;5PCzVD7HxA4相关程序设计内容< 1 行列式键盘输入及按键功能

3、设定;< 2 动态数码显示;<3 数码显示方式处理;5汇编源程序<略)6. C语言源程序#include <AT89X51.H>unsigned char codedispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, jLBHrnAILg0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00。unsigned char codedispbitcode=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f。 xHAQX74J0Xunsigned char dis

4、pbuf8=0,16,16,16,16,16,16,16。unsigned char dispbitcount 。unsigned char temp 。unsigned char i,j 。unsigned char key 。unsigned char keypos 。bit alarmflag 。void change(unsigned char *p,unsigned char count>elsewhile(count>0>*(p+count>=*(p+count-1>count-。void main(void>TMOD=0x01。TH0=(655

5、36-4000> / 256 。TL0=(65536-4000> % 256 。TR0=1 。ET0=1 。EA=1 。while(1>P3=0xff 。P3_4=0。temp=P3 。temp=temp & 0x0f 。if (temp!=0x0f>for(i=50 。 i>0 。 i->for(j=200。 j>0 。 j->temp=P3 。temp=P3 。temp=temp & 0x0f 。switch(temp>case 0x0e:key=7。break。case 0x0d:key=8。break。case 0x

6、0b:key=9。break。case 0x07:key=10。break。if (key>=0> && (key<10>>keypos+。if(keypos<8>change(dispbuf,keypos>dispbuf0=keytemp=temp & 0x0fo11 / 12keypos=8alarmflag=1temp=P3 。P1_0=P1_0。temp=temp & 0x0fwhile(temp!=0x0f>temp=P3。temp=temp & 0x0falarmflag=0。P3=0xf

7、f 。P3_5=0。temp=P3 。temp=temp & 0x0f 。if (temp!=0x0f>for(i=50 。 i>0 。 i->for(j=200。 j>0 。 j->temp=P3 。temp=P3 。temp=temp & 0x0f 。switch(temp>case 0x0e:key=4。break。case 0x0d:key=5。break。case 0x0b:key=6。break。case 0x07:key=11。break。if (key>=0> && (key<10>&g

8、t;keypos+。if(keypos<8>change(dispbuf,keypos>dispbuf0=keykeypos=8alarmflag=1temp=P3 。P1_0=P1_0。temp=temp & 0x0fwhile(temp!=0x0f>temp=P3。temp=temp & 0x0falarmflag=0。P3=0xff 。P3_6=0。temp=P3 。temp=temp & 0x0f 。if (temp!=0x0f>for(i=50 。 i>0 。 i->for(j=200。 j>0 。 j->

9、temp=P3 。temp=P3 。temp=temp & 0x0f 。switch(temp>case 0x0e:key=1。break。case 0x0d:key=2。break。case 0x0b:key=3。break。case 0x07:key=12。break。if (key>=0> && (key<10>>keypos+。if(keypos<8>change(dispbuf,keypos>dispbuf0=keykeypos=8alarmflag=1temp=P3 。P1_0=P1_0。temp=tem

10、p & 0x0fwhile(temp!=0x0f>temp=P3。temp=temp & 0x0falarmflag=0。P3=0xff 。P3_7=0。temp=P3 。temp=temp & 0x0f 。if (temp!=0x0f>for(i=50 。 i>0 。 i->for(j=200。 j>0 。 j->temp=P3 。temp=P3 。temp=temp & 0x0fswitch(temp>case 0x0e:key=0。break。case 0x0d:key=13。break。case 0x0b:key

11、=14。break。case 0x07:key=15。break。if (key>=0> && (key<10>>keypos+。if(keypos<8>change(dispbuf,keypos>dispbuf0=keyelsekeypos=8。alarmflag=1。temp=P3 。P1_0=P1_0。temp=temp & 0x0f 。while(temp!=0x0f>temp=P3。temp=temp & 0x0f。alarmflag=0。void t0(void> interrupt 1 using 0TH0=(65536-4000> / 256 。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论