云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 单片机初学者实验指导书 - 图文

单片机初学者实验指导书 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 1:04:13

void main() {

EA = 1; TH0=0x00;

TL0=0x00; ET0=1;

ET1=1;

TMOD = 0x15;// 打开定时器和计数器

TH1=0x3C; //50ms

TL1=0xB0; TR0 = 1; TR1 = 1; while(1)

{

for(j=0;j<3;j++) //显示个数 {

P0=b[j]; P2=j; delaym(2); }

} }

timer3() interrupt 3 //中断 { TH1=0X3C; TL1=0XB0; i++;

if(i==20) //1s {

kop=TH0;//计数器计入脉冲 kop=kop<<8; kop=kop+TL0;

b[2]=a[kop/100]; b[1]=a[kop0/10]; b[0]=a[kop0]; i=0; TH0=0; TL0=0; } }

实验八:4X4矩阵键盘扫描实验

实验内容:正在撰写中 程序清单一: #include #include unsigned

unsigned char c[8];

unsigned char K,Key,fl,ac=0;

void delay(unsigned char pp) {

while(pp--)

{ unsigned char j; for(j = 0;j<123;j++); }

}

void display()

{ unsigned char i; for(i=0;i<8;i++)

{ P0=c[i]; P2=i; delay(2); }

//为了让8个数码管轮流亮一遍过去

char

b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

//延迟时间等于k*8ms

//j进行的内部循环,1次延迟8us,延迟1ms

}

unsigned char Keycan(void) //按键扫描程序 P1.0--P1.3为行线 P1.4--P1.7为列线 {

unsigned char rcode, ccode;

P1 = 0xF0; // 发全0行扫描码,列线输入 if((P1&0xF0) != 0xF0) // 若有键按下 {

delay(1);// 延时去抖动

if((P1&0xF0) != 0xF0)

{ rcode = 0xFE; // 逐行扫描初值 while((rcode&0x10) != 0)

{

P1 = rcode; // 输出行扫描码 if((P1&0xF0) != 0xF0) // 本行有键按下 {

ccode = (P1&0xF0)|0x0F;

//do{;} while((P1&0xF0) != 0xF0); //等待键释放 return ((~rcode) + (~ccode)); // 返回键编码 } else

rcode = (rcode<<1)|0x01; // 行扫描码左移一位 }

} }

return 0; // 无键按下,返回值为0 }

void KeyDeal(unsigned char Key) { //unsigned char n; if(Key!=0) {

switch(Key) {

case 0x11: K=0; break; case 0x21: K=1; break; case 0x41: K=2; break; case 0x81: K=3; break; case 0x12: K=4; break; case 0x22: K=5; break; case 0x42: K=6; break; case 0x82: K=7; break; case 0x14: K=8; break; case 0x24: K=9; break; case 0x44: K=10; break; case 0x84: K=11; break; case 0x18: K=12; break; case 0x28: K=13; break; case 0x48: K=14; break; case 0x88: K=15; break; default: break; }

c[7]=c[6]; c[6]=c[5]; c[5]=c[4]; c[4]=c[3]; c[3]=c[2]; c[2]=c[1]; c[1]=c[0];

c[0]=b[K];

} }

void main() {

while(1)

{

Key = Keycan();//键盘扫描获取一次按键的编码0x11-0x88 KeyDeal(Key);

display();

//对扫描到的键盘编码进行转换处理,变成数据键盘0-9,11-15

} }

实验清单二:0-9,三种功能键盘

#include #include

unsigned char b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; unsigned char c[8];

unsigned char K,Key,fl=0,ac=0; //fl功能键标志,ac表示数码管显示个数

void delay(unsigned char pp) {

while(pp--) {

unsigned char j; // P2=P2&0XF8; for(j = 0;j<123;j++); } }

void display() { unsigned char i; for(i=0;i

//延迟时间等于k*1ms

//j进行的内部循环,1次延迟8us,延迟1ms

{

P0=c[i]; P2=i; delay(2);

搜索更多关于: 单片机初学者实验指导书 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

void main() { EA = 1; TH0=0x00; TL0=0x00; ET0=1; ET1=1; TMOD = 0x15;// 打开定时器和计数器 TH1=0x3C; //50ms TL1=0xB0; TR0 = 1; TR1 = 1; while(1) { for(j=0;j<3;j++) //显示个数 { P0=b[j]; P2=j; delaym(2); } } } timer3() interrupt 3 //中断 { TH1=0X3C; TL1=0XB0; i++

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com