51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。电子制作实验室网站的提供的带扩展元件的51单片机实验板上已经装配好了全部硬件。 九针串口Serial (PC 9)
| | 1 | CD | 载波检测 | 2 | RXD | 接收数据 | 3 | TXD | 发送数据 | 4 | DTR | 数据终端准备好 | 5 | GND | 地 | 6 | DSR | 设备准备好 | 7 | RTS | 发送请求 | 8 | CTS | 清除发送 | 9 | RI | 铃声指示 |
为了能够在电脑端看到单片机发出的数据,所以我们还要借助一个电脑串口调试软件,好在网络上已经有了现成的的调试软件,点击这里可以下载这个串口调试软件。 ;这是一个89C51单片机向PC串口单向发送数据AF的程序 ;通过MAX232专用芯片作RS232/TTL电平转换. ;波特率4800KBPS,只要P3.2引脚变成低电平(也就是按下红外遥控器的任意键),就连续发送16进制的AF字符(就是一个8位2进制的数值) ORG 0000H AJMP MAIN;转入主程序 ORG 0003H ;外部中断P3.2脚INT0入口地址 AJMP INT ;转入外部中断服务子程序(解码程序) ;以下为主程序进行CPU中断方式设置 MAIN:SETB EA ;打开CPU总中断请求 SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发 SETB EX0 ;打开INT0中断请求 AJMP $ INT: CLR EA ;暂时关闭CPU的所有中断请求 MOV SCON,#50H;设置成串口1方式 MOV TMOD,#20H;波特率发生器T1工作在模式2上 MOV PCON,#80H;波特率翻倍为2400x2=4800BPS MOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值) MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值) SETB TR1;启动定时器T1 MOV A,#0AFH;将16进制的字符AF发送到串口去 MOV SBUF,A;将遥控器键值通过串口发送出去 SETB EA ;允许中断 RETI ;退出解码子程序 END |