资源简介
51单片机 CH452驱动数码管,按键,按键控制,简单的按键控制程序

代码片段和文件信息
/****************************************************************************** * 标题: SYZX_DZ02单片机最小系统板调试源程序 * * 日期: 2011-07-01 * * 描述: 在数码管上显示‘12345678‘A键按下右端两位显示按键值
B键按下循环显示F键按下蜂鸣器报警.(切换前先复位) * ******************************************************************************/
#include
#include
#include
#define CH452_I2C_ADDR1 0x60
#define CH452_I2C_MASK 0x3E
#define CH452_GET_KEY 0x0700
#define uchar unsigned char
#define uint unsigned int
sbit P15=P1^5;
sfr P1M1=0x91;
sfr P1M0=0x92;
#define CH452_DIG0 0x0800 //数码管位0显示
#define CH452_DIG1 0x0900 //数码管位1显示
#define CH452_DIG2 0x0a00 //数码管位2显示
#define CH452_DIG3 0x0b00 //数码管位3显示
#define CH452_DIG4 0x0c00 //数码管位4显示
#define CH452_DIG5 0x0d00 //数码管位5显示
#define CH452_DIG6 0x0e00 //数码管位6显示
#define CH452_DIG7 0x0f00 //数码管位7显示
sbit CH452_SDA=P1^6;
sbit CH452_SCL=P1^7;
sbit CH452_INT=P3^2;
volatile uchar keycode;
volatile uchar M;
volatile uchar N;
volatile bit flag;
void DELAY_1US()
{
_nop_();
}
void DELAYms(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<124;i++); }
}
void CH452_I2c_Start(void)//芯片启动程序 时序
{
EX0=0;
CH452_SDA=1;
CH452_SCL=1;
DELAY_1US();
CH452_SDA=0;
DELAY_1US();
CH452_SCL=0;
DELAY_1US();
}
void CH452_I2c_Stop(void)
{
CH452_SDA=0;
DELAY_1US();
CH452_SCL=1;
DELAY_1US();
CH452_SDA=1;
DELAY_1US();
DELAY_1US();
EX0=1;
}
void CH452_I2c_WrByte(unsigned char dat) {
uchar i;
for(i=0;i!=8;i++)
{
if(dat&0x80) {CH452_SDA=1;}
else
{CH452_SDA=0;
}
DELAY_1US();
CH452_SCL=1;
dat<<=1;
DELAY_1US();
DELAY_1US();
CH452_SCL=0;
DELAY_1US();
}
CH452_SDA=1;
DELAY_1US();
CH452_SCL=1;
DELAY_1US();
DELAY_1US();
CH452_SCL=0;
DELAY_1US();
}
unsigned char CH452_I2c_RdByte(void)
{
uchar dati;
CH452_SDA=1;
dat=0;
for(i=0;i!=8;i++)
{
CH452_SCL=1;
DELAY_1US();
DELAY_1US();
dat<<=1;
if(CH452_SDA) dat++;
CH452_SCL=0;
DELAY_1US();
DELAY_1US();
}
CH452_SDA=1;
DELAY_1US();
CH452_SCL=1;
DELAY_1US();
DELAY_1US();
CH452_SCL=0;
DELAY_1US();
return(dat);
}
void CH452_Write(unsigned short cmd)
{
CH452_I2c_Start();
CH452_I2c_WrByte((uchar)(cmd>>7)&CH452_I2C_MASK|CH452_I2C_ADDR1);
CH452_I2c_WrByte((uchar)cmd);
CH452_I2c_Stop();
}
unsigned char CH452_Read(void)
{
CH452_I2c_Start();
CH452_I2c_WrByte((uchar)(CH452_GET_KEY>>7)&CH452_I2C_MASK|0x01|CH452_I2C_ADDR1);
keycode=CH452_I2c_RdByte();
CH452_I2c_Stop();
return(keycode);
}
void CH452_bcd(uchar ds_bcd)
{
switch(ds_bcd)
{
case 0x40: M=0x00; break; //按键0被按下
case 0x41: M=0x01; break; //按键1被按下以此类推,主板从下到上,从左到右
case 0x42: M=0x02; break;
case 0x43: M=0x03; break;
case 0x48: M=0x04; break;
case 0x49: M=0x05; break;
case 0x4A: M=0x06; break;
case 0x4B: M=0x07; break;
case 0x50: M=0x08; break;
case 0x51: M=0x09; break;
case 0x52: M=0x0A; break;
case 0x53: M=0x0B; break;
case 0x58: M=0x0C; break;
case 0x59: M=0x0D; break;
case 0x5A: M=0x0E; break;
case 0x5B: M=0x0F; break;
default:return;
}
}
void CH452_inter()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4220 2015-05-17 09:47 实验按键\2.c
文件 8727 2015-05-17 14:42 实验按键\2.LST
文件 13446 2015-05-17 14:42 实验按键\2.OBJ
文件 12203 2015-05-24 13:12 实验按键\anjian
文件 36 2015-05-17 14:40 实验按键\anjian.__i
文件 4275 2015-05-24 13:12 实验按键\anjian.c
文件 1977 2015-05-24 13:12 实验按键\anjian.hex
文件 55 2015-05-24 13:12 实验按键\anjian.lnp
文件 8998 2015-05-17 14:40 实验按键\anjian.LST
文件 16508 2015-05-24 13:12 实验按键\anjian.M51
文件 182 2015-05-29 18:14 实验按键\anjian.plg
文件 56149 2015-05-29 18:15 实验按键\anjian.uvopt
文件 13524 2015-05-15 14:27 实验按键\anjian.uvproj
文件 56153 2015-05-29 15:06 实验按键\anjian_uvopt.bak
文件 0 2015-05-15 13:58 实验按键\anjian_uvproj.bak
文件 6376 2009-05-07 14:37 实验按键\STARTUP.A51
文件 14043 2015-05-17 14:42 实验按键\STARTUP.LST
文件 749 2015-05-17 14:42 实验按键\STARTUP.OBJ
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- STC12C5A60S2 CH4521 驱动数码管 显示
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- imx6q ch452驱动矩阵键盘扫描
- ch452串口键盘驱动程序
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 基于51单片机的交通信号灯程序
评论
共有 条评论