历史上的今天
今天是:2025年04月10日(星期四)
2019年04月10日 | 实验三:MSP430输入输出接口实验(2学时)
2019-04-10 来源:eefocus
1.实验目的
学会对P口的使用。
2.实验要求
利用板上的按键,控制LED显示。
3.实验内容
(1)编写键盘扫描程序。
(2)编写LED闪烁(时间间隔1秒,软件延时)显示程序。
(3)编写用每一个键控制两个LED灯发光的程序,按键可以随时切换。
4.参考资料
#include
#include "Config.h"
#include "1602.c"
uchar key;
//*************************************************************************
// 初始化按键IO口子程序
//*************************************************************************
void KeyPort_init()
{
P1SEL = 0x00; //P1普通IO功能
P1DIR = 0xF0; //P10~P13输入模式,外部电路已接上拉电阻
P6SEL = 0x00; //P6口普通IO功能
P6DIR = 0xFF; //P6口输出模式
}
//**********************************************************************
// 键盘扫描子程序,采用逐键扫描的方式
//**********************************************************************
uchar Key_Scan(void)
{
uchar key_check;
uchar key_checkin;
key_checkin=KeyPort; //读取IO口状态,判断是否有键按下
key_checkin&= 0x0F; //读取IO口状态,判断是否有键按下
if(key_checkin!=0x0F) //IO口值发生变化则表示有键按下
{
delay_ms(20); //键盘消抖,延时20MS
key_checkin=KeyPort;
if(key_checkin!=0x1F)
{
key_check=KeyPort;
switch (key_check & 0x0F)
{
case 0x0E:key=1;break;
case 0x0D:key=2;break;
case 0x0B:key=3;break;
case 0x07:key=4;break;
}
}
}
else
{
key=0xFF;
}
return key;
}
//***********************************************************************
// 键值显示程序
//***********************************************************************
void LCD_DisplayKey(uchar keynum)
{
LCD_write_char(0x0e,1,0x30+keynum);
}
//*************************************************************************
// 主程序
//*************************************************************************
void main(void)
{
WDT_Init(); //看门狗设置
Clock_Init(); //系统时钟设置
Port_init(); //系统初始化,设置IO口属性
delay_ms(100); //延时100ms
LCD_init(); //液晶参数初始化设置
LCD_clear(); //清屏
LCD_Desk();
KeyPort_init(); //按键IO口初始化,设置IO口属性
delay_ms(100); //延时100ms
while(1)
{
Key_Scan(); //键盘扫描,看是否有按键按下
if(key!=0xff) //如果有按键按下,则显示该按键键值1~4
{
{
switch(key)
{
case 1: LED8 = 0xFC;LCD_DisplayKey(1);break; //给不同的键赋键值,键值1,亮2个LED灯
case 2: LED8 = 0xF3;LCD_DisplayKey(2);break; //给不同的键赋键值,键值2,亮2个LED灯
case 3: LED8 = 0xCF;LCD_DisplayKey(3);break; //给不同的键赋键值,键值3,亮2个LED灯
case 4: LED8 = 0x3F;LCD_DisplayKey(4);break; //给不同的键赋键值,键值4,亮2个LED灯
}
}
}
else
{
//LED=key; //没有按键的时候显示上次的键值
}
}
}
史海拾趣
|
最近发现一个很奇怪的问题:在使用DNW烧写系统时,先将xip.nb0烧写进去,然后烧写eboot.nb0.但此时系统会自动重启并且加载的还是之前的xip.nb0 初步分析发现eboot下的BootloaderMain();函数根本就没被执行 如下是异常时和成功时的串口信息: 1. ...… 查看全部问答> |
|
Windows CE.NET的应用为MyApp.exe 1.将MyApp.exe复制到E:\\PROJECTS\\MyWinCE\\RelDir\\CEPC_X86Release目录下; 2.创建快捷方式文件MyApp.lnk(文本文件),文件内容如下: 10#\\Windows\\MyApp.exe MyApp.lnk文件也放入E:\\PROJECTS\\MyWinC ...… 查看全部问答> |
|
在WINCE设备上,用VS2003开发的程序连接数据库出错,请教高手 在WINCE设备上,用VS2003开发的程序连接WINCE数据库出错,请教高手 SqlCeConnection conn = new SqlCeConnection(\"Data Source = Test.sdf\"); conn.open(); open这里提示出错,但在WINCE设备上只能看到错误号为:-2147467259,就是不知道什么错误. ...… 查看全部问答> |
|
I2C通信,设备的地址问题 I2C通信,设备的地址问题 在OV9650的初始化 通过I2C对寄存器进行读写的时候#define CAMERA_I2C_ADDR 0x30#define I2C_SLAVE 0x0703 if(ioctl(fd, I2C_SLAVE, CAMERA_I2C_ADDR)<0) { printf(\"fail ...… 查看全部问答> |
|
replyreload += \',\' + 1311171;(单片机C语言程序设计实验指导书)Timson,如果您要查看本帖隐藏内容请回复… 查看全部问答> |




