实验六综合实验.pptVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验六综合实验.ppt

* * 实验六、单片机综合应用设计实验 一、实验目的: 1.提高单片机的综合应用能力; 2.初步掌握软硬件设计能力; 3. 掌握单片机定时器、中断、键盘扫描、动态显示及数值计算的综合运用能力; 4.制作一只简易的16键计算器。 二、实验仪器: 1、C51实验开发板 1块 2、直流稳压电源 1台 3、仿真器(EASYPROBE) 1只 4、PC机 1台 F 清零 Yes 0123456789 ABCDE +-*/= Yes No 初始化 键盘行线全部低电平 键盘缓冲区满? 读键码值 清空缓冲区 first=1 转化为二进制 用上次运算符运算 转化为十进制 更新运算符 First? 显示目数保存至另一目数再清零 first=0 first=1 运算符清空 两目数清零 移入显示目数 No 三、实验原理: 三、实验内容: 1.综合实验: 实现下图的简易16键4位十进制整数计算器的功能。要求: (1)定时显示 开辟一显示缓冲区,显示中断程序定时读取缓冲区显示各灯位,每灯位显示2.5ms,显示4只灯需要10ms,也就是显示的刷新频率是100Hz,亮度为25%。这样既保证亮度又不闪烁,同时CPU还有足够时间做其他事情。 (2)键盘中断扫描 利用键盘中断扫描程序,读出按键的键码,存入键盘缓冲区,供主程序读区。 (3)计算器的主程序读取键盘缓冲区的键码,驱动计算器的运行,计算器的运行过程要清晰明了; (4)计算中需要十进制与十六进制(或二进制)转化。 参考程序: #define LED_seg XBYTE[0x6000] //段码地址 #define LED_light XBYTE[0x8000] //灯位地址 #include reg51.h #include absacc.h unsigned char read_key(unsigned char); unsigned char display(unsigned char,unsigned char); void delay(unsigned int); unsigned char light[4]={0xfe,0xfd,0xfb,0xf7}; //扫描值 灯位码 unsigned char seg[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //段码 unsigned char disp_buffer[5]={1,0,0,0,0}; //当前灯位、 显示区 unsigned char key_buffer[2]={0,0xff}; //缓冲区满标志、键码 void main( ) { unsigned char temp[5]; unsigned char i; unsigned char operator=0; unsigned int tempa,tempb; bit first=1; TMOD=0x01; //置T0为方式1 TL0=0x0; //延时2.5mS的定时器初始值 TH0=0xf7; PT0=1; TR0=1; ET0=1; IT1=0; // EX1=1; // PX1=1; // EA=1; //开中断 while(1) { P1=0xf0; //扫描 if (key_buffer[0]) { switch(key_buffer[1]) //缓冲区满 { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if (first) for(i=1;i=4;i++) { temp[i]=disp_buffer[

文档评论(0)

docindoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档