久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
SN7326按鍵51單片機的檢測
[打印本頁]
作者:
51黑z
時間:
2016-9-2 23:38
標題:
SN7326按鍵51單片機的檢測
測試流程:
1把7326_test_1.c 生成的hex 燒進單片機
2打開串口
這里會收到循環發送的00 00 00 00
3按單片機測試按鍵key1 看配置寄存器是不是10 不是要重新往配置寄存器寫入0x10
4長按7326按鍵 串口接收窗口會收到鍵值
24c02.c
#define device_add_w 0xb0
#define device_add_r 0xb1
#include "24c02.H"
void delay()
{
;;
}
void i2c_init()
{
SDa = 1;
delay();
scl = 1;
delay();
}
void delayms(uint xms)
{
uchar x, y;
for(x = xms; x > 0; x--)
for(y = 110; y > 0; y--);
}
void start() //啟動i2c
{
sda = 1;
scl = 1;
delay(); //延時必須大于4.7us,此約為五微秒
sda = 0; //在scl為高電平時,sda一個下降沿為啟動信號
delay();
}
void stop() //停止i2c
{
sda = 0;
scl = 1;
delay();
sda = 1; //在scl為高電平時,sdasda一個上升沿為停止信號
delay();
}
void ack() //應答信號0
{
uchar i = 0; //等待變量
scl = 1; //在scl為高電平期間等待應答
delay();
while((sda == 1) && i < 250) //若為應答0即退出,從機向主機發送應答信號
i++; //等待一段時間
scl = 0; //應答之后將scl拉低
delay();
}
void nack() //非應答
{
scl = 1; //在scl為高電平期間,由主機向從機發送一個1,非應答信號
delay();
sda = 1;
scl = 0; //應答之后將scl拉低
delay();
}
void send_byte(uchar date) //寫一個字節8位
{
uchar i, temp;
temp = date; //存入要寫入的數據,即要發送到sda上的數據
for(i = 0; i < 8; i++)
{ //發送8位
temp <<= 1; //to CY 將數據的最高位移入到PSW中的CY位中
scl = 0; //只有在scl為低電平時,才允許sda上的數據變化
delay();
sda = CY; //將CY里的數據發送到sda數據線上
delay(); //可以延時
scl = 1; //在scl為高電平時,不允許sda上的數據變化,使數據穩定
delay();
scl = 0; //允許sda數據線的數據變化,等待下一個數據的傳輸
delay();
}
//wait ack:發送完一個字節數據后要主機要等待從機的應答,第九位
scl = 0; //允許sda變化
delay();
sda = 1; //wait:ack,sda拉高等待應答,當sda=0時,表示從機的應答
delay();
}
uchar read_byte() //讀一個字節數據
{
char i, j, k;
scl = 0; //讀之前先允許sda變化
delay(); //等待數據
for(i = 0; i < 8; i++)
{
scl = 1; //不允許sda變化
delay(); //使sda數據穩定后開始讀數據
j = sda; //讀出sda上的數據
k = (k << 1)| j; //將數據通過|運算存入k中
scl = 0; //允許sda變化等待下一位數據的到來
delay();
}
//delay(); //可不用延時
return k; //返回讀出的數據
}
//write:at24c02 在at24c02中的指定地址寫入數據
void write_at24c02(uchar address, uchar date)
{
start(); //啟動i2c
send_byte(device_add_w); //寫入期間地址和寫操作
ack(); //從機應答0
send_byte(address); //寫入寫數據的單元地址
ack(); //ack0
send_byte(date); //在指定地址中寫入數據
ack(); //從機應答0
stop(); //停止i2c
}
//read: at24c02 在at24c02的指定地址中讀出寫入的數據
uchar read_at24c02(address)
{
uchar dat; //用來存儲讀出的數據
start(); //啟動i2c
send_byte(device_add_w); //寫入at24c02器件地址和寫操作
ack(); //從機應答0
send_byte(address); //寫入要讀取AT24C02的數據的單元地址
ack(); //從機應答0
start(); //再次啟動i2c
send_byte(device_add_r); //寫入AT24C02器件地址和讀操作
ack(); //從機應答‘0’
dat = read_byte(); //讀出指定地址中的數據
nack(); //主機發出非應答‘1’
stop(); //停止i2c
return dat; //返回讀出的數據
}
24c02.h
#include
typedef unsigned char uchar;
typedef unsigned int uint;
sbit sda= P1^0;
sbit scl = P1^1;
void delay(void);
void i2c_init(void); //I2C初始化
void delayms(uint xms);
void start(void); //啟動I2C
void stop(void); //停止I2C
void ack(void); //應答
void nack(void); //不應答
void send_byte(uchar d); //寫一個字節
uchar read_byte(void); //讀一個字節,返回數據
void write_at24c02(uchar addr,uchar dd);//寫入指定地址的一個字節 (要寫入的寄存器地址,寫入十六進制數據)
uchar read_at24c02(uchar addr); //讀出指定地址的一個字節 (要讀取的寄存器地址)
創建整理:ly
時間:2016.8.24
功能:用51單片機對7326智能掃描按鍵的測試
文檔組成:24c02.h 24c02.c構成了I2C驅動
7326_test_1.c 為串口測試程序
7326_test_1.c
#include
#include "24C02.H"
unsigned char uart_data;
//測試的兩個按鍵
sbit key1=P3^4;
sbit key2=P3^5;
//發送函數
void SendASC(uchar ASC)
{
TI=0;
SBUF=ASC;
while(!TI);
}
//串口0 中斷函數 這個中斷函數可以不用響應 這個是再向單片機發送數據
void serial_IT() interrupt 4
{
if (RI == 1)//如果是接收中斷
{
RI = 0; //清除接收中斷標志
uart_data = SBUF; //接收數據
SendASC(uart_data);//將接收的數據發送
}
}
//主程序
void main()
{
//串口設置
unsigned n,nn,nnn;
SCON = 0x50; //8位串行口模式1,允許接收,REN=1
TMOD = TMOD | 0x20; //TMOD = 0x20; //定時器1,工作在模式2
TH1 = 0xe6;//波特率為1200bps,晶振頻率為12MHz
TL1 = 0xe6;//波特率為1200bps,晶振頻率為11.059MHz,則加載e8
ES=1; //打開串行口中斷
TR1 = 1; //啟動定時器
EA=1; //打開總中斷
i2c_init(); // I2C的初始化
start(); // I2C開始
while(1){
if(key1==0)
{ delay();//消抖
if(key1==0)
{
write_at24c02(0x08,0x10); //用于向配置寄存器寫值 這個可以參考7326技術文檔
delayms(10);//需等待十毫秒
n=read_at24c02(0x08); //讀取7326設備配置寄存器的值
nn= n;
SendASC(nn);
}
}
//這個是結合自己的51 寫的。
//write_at24c02(0,2);
//delayms(10);
write_at24c02(0x08,0x10);
n=read_at24c02(0x10); //讀緩存器的地址 由7326的文檔結合電路原理圖片可知
nnn= n;
SendASC(nnn);
}
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成年人网站免费
|
天堂素人约啪
|
欧美三级电影在线播放
|
激情av在线
|
久久久影院
|
91在线电影
|
成人福利网
|
久久精品一级
|
久久专区
|
免费 视频 1级
|
亚洲欧美日韩精品久久亚洲区
|
欧美专区日韩
|
亚洲精品乱码8久久久久久日本
|
91久久久www播放日本观看
|
国产精品99精品久久免费
|
日韩精品一区二区三区视频播放
|
亚洲毛片
|
亚洲成年人免费网站
|
日日碰狠狠躁久久躁96avv
|
色婷婷一区二区三区四区
|
奇米影视77
|
日韩亚洲欧美一区
|
一区二区不卡
|
91视频免费
|
欧美最猛黑人
|
2021狠狠天天天
|
欧美久久久久久
|
亚洲欧洲一区
|
日韩精品1区2区
|
性色视频在线观看
|
亚欧午夜
|
久久高清国产
|
欧美精品一区二区三区在线
|
国产精品免费视频一区
|
亚洲综合国产
|
男人的天堂久久
|
中文在线一区二区
|
天天躁日日躁狠狠躁白人
|
免费久久99精品国产婷婷六月
|
国产精品国产自产拍高清
|
欧美大片一区二区
|