哈工大单片机实验代码张毅刚版教材10个Word格式文档下载.docx
- 文档编号:17252183
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:19
- 大小:16.77KB
哈工大单片机实验代码张毅刚版教材10个Word格式文档下载.docx
《哈工大单片机实验代码张毅刚版教材10个Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《哈工大单片机实验代码张毅刚版教材10个Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
EA=1;
EX0=1;
IT0=0;
P1=0x00;
init_tx();
delay(200);
P1=~P1;
voidtx0()interrupt0
P1=0xfe;
while(!
INT0)
P1=_crol_(P1,1);
P1=0xff;
3、定时器
unsignedchart=20;
sbitbutton=P3^2;
sbityellowled=P1^0;
/*定义接口
*/
TMOD=0x01;
/*选择中断方式
ET0=1;
TH0=0x3c;
TL0=0x0b;
while(button==0)
TR0=1;
yellowled=1;
voidtx()interrupt1
TL0=0xb0;
t--;
if(t==0)
yellowled=~yellowled;
t=20;
4、双机串行通信
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineoutkP1
#defineout1P0
#defineout2P2
ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
ucharkey,send,rec;
ucharscan(void);
voiddelay(unit);
voidmain(void)
TMOD=0X20;
TH1=0XF2;
/*设置定时器T1为方式
/*给定时器T1赋初值*/
2*/
TR1=1;
/*接通定时器
T1*/
SCON=0X50;
/*串行口方式
1,REN=1
允许接收
PCON=0X00;
/*SMOD=0*/
ES=1;
EX1=1;
outk=0x07;
out1=seg[send];
out2=seg[rec];
ucharscan(void)
uchark=10,m,n,in;
delay(10);
if((outk&
0x07)!
=0x07)
for(m=0;
m<
3;
m++)
outk=~(0x01<
<
(m+3));
for(n=0;
n<
n++)
in=outk;
in=in>
>
n;
if((in&
0x01)==0)
k=n+m*3;
break;
if(k!
=10)break;
return(k);
voiddelay(uintj)
uchari;
for(;
j>
0;
j--)
i=250;
while(--i);
i=249;
voidext0()interrupt0
EX0=0;
key=scan();
if(key!
=10)send=key+1;
voidext1()interrupt2
ES=0;
SBUF=send;
TI);
TI=0;
voidcom()interrupt4
RI=0;
rec=SBUF;
5、单片机与PC串行通信
#include<
voidsend(unsignedchardat)
SBUF=dat;
while(TI==0);
;
voiddelay(void)
unsignedcharm,n;
250;
TMOD=0x20;
SCON=0x40;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
while
(1);
unsignedchari=0;
send(0x01);
i++;
6、扩展82c55并行IO接口
absacc.h>
sbitrst_8255=P3^5;
#definecon_8255XBYTE[0x7003]
#definepa_8255XBYTE[0x7000]
#definepb_8255XBYTE[0x7001]
voidreset_8255(void);
voiddelay(uint);
/*0x7003为82C55的控制寄存器地址
/*以下定义pa、pb的端口地址*/
uchartemp;
rst_8255=1;
delay
(1);
rst_8255=0;
con_8255=0x82;
/*复位*/
temp=pb_8255;
pa_8255=temp;
/*锁存*/
/*延时函数
7、矩阵键盘
unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
voiddelay()
(延时)
=25;
unsignedcharkey_scan()
unsignedcharkey0,key1;
unsignedcharkey_num=0;
P1=0x0f;
先将p1.0~P1.3置高
key0=P1;
if(key0!
=0x0f)如果P1.4~P1.7不全为1,可能有键按下
=0x0f)
P1=0xf0;
key1=P1;
if(key0==0x0e)
switch(key1)
case0xe0:
key_num=0;
case0xd0:
key_num=1;
case0xb0:
key_num=2;
case0x70:
key_num=3;
default:
elseif(key0==0x0d)
key_num=4;
key_num=5;
(处理5号键)
key_num=6;
key_num=7;
(无效按键,如多个键同时按下)
elseif(key0==0x0b)
key_num=8;
key_num=9;
key_num=10;
key_num=11;
elseif(key0==0x07)
key_num=12;
key_num=13;
key_num=14;
key_num=15;
returnkey_num;
unsignedcharkey_num;
do{
key_num=key_scan();
P2=table[key_num];
}while
(1);
8、1602液晶显示
#defineoutP0
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
voidlcd_initial(void);
voidcheck_busy(void);
voidwrite_command(ucharcom);
voidwrite_data(uchardat);
voidstring(ucharad,uchar*s);
voidlcd_test(void);
lcd_initial();
string(0x82,"
HelloWelcome"
);
string(0xC2,"
ToChina"
delay(100);
write_command(0x01);
uchari=250;
voidcheck_busy(void)
uchardt;
do
dt=0xff;
E=0;
RS=0;
RW=1;
E=1;
dt=out;
}while(dt&
0x80);
voidwrite_command(ucharcom)
check_busy();
RW=0;
out=com;
_nop_();
voidwrite_data(uchardat)
RS=1;
out=dat;
voidlcd_initial(void)
write_command(0x3c);
write_command(0x0C);
write_command(0x14);
voidstring(ucharad,uchar*s)
write_command(ad);
while(*s>
0)
write_data(*s++);
9、DA转换
#defineoutP1
sbitDAC_cs=P2^0;
sbitDAC_wr=P2^1;
uchartemp,i=255;
out=temp;
DAC_cs=0;
DAC_wr=0;
/*片选端,芯片被选中
/*选通,并被锁存*/
DAC_cs=1;
/*以下开始转换
DAC_wr=1;
temp++;
/*延时函数!
,老师帮改的
10、AD转换
#defineLEDP0
sbitstart=P2^1;
sbitOE=P2^7;
sbitEOC=P2^3;
sbitCLOCK=P2^0;
sbitadd_a=P2^4;
sbitadd_b=P2^5;
sbitadd_c=P2^6;
add_a=0;
add_b=0;
add_c=0;
start=0;
start=1;
CLOCK=!
CLOCK;
if(EOC==1)
OE=1;
temp=out;
OE=0;
LED=temp;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 单片机 实验 代码 张毅刚版 教材 10