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

上传人:b****4 文档编号:8300026 上传时间:2023-05-10 格式:DOCX 页数:46 大小:981.98KB
下载 相关 举报
电信单片机实验指导Word格式文档下载.docx_第1页
第1页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第2页
第2页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第3页
第3页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第4页
第4页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第5页
第5页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第6页
第6页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第7页
第7页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第8页
第8页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第9页
第9页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第10页
第10页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第11页
第11页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第12页
第12页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第13页
第13页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第14页
第14页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第15页
第15页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第16页
第16页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第17页
第17页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第18页
第18页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第19页
第19页 / 共46页
电信单片机实验指导Word格式文档下载.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《电信单片机实验指导Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《电信单片机实验指导Word格式文档下载.docx(46页珍藏版)》请在冰点文库上搜索。

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

(2)观察实验现象.

5、实验报告(可附页)

一、根据内容绘出程序流程图,写出实验程序。

调试程序,观察结果。

#include<

reg52.h>

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

voidDelay(uintx)

{

uchart;

while(x--)

{

for(t=1200;

t>

0;

t--);

}

}

voidmain()

uchari;

P0=0xFE;

while

(1)

for(i=7;

i>

i--)

P0=_crol_(P0,1);

Delay(1000);

P0=_cror_(P0,1);

二、实验现象

如图七个二极管先从左到右依次亮、再从右到左依次亮,就这样依次循环。

三、实验调试过程中所遇到的问题、解决问题的思路和解决的方法。

在用keil编写程序时会出现一系列的问题,比如:

建立工程时的问题、编程问题等,

编程序时出现的问题可以根据老师所给的文件中自己慢慢的去摸索,直至问题得到解决,实在不行再去问同学或老师;

还有就是在焊接八个二极管时要注意其连接情况,并要认真的按电路图焊接电路,把程序下载到单片机上时,要按照原理图进行连接。

四、实验后的经验教训总结。

学习单片机要有一定的基础:

电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;

编程语言要求汇编语言或C语言。

不管做什么事,计划是很重要的。

没有一个完好的计划,做事情就会没有一个好的顺序,做事情会比较乱,很难成功。

而有一个好的计划,不管做什么事都会事半功倍,做事心中有数,明确重点和缓急,不会有疏漏。

这样才能提高成功率。

此次试验也让我对单片机的部分接口有了一定的了解,以及对编程和c语言又有了进一步的了解。

实验报告成绩教师签名年月日

实验名称按键识别与显示指导教师翁志远

2.掌握独立键盘的检测原理

单片机最小系统、直流稳压电源、万用表。

(1)编写矩阵键盘扫面程序,对矩阵键盘进行识别.

(2)将按下去按键对应的十六进制数显示在某一位数码管上.

/*******CH452常用命令码*************/

#defineCH452_NOP0x0000//空操作

#defineCH452_RESET0x0201//复位

#defineCH452_LEVEL0x0100//加载光柱值,需另加7位数据

#defineCH452_CLR_BIT0x0180//段位清0,需另加6位数据

#defineCH452_SET_BIT0x01C0//段位置1,需另加6位数据

#defineCH452_SLEEP0x0202//进入睡眠状态

#defineCH452_LEFTMOV0x0300//设置移动方式-左移

#defineCH452_LEFTCYC0x0301//设置移动方式-左循环

#defineCH452_RIGHTMOV0x0302//设置移动方式-右移

#defineCH452_RIGHTCYC0x0303//设置移动方式-右循环

#defineCH452_SELF_BCD0x0380//自定义BCD码,需另加7位数据

#defineCH452_SYSOFF0x0400//关闭显示、关闭键盘

#defineCH452_SYSON10x0401//开启显示

#defineCH452_SYSON20x0403//开启显示、键盘

#defineCH452_SYSON2W0x0423//开启显示、键盘,真正2线接口

#defineCH452_NO_BCD0x0500//设置默认显示方式,可另加3位扫描极限

#defineCH452_BCD0x0580//设置BCD译码方式,4位扫描占空比(默认0为16/16)

#defineCH452_TWINKLE0x0600//设置闪烁控制,需另加8位数据

#defineCH452_GET_KEY0x0700//获取按键,返回按键代码

#defineCH452_DIG00x0800//数码管位0显示,需另加8位数据

#defineCH452_DIG10x0900//数码管位1显示,需另加8位数据

#defineCH452_DIG20x0a00//数码管位2显示,需另加8位数据

#defineCH452_DIG30x0b00//数码管位3显示,需另加8位数据

#defineCH452_DIG40x0c00//数码管位4显示,需另加8位数据

#defineCH452_DIG50x0d00//数码管位5显示,需另加8位数据

#defineCH452_DIG60x0e00//数码管位6显示,需另加8位数据

#defineCH452_DIG70x0f00//数码管位7显示,需另加8位数据

/*******CH452在BCD译码方式下的特殊字符**********/

#defineCH452_BCD_SPACE0x10

#defineCH452_BCD_PLUS0x11

#defineCH452_BCD_MINUS0x12

#defineCH452_BCD_EQU0x13

#defineCH452_BCD_LEFT0x14

#defineCH452_BCD_RIGHT0x15

#defineCH452_BCD_UNDER0x16

#defineCH452_BCD_CH_H0x17

#defineCH452_BCD_CH_L0x18

#defineCH452_BCD_CH_P0x19

#defineCH452_BCD_DOT0x1A

#defineCH452_BCD_SELF0x1E

#defineCH452_BCD_TEST0x88

#defineCH452_BCD_DOT_X0x80

/*******2线接口的CH452定义************/

#defineCH452_I2C_ADDR00x40//CH452的ADDR=0时的地址

#defineCH452_I2C_ADDR10x60//CH452的ADDR=1时的地址,默认值

#defineCH452_I2C_MASK0x3E//CH452的2线接口高字节命令掩码

#defineDELAY_IO{_nop_();

_nop_();

}//IO操作需延时,STC单片机12MHz下2个即可

/*******此程序作为头文件时CH452对外子程序声明************/

//externunsignedcharCH452_Read_Key(0);

//从CH452读取按键代码

//externvoidCH452_Write(unsignedshortcmd);

//向CH452发出操作命令、显示等

/**************************************

CH452与单片机的端口连接;

CH452_ADDR=1,即地址选择脚接Vcc;

CH452的H3L2引脚接VCC,使用2线接口模式;

CH452_INT接单片机P3.3(INT1)方便使用中断获取按键值

//**************************************/

sbitCH452_SCL=P1^7;

sbitCH452_SDA=P1^6;

sbitCH452_INT=P3^2;

unsignedcharvolatilekey;

//定义一个按键值变量

/******************************

函数说明:

模拟I2C启动

******************************/

voidCH452_I2c_Start(void)

CH452_SDA=1;

DELAY_IO;

//发送起始条件的数据信号

CH452_SCL=1;

DELAY_IO;

CH452_SDA=0;

//发送起始信号

CH452_SCL=0;

//钳住I2C总线,准备发送或接收数据

模拟I2C结束

voidCH452_I2c_Stop(void)

//发送I2C总线结束信号

模拟I2C写一个字节数据

入口参数:

dat=要写入的数据或者命令

voidCH452_I2c_WrByte(unsignedchardat)

unsignedchari;

for(i=0;

i!

=8;

i++)//输出8位数据

if(dat&

0x80){CH452_SDA=1;

else{CH452_SDA=0;

CH452_SCL=1;

dat<

<

=1;

CH452_SCL=0;

//接收应答

模拟I2C读取一个字节数据

出口参数:

dat=要读取的数据,一般为按键值

unsignedcharCH452_I2c_RdByte(void)

unsignedchardat;

dat=0;

i++)//输入8位数据

if(CH452_SDA)dat++;

//输入1位

//发出无效应答

returndat;

模拟I2C写入指令

cmd=要写入的指令代码

voidCH452_Write(unsignedintcmd)

CH452_I2c_Start();

//启动总线

CH452_I2c_WrByte((unsignedchar)(cmd>

>

7)&

CH452_I2C_MASK|CH452_I2C_ADDR1);

CH452_I2c_WrByte((unsignedchar)cmd);

//发送数据

CH452_I2c_Stop();

//结束总线

模拟I2C读取CH452按键值

read_cmd=读取指令代码

按键值0x00~0x3F

unsignedcharCH452_Read(unsignedintread_cmd)

unsignedchartemp;

CH452_I2c_Start();

//启动总线

CH452_I2c_WrByte((unsignedchar)(read_cmd>

CH452_I2C_MASK|CH452_I2C_ADDR1|0x01);

temp=CH452_I2c_RdByte();

//读取数据

CH452_I2c_Stop();

returntemp;

读取CH452按键值

mode=1返回按键ASCII码,mode=0返回十六进制数

按键值,ASCII码或者十六进制数

unsignedcharCH452_Read_Key(unsignedcharmode)//返回按键值

unsignedcharkey_temp,key_temp2;

key_temp=CH452_Read(CH452_GET_KEY);

switch(key_temp&

0x3F)

//此处代码按矩阵4*4薄膜键盘测试而来,也可根据注释对照键盘写相应的按键代码

case0x00:

key_temp='

D'

;

key_temp2=0x0d;

break;

//DIG0+SEG0=K1

case0x01:

#'

key_temp2=0x0f;

//DIG0+SEG1=K2

case0x02:

0'

key_temp2=0x00;

//DIG0+SEG2=K3

case0x03:

*'

key_temp2=0x0e;

//DIG0+SEG3=K4

case0x08:

C'

key_temp2=0x0c;

//DIG1+SEG0=K5

case0x09:

9'

key_temp2=0x09;

//DIG1+SEG1=K6

case0x0a:

8'

key_temp2=0x08;

//DIG1+SEG2=K7

case0x0b:

7'

key_temp2=0x07;

//DIG1+SEG3=K8

case0x10:

B'

key_temp2=0x0b;

//DIG2+SEG0=K9

case0x11:

6'

key_temp2=0x06;

//DIG2+SEG1=K10

case0x12:

5'

key_temp2=0x05;

//DIG2+SEG2=K11

case0x13:

4'

key_temp2=0x04;

//DIG2+SEG3=K12

case0x18:

A'

key_temp2=0x0a;

//DIG3+SEG0=K13

case0x19:

3'

key_temp2=0x03;

//DIG3+SEG1=K14

case0x1a:

2'

key_temp2=0x02;

//DIG3+SEG2=K15

case0x1b:

1'

key_temp2=0x01;

//DIG3+SEG3=K16

if(mode)return(key_temp);

//返回Hex值,0~F

elsereturn(key_temp2);

//返回ASCII码,供液晶显示等使用

主程序2012.9.25

voidmain(void)

EX0=1;

EA=1;

//开启外部中断1的中断允许,开启全局中断允许

CH452_Write(CH452_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.,9.

CH452_Write(CH452_DIG4|6);

CH452_Write(CH452_DIG5|7);

CH452_Write(CH452_DIG6|8);

CH452_Write(CH452_DIG7|9);

while

(1)//{;

}//等待CH452产生按键中断

//voidINT1_ISR(void)interrupt2//外部中断1的中断服务程序

key=CH452_Read_Key(0);

//读按键值,0为返回十六进制数

//CH452_Write(CH452_LEFTMOV);

//显示数据左移1位

CH452_Write(CH452_DIG0|key);

//显示按键值

}}

2、实验现象

如图,数码管上显示的是键盘上的按键值,按下一个键,数码管的第一位会显示此键的数值;

在按下另一个键时,第一位会显示此键的值,而上一次的值会左移一位,此后的按键与此相同。

在编程过程中会出现此文件编译不了,以及数码管不能显示出数据;

解决办法是:

先对着原理图的接口把程序中错的接口定义给改过来,然后再仔细检查程序是否还有其他错误,之后再下载到单片机上进行调试,先试试每个按键是否对应其所对的数据,若不是则对着程序进行改。

此次试验让我掌握了独立键盘检测的原理,并且知道了做事要多动脑,选出最好的方法。

一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法,试验过程中需要不断的调试,不断的改动,让我受益颇深。

实验名称00-99计数器指导教师翁志远

1.学习STC12C5A60S2内部定时计数器的使用和编程方法

2.进一步掌握中断处理程序的编写方法

51单片机有两个16位内部定时器/计数器(T/C,Timer/Counter)。

若是计数内部晶振驱动时钟,则是定时器;

若是计数8051的输入引脚的脉冲信号,则它是计数器。

定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。

由于脉冲周期固定由计数值可以计算出时间,有定时功能。

定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

(1)用数码管动态显示,实现00-99秒计数器。

(2)调试程序并观察实验现象

#include<

reg51.h>

#include"

intrins.h"

#defineCH452

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 生物学

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

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