BASIC单片机在教学中的应用 ——BASICKIT-I型单片机开发学习机

🏠 首页 《无线电》杂志 1996年 🔗 第5期 🔗 第7页 分类:胆机设计与交流大赛 🔗 李子恩 🔗

单片机实验教学是大、中专院校无线电、自动控制、计算机类专业的必修课。目前,由于教学经费不足,大多数学校仍采用早已淘汰的Z80单板机作实验教学该机不仅实用性很差,而且指令系统复杂,一般学生难以掌握。实验课往往是走过场。条件好一点的高校目前采用51/98单板机作实验教学,但由于入门难,真正掌握的学生不多,职业中专、职业高中、中学生就更不用说了。而BASIC单片机开发学习机不仅易学、易用,而且价格低廉,应用于微机原理实验课中,具有独特的优点。作为一种教学工具,该学习机已经成功的应用于深圳实验中学学生的科技制作中。

该系统硬件组成如图1、2、3所示。其控制核心是BASIC单片机,BASIC单片机是力源单片机技术研究所研制的可用BASIC高级语言编程的单片机,它提供8路可独立编程的I/O口。其程序存放在电可擦除存储器串行EEPROM(93LC56/660)中,可在线修改/调试程序,存储器还能存放数据(断电可不丢失)。该单片机具有编程简单直观、体积小、功耗低、成本低等优点,广泛应用于智能控制中。

图1
图1 🔍原图 (1236×566)
图2
图2 🔍原图 (1406×1038)
图3
图3 🔍原图 (840×711)

该单片机目前有两种形式可提供给用户,一种是将EEPROM(93LC56/66)放在片外的PIC58BS芯片;另一种是力源最新推出的(PIC58BS+93LC66)=PS1008芯片。有关详细介绍清查阅《无线电》杂志。

在该系统中,为了减化硬件,省略了+5V的电源电路,且直接使用了BASIC单片机的最小系统PIC58BS——CUM或PS1008——CUM。为了提高运行速度,在实际系统中振荡电路可使用10M的晶体(但在调试/导入程序时需用4M的晶体)。

一、路口红绿交通灯演示

由于BASIC单片机具有灵活的控制I/O口的功能。这一特点对于程控彩灯电路、交通灯电路等非常方便。本例即是利用发光二极管模拟交通灯的电路,如图1所示。R1、G1、Y1分别代表南北方向的红、绿、黄灯。R2、G2、Y2分别代表东西方向的红、绿、黄灯。R3、G4为南北人行红灯、东西人行绿灯,R4、G3为南北人行绿灯、东西人行红灯。

程序清单如下:

dirs=255 ’置I/O为输出态

main:pins=0

pins=%01011000 ’置南北红灯、东西绿灯、

东西人行绿灯亮

pause 2000 ’延时2秒

for b2=0 to 4

pins=%01100100 ’黄灯及东西人行绿灯闪

烁5次

pause 500

pins=0

next

pins=%10000011 ’置南北绿灯、东西红灯、

南北人行绿灯亮

pause2000 ’延时2秒

for b2=0 to 4

pins=%10100100 ’黄灯及南北人行绿灯闪

烁5次

pause 500

pins=0

next

goto main ’从新开始

二、四位LED显示卡

LED是由发光二极管显示数码字段的显示器件。它具有成本低、显示清晰等优点。我们所用的LED为0.5英寸共阴红色数码管。

74HC164为HCMOS工艺的串行输入/并行输出移位寄存器。CLR为清零端当它为低电平时,输出全零;SIA与SIB在内部相“与”,为串行数据输入端;CLK为时钟端。

显示卡电路如图2所示,BASIC单片机通过74HC164控制LED显示四位的数码值SIA(SIB)与P4口连接,CLK分别与P3、P2、P1、P0口连接其输出Q0-Q7分别驱动LED的a、b、c、d、e、f、g、dp段。为避免输出电流过大,在每个数码管的阴级有一分流电阻对地。

通常将控制发光二极管的8位字节数据称为段选码,如要控制数码显示“1”,则将“1”的段选码十六进制数“06”通过74HC164依次送入到Q0-Q7,此时数码管的b、c段被点亮,显示“1”。依次类推,通过串行输出相应的段选码可控制数码显示“0”、“1”、“2”……单片机通过74HC164控制数码管显示的过程如下:

首先将段选码的最高位送入SIA(SIB)端,再送出正脉冲给CLK端;在CLK的上升沿,SIA(SIB)端的数据出现在Q0输出端。然后将第二位数据放在SIA端在CLK的第二个上升沿,SIA端的数据出现在Q0端,而原来Q0端的数据出现在Q1端。依此类推,在第5个脉冲到来后,单片机可将8位数据输出到Q0~Q7端。

单片机可以两种方式控制LED。

1.J1、J3、J5短路,J2、J4、J6断开,则74HC164的所有数据输入端与单片机的P4口连接。而时钟端分别与P0、P1、P2、P3口连接。所以四个数码管的控制是独立的。

2.J2、J4、J6短路,J1、J3、J5断开,则74HC164的所有数据输入端与单片机的P4口连接。而时钟端连在一起与P3口连接。所以四个数码管的控制是串行的。这样,单片机只需两个I/O口就可控制四位数码显示,P0P2口还可作别的用途。但此时单片机一次需发32位数据。

在最低位显示变量b2的值,程序如下。

b3=0 ’b3为时钟端口,此时控制显示最

低位

b2=9 ’显示9

lookup b2($3f,$06,$5b,$4f,$66,$6d,

$7d,$07,$7f,$6f,$77,$7f,$39,$3f,

$79,$71),b0;段选码表格

for b3=0 to 7 ’连续送8次数据

pin4=bit7 ’传送b0的最高位

pulsout b3,1 ’发出移位脉冲

b0=b0*2 ’b0左移一位

next ’继续

三、16个键盘卡

键盘卡电路如图3所示,该应用中利用PIC58BS的POT语句读取不同按键对应的电阻值,通过内部计算确定键号。

为了确保键号的准确性,使用的电阻和电容应选择温度系数小的金属膜电阻和陶瓷电容。为防止相邻键互相干扰,按键对应的阻值最好成等比数列。该应用中利用两个I/O口(P7、P6)读取16个键。

在编写读键程序之前,要先确定每个按键对应的读入值。启动PICBAS软件包,按ALT/P键,在窗口中选择P6。按键盘上的“7”键,出现SCALE=xx,按空格键,锁定该值,出现reading=255左右。依次按下“0”、“1”、…“7”记下读出值x0x1x2x3x4x5x6x7。该值为每一按键对应的值。

为防止电路受外界的影响(分布电容、按键抖动、温度等)。程序采取了容错措施。通过下列算式xi<Yi<xi+1。依次确定Y0、Y1、Y2、Y3、Y4、Y5、Y6、Y7=255Yi为程序中的表格。这样,即使每次读取的值xi不一样。但只要落在某一区间Yi-1<xi<Yi内,读取的键号将不受影响。

下例中SCALE=90,Y0-Y7依次确定为5、8、15、26、45、75、150、255。读键程序如下所示。

loop: lookup b3,(5,8,15,26,45,75,150,255),b4

b5=0 ’b5为键盘指针

if b2<=b4 then b ’依次查寻键号

pot 6,90,b2 ’读P6口的电位值

next

if b2>=2 then a ’有键(键号为0 7)b:

’转键处理

pot 6,90,b2

b5=8 ’P7口键号的偏移量

if b2>0 then b ’有键,等待键释放

pot 7, 90,b2 ’读P7口的电位值

pot 7,90,b2

if b2>=2 then a ’有键(键号为8 15)

If b2>0 then b

’转键处理

b6=b3+b5 ’b6为键号

goto loop ’无键,继续查询

debug b6 ,在PC上显示键号

a:goto loop

for b3=0 to 7

通过LED显示卡和键盘卡配合,可以演示数字钟、计算器等。上述电路与BASIC单片机用户板构成BASICKIT—I型单片机开发学习机。(李子恩)