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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电信单片机实验指导Word格式文档下载.docx

1、(2)观察实验现象.5、实验报告(可附页)一、根据内容绘出程序流程图,写出实验程序。调试程序,观察结果。#include intrins.h#define uchar unsigned char#define uint unsigned intvoid Delay(uint x) uchar t; while(x-) for(t=1200;t0;t-); void main() uchar i; P0=0xFE; while(1) for(i=7;ii-)P0=_crol_(P0,1); Delay(1000);P0=_cror_(P0,1);二、实验现象如图七个二极管先从左到右依次亮、再从右

2、到左依次亮,就这样依次循环。三、实验调试过程中所遇到的问题、解决问题的思路和解决的方法。 在用keil编写程序时会出现一系列的问题,比如:建立工程时的问题、编程问题等,编程序时出现的问题可以根据老师所给的文件中自己慢慢的去摸索,直至问题得到解决,实在不行再去问同学或老师;还有就是在焊接八个二极管时要注意其连接情况,并要认真的按电路图焊接电路,把程序下载到单片机上时,要按照原理图进行连接。四、实验后的经验教训总结。 学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。不管做什么事,计划是很重要的。没有一个完好的计划,做事情就

3、会没有一个好的顺序,做事情会比较乱,很难成功。而有一个好的计划,不管做什么事都会事半功倍,做事心中有数,明确重点和缓急,不会有疏漏。这样才能提高成功率。此次试验也让我对单片机的部分接口有了一定的了解,以及对编程和c语言又有了进一步的了解。实验报告成绩 教师签名 年 月 日实验名称 按键识别与显示 指导教师 翁志远 2. 掌握独立键盘的检测原理单片机最小系统、直流稳压电源、万用表。(1)编写矩阵键盘扫面程序,对矩阵键盘进行识别.(2)将按下去按键对应的十六进制数显示在某一位数码管上./*CH452常用命令码*/#define CH452_NOP 0x0000 / 空操作#define CH452

4、_RESET 0x0201 / 复位#define CH452_LEVEL 0x0100 / 加载光柱值,需另加7位数据#define CH452_CLR_BIT 0x0180 / 段位清0,需另加6位数据#define CH452_SET_BIT 0x01C0 / 段位置1,需另加6位数据#define CH452_SLEEP 0x0202 / 进入睡眠状态#define CH452_LEFTMOV 0x0300 / 设置移动方式-左移#define CH452_LEFTCYC 0x0301 / 设置移动方式-左循环#define CH452_RIGHTMOV 0x0302 / 设置移动方式

5、-右移#define CH452_RIGHTCYC 0x0303 / 设置移动方式-右循环 #define CH452_SELF_BCD 0x0380 / 自定义BCD码,需另加7位数据#define CH452_SYSOFF 0x0400 / 关闭显示、关闭键盘#define CH452_SYSON1 0x0401 / 开启显示#define CH452_SYSON2 0x0403 / 开启显示、键盘#define CH452_SYSON2W 0x0423 / 开启显示、键盘, 真正2线接口#define CH452_NO_BCD 0x0500 / 设置默认显示方式,可另加3位扫描极限#de

6、fine CH452_BCD 0x0580 / 设置BCD译码方式,4位扫描占空比(默认0为16/16)#define CH452_TWINKLE 0x0600 / 设置闪烁控制,需另加8位数据#define CH452_GET_KEY 0x0700 / 获取按键,返回按键代码#define CH452_DIG0 0x0800 / 数码管位0显示,需另加8位数据#define CH452_DIG1 0x0900 / 数码管位1显示,需另加8位数据#define CH452_DIG2 0x0a00 / 数码管位2显示,需另加8位数据#define CH452_DIG3 0x0b00 / 数码管位

7、3显示,需另加8位数据#define CH452_DIG4 0x0c00 / 数码管位4显示,需另加8位数据#define CH452_DIG5 0x0d00 / 数码管位5显示,需另加8位数据#define CH452_DIG6 0x0e00 / 数码管位6显示,需另加8位数据#define CH452_DIG7 0x0f00 / 数码管位7显示,需另加8位数据/*CH452在BCD译码方式下的特殊字符*/#define CH452_BCD_SPACE 0x10#define CH452_BCD_PLUS 0x11#define CH452_BCD_MINUS 0x12#define CH4

8、52_BCD_EQU 0x13#define CH452_BCD_LEFT 0x14#define CH452_BCD_RIGHT 0x15#define CH452_BCD_UNDER 0x16#define CH452_BCD_CH_H 0x17#define CH452_BCD_CH_L 0x18#define CH452_BCD_CH_P 0x19#define CH452_BCD_DOT 0x1A#define CH452_BCD_SELF 0x1E#define CH452_BCD_TEST 0x88#define CH452_BCD_DOT_X 0x80/*2线接口的CH452定

9、义*/ #define CH452_I2C_ADDR0 0x40 / CH452的ADDR=0时的地址#define CH452_I2C_ADDR1 0x60 / CH452的ADDR=1时的地址,默认值#define CH452_I2C_MASK 0x3E / CH452的2线接口高字节命令掩码#define DELAY_IO _nop_();_nop_();/IO操作需延时,STC单片机12MHz下2个即可/*此程序作为头文件时CH452对外子程序声明*/ /extern unsigned char CH452_Read_Key(0); / 从CH452读取按键代码/extern void

10、 CH452_Write(unsigned short cmd); / 向CH452发出操作命令、显示等/*CH452与单片机的端口连接;CH452_ADDR = 1,即地址选择脚接Vcc;CH452的H3L2引脚接VCC,使用2线接口模式;CH452_INT接单片机P3.3(INT1)方便使用中断获取按键值/*/sbit CH452_SCL = P17;sbit CH452_SDA = P16;sbit CH452_INT = P32;unsigned char volatile key; /定义一个按键值变量/*函数说明:模拟I2C 启动*/void CH452_I2c_Start( vo

11、id ) CH452_SDA=1; DELAY_IO; /发送起始条件的数据信号 CH452_SCL=1; DELAY_IO; CH452_SDA=0; /发送起始信号 CH452_SCL=0; /钳住I2C总线,准备发送或接收数据模拟I2C 结束void CH452_I2c_Stop( void ) /发送I2C总线结束信号模拟I2C 写一个字节数据入口参数:dat=要写入的数据或者命令void CH452_I2c_WrByte( unsigned char dat ) unsigned char i; for( i = 0; i != 8; i+ ) / 输出8位数据 if( dat&0x

12、80 ) CH452_SDA=1; else CH452_SDA=0; CH452_SCL=1; dat 7)&CH452_I2C_MASK|CH452_I2C_ADDR1); CH452_I2c_WrByte(unsigned char)cmd); /发送数据 CH452_I2c_Stop(); /结束总线模拟I2C读取CH452按键值read_cmd=读取指令代码按键值0x000x3Funsigned char CH452_Read( unsigned int read_cmd ) unsigned char temp; CH452_I2c_Start(); /启动总线 CH452_I2c

13、_WrByte(unsigned char)(read_cmdCH452_I2C_MASK|CH452_I2C_ADDR1|0x01); temp = CH452_I2c_RdByte(); /读取数据 CH452_I2c_Stop(); return temp;读取CH452按键值mode=1返回按键ASCII码,mode=0返回十六进制数按键值,ASCII码或者十六进制数unsigned char CH452_Read_Key(unsigned char mode) /返回按键值 unsigned char key_temp,key_temp2; key_temp=CH452_Read(C

14、H452_GET_KEY); switch(key_temp&0x3F) /此处代码按矩阵4*4薄膜键盘测试而来,也可根据注释对照键盘写相应的按键代码 case 0x00:key_temp =D;key_temp2=0x0d;break;/DIG0+SEG0=K1 case 0x01:#key_temp2=0x0f;/DIG0+SEG1=K2 case 0x02:0key_temp2=0x00;/DIG0+SEG2=K3 case 0x03:*key_temp2=0x0e;/DIG0+SEG3=K4 case 0x08:Ckey_temp2=0x0c;/DIG1+SEG0=K5 case 0x

15、09:9key_temp2=0x09;/DIG1+SEG1=K6 case 0x0a:8key_temp2=0x08;/DIG1+SEG2=K7 case 0x0b:7key_temp2=0x07;/DIG1+SEG3=K8 case 0x10:Bkey_temp2=0x0b;/DIG2+SEG0=K9 case 0x11:6key_temp2=0x06;/DIG2+SEG1=K10 case 0x12:5key_temp2=0x05;/DIG2+SEG2=K11 case 0x13:4key_temp2=0x04;/DIG2+SEG3=K12 case 0x18:Akey_temp2=0x0

16、a;/DIG3+SEG0=K13 case 0x19:3key_temp2=0x03;/DIG3+SEG1=K14 case 0x1a:2key_temp2=0x02;/DIG3+SEG2=K15 case 0x1b:1key_temp2=0x01;/DIG3+SEG3=K16 if(mode) return(key_temp); /返回Hex值,0F else return(key_temp2); /返回ASCII码,供液晶显示等使用主程序 2012.9.25 void main( void ) EX0=1;EA=1; /开启外部中断1的中断允许,开启全局中断允许 CH452_Write(C

17、H452_RESET); /CH452复位命令 CH452_Write(CH452_SYSON2); /开显示键盘 CH452_Write(CH452_BCD|0x00); /BCD直接译码,0x05显示占空比5/16,为0则为16/16 /显示 2,3,4,5 CH452_Write( CH452_DIG0 | 2 ); CH452_Write( CH452_DIG1 | 3 ); CH452_Write( CH452_DIG2 | 4 ); CH452_Write( CH452_DIG3 | 5 ); /将要显示的数字与CH452_BCD_DOT_X或操作,增加小数点显示6.,7.,8.,

18、9. CH452_Write( CH452_DIG4 | 6); CH452_Write( CH452_DIG5 | 7); CH452_Write( CH452_DIG6 | 8); CH452_Write( CH452_DIG7 | 9); while(1)/; /等待CH452产生按键中断/void INT1_ISR(void) interrupt 2 /外部中断1的中断服务程序 key = CH452_Read_Key( 0 ); /读按键值,0为返回十六进制数 /CH452_Write( CH452_LEFTMOV ); /显示数据左移1位 CH452_Write( CH452_DI

19、G0 | key );/显示按键值2、实验现象如图,数码管上显示的是键盘上的按键值,按下一个键,数码管的第一位会显示此键的数值;在按下另一个键时,第一位会显示此键的值,而上一次的值会左移一位,此后的按键与此相同。 在编程过程中会出现此文件编译不了,以及数码管不能显示出数据;解决办法是:先对着原理图的接口把程序中错的接口定义给改过来,然后再仔细检查程序是否还有其他错误,之后再下载到单片机上进行调试,先试试每个按键是否对应其所对的数据,若不是则对着程序进行改。 此次试验让我掌握了独立键盘检测的原理,并且知道了做事要多动脑,选出最好的方法。一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍

20、,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法,试验过程中需要不断的调试,不断的改动,让我受益颇深。实验名称 0099计数器 指导教师 翁志远 1.学习STC12C5A60S2内部定时计数器的使用和编程方法2.进一步掌握中断处理程序的编写方法51单片机有两个16位内部定时器/计数器(T/C,Timer/ Counter)。若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。由于脉冲周期固定由计数值可以计算出时间,有定时功能。定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。(1)用数码管动态显示,实现00-99秒计数器。(2)调试程序并观察实验现象#include#include intrins.h#define CH452

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2