乐乐天 发表于 2004-11-1 23:43:52

AT89C51實驗室測試方法

AT89C51单片机实验开发板套件元件清单:专门设计的全工艺电路板一块电源部分元件:1. 9伏左右直流插头式小电源,带插头(空载12伏)2. 电源插座一个3. 7805稳压芯片一个4. 470UF/16V电源滤波电容两个5. 0.1UF独石电容两个6. 电源指示绿色LED一个7. LED限流电阻560欧姆电阻一个单片机必须部分的元件:1. AT89C51单片机芯片一片2. 40脚零拔插力ZIF插座一个3. 复位用电容22UF/16V电容一个4. 复位用电阻1K一个5. 30P小电容2个6. 12M晶振一个实验部分元件:1. 8个小红色长方形LED2. 8位1K数码管限流排阻3. 1个共阴两位一体化的数码管一个4. 一个5伏电磁型蜂鸣器5. 1个8550驱动三极管(e/b/c)6. 3个1K三极管基极驱动电阻7. 微型轻触开关4个8. 4位的红色拨码开关一个9. 2个12伏JQC-3F继电器(一组常开转常闭)10.2个IN4148防反峰二极管11. 2个8050驱动三极管(e/b/c)12. 2个继电器状态指示红色发光二极管1. 原装进口MAX232芯片一片2. 5.1K上拉电阻两个3. 10UF电容4个4. 塑封一体化红外线接收头一个5. AT24C02存储器芯片一片6. 220UF滤波电容一个7. 0.1UF电容一个8. 32个按键的红外遥控手柄一个9. 串口通讯电缆一根10. DS18B20的4.7K上拉电阻一个<IMG SRC=../leadbbsfile/fileType/jpg.gif border=0 alt=按此在新窗口浏览图片 onclick="javascript:window.open(this.src);" onLoad="javascript:if(this.width>570)this.width=570;" onMouseover="javascript:if(this.width>570)this.width=570;" style="cursor:hand" align=absmiddle>此主题相关图片<IMG SRC=../leadbbsfile/upload/2004/11/01/154324.jpg border=0 alt=按此在新窗口浏览图片 onclick="javascript:window.open(this.src);" onLoad="javascript:if(this.width>570)this.width=570;" onMouseover="javascript:if(this.width>570)this.width=570;" style="cursor:hand" align=absmiddle> 测试程序主要是用来测试试验板的单片机和相关外围元件的好坏,如果这个程序能够顺利运行,说明实验板的各方面都很正常。 这个测试程序的功能是:接通电源后P0口的八个发光二极管依次从下往上点亮,然后蜂鸣器鸣叫一声,两个继电器轮流动作一次,数码管的个位显示8,再换成十位显示8,然后不断循环,如果这时按下红外遥控器的按键时,蜂鸣器立即发出“滴滴滴”的提示音,同时将这个按键的键值通过串口在电脑屏幕上显示出来(需要运行串口调试软件)通过这个程序可以判断单片机实验开发板的各个部分的硬件和软件都是完好的,具体的源程序如下:ORG 0000H AJMP MAIN;转入主程序ORG 0003H;外部中断P3.2脚INT0入口地址 AJMP INT;转入外部中断服务子程序(红外遥控解码程序);以下为主程序进行CPU中断方式设置MAIN:LCALL YS3;等待硬件上电稳定SETB EA;打开CPU总中断请求SETB IT0;设定INT0的触发方式为脉冲负边沿触发SETB EX0;打开INT0中断请求MOV SCON,#50H;设置成串口1方式MOV TMOD,#20H;波特率发生器T1工作在模式2上MOV PCON,#80H;波特率翻倍为2400x2=4800BPSMOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)SETB TR1;启动定时器T1;以上完成串口通讯初始化设置START:MOV P1,#01111111B LCALL DELAY MOV P1,#10111111B LCALL DELAY MOV P1,#11011111B LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B;P1口的LED循环由下往上点亮一次,延时约250毫秒 LCALL DELAY MOV P2,#11011111B;蜂鸣器鸣响一声LCALL DELAY MOV P2,#11101111B;继电器J1吸合一次LCALL DELAY MOV P2,#11110111B;继电器J2吸合一次LCALL DELAY MOV P0,#0FFHMOV P2,#01111111B;数码管个位显示8LCALL DELAY MOV P0,#0FFHMOV P2,#10111111B;数码管十位显示8LCALL DELAYAJMP START;反复循环;以下为进入P3.2脚外部中断子程序,也就是解码程序INT: CLR EA;暂时关闭CPU的所有中断请求MOV R6,#10SB: ACALL YS1;调用882微秒延时子程序JB P3.2,EXIT;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序 ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。JNB P3.2, $;等待高电平避开9毫秒低电平引导脉冲ACALL YS2;延时4.74毫秒避开4.5毫秒的结果码MOV R7,#26;忽略前26位系统识别码 JJJJA:JNB P3.2,$;等待地址码第一位的高电平信号LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中JNC UUUA;如果为0就跳转到UUUALCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束UUUA: DJNZ R7,JJJJAMOV R1,#1AH ;设定1AH为起始RAM区MOV R2,#2;接收从1AH到1BH的2个内存,用于存放操作码和操作反码 PP: MOV R3,#8;每组数据为8位 JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时

犁叟 发表于 2004-11-1 23:47:27

re:呵呵,什么时候玩玩Z80?

呵呵,什么时候玩玩Z80?

乐乐天 发表于 2004-11-1 23:53:23

re:上學的時候老師沒有教過。就學過Intel...

上學的時候老師沒有教過。就學過Intel的東西。慚愧,慚愧

犁叟 发表于 2004-11-1 23:55:44

re:呵呵,31的片子你不要说没有玩哦~~~

呵呵,31的片子你不要说没有玩哦~~~

乐乐天 发表于 2004-11-2 00:06:04

re:老玩不好,在跟高頻發射片子結合的時候總是...

老玩不好,在跟高頻發射片子結合的時候總是莫名其妙的燒。到現在還比較困惑。不知道是不是通訊的時候電壓沒掌握好。

犁叟 发表于 2004-11-2 00:38:36

re:哦,和电压关系不大,系统用的是典型工作电...

哦,和电压关系不大,系统用的是典型工作电压~~~~ 有可能是高频回馈信号干扰了芯片某些脚的工作,过了期间的上限截止工作频率,芯片内部也是分功能块的~~~~~ 一些新开发的CPU,内部引线特别细,相对位置近,数据在高频运算是就出错,这是我前段时间看到的硬件分析报告~~~~~还有一个内部“溅射”的问题,低频时,电子被束缚在导线内部传输,当频率高时,电子将从引线中逃逸出来,形成微观的飞溅现象,过细的引线也就因电子的逃逸,内部引线断裂~~~~~~ 相关报道可以查阅早期的计算机硬件方面报告~~~我第一时间是用理解的来写的~~~:)见谅~~~

乐乐天 发表于 2004-11-2 01:35:23

re:通過跟周大俠通電話搞明白了。謝謝周大俠

通過跟周大俠通電話搞明白了。謝謝周大俠

犁叟 发表于 2004-11-2 03:44:30

re:你也太客气了~~~~我有许多问题还要向你...

你也太客气了~~~~我有许多问题还要向你请教的~~~~

xmznt 发表于 2004-11-2 06:13:24

re:乐乐天 请多介绍一下,谢谢!

乐乐天 请多介绍一下,谢谢!

笑云君 发表于 2004-11-17 22:07:39

re:乐乐天 请多介绍一下,谢谢!

想当年学微机原理一头雾水,都不知道怎么过关的。。。。。
页: [1] 2
查看完整版本: AT89C51實驗室測試方法