RET
TABLE:DB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,07FHDB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,07FHDB07FH,0BFH,0DFH,0EFHDB0F7H,0FBH,0FDH,0FEHDB07FH,0BFH,0DFH,0EFHDB0F7H,0FBH,0FDH,0FEHDB00H,0FFH,00H,0FFHDB01HEND
7.C语言源程序
#include
unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00,0xff,0x00,0xff,0x01};
unsignedchari;voiddelay(void){
unsignedcharm,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}
voidmain(void){
while(1){
if(table[i]!=0x01){
P1=table[i];i++;delay();}
else{i=0;}}}
6.报警产生器
1.实验任务
用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。2.电路原理图
图4.6.1
3.系统板上硬件连线
(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”
区域中的SPKIN端口上;(2.在“音频放大模块”区域中的SPKOUT端口上接上一个8欧的或者是
16欧的喇叭;(3.把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开
关”区域中的K1端口上;4.程序设计内容(1.信号产生的方法
500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;
5.程序框图
图4.6.2
6.汇编源程序FLAGBIT00HORG00H
START:JBP1.7,STARTJNBFLAG,NEXTMOVR2,#200DV:CPLP1.0LCALLDELY500LCALLDELY500DJNZR2,DVCPLFLAG
NEXT:MOVR2,#200DV1:CPLP1.0LCALLDELY500DJNZR2,DV1CPLFLAGSJMPSTART
DELY500:MOVR7,#250LOOP:NOPDJNZR7,LOOPRETEND
7.C语言源程序
#include
unsignedcharcount;voiddely500(void){
unsignedchari;for(i=250;i>0;i--){
_nop_();}}
voidmain(void){
while(1){
if(P1_7==0){
for(count=200;count>0;count--){
P1_0=~P1_0;dely500();}
for(count=200;count>0;count--){
P1_0=~P1_0;dely500();dely500();}}}
7.I/O并行口直接驱动LED显示
1.实验任务
如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。2.电路原理图