单片机串并口转换实验定稿版

合集下载

实验十一、并串转换

实验十一、并串转换

实验十一、并串转换(cd4014)本程序功能:按F1键,再按3键,进行调用并串转换功能。

存储在外部RAM区,地址为0010H。

同学更改为:同学将此功能加到自己编的上一个程序中。

1、进入并串转换子程序后,关闭外部中断,出来时开中断;2、并串转换变换功能程序——cd4014o。

3、可将转换结果放到数码管中显示。

调试方式:设置断点,调出寄存器窗、外部数据区窗观察结果。

程序文件:cd4014.asm程序:xsdsm equ 30hfwdsm equ 31htxdsm equ 32htxjym equ 33hxsm1 equ 37h ;显示缓冲区xsm2 equ 38h ;xsm3 equ 39h ;xsm4 equ 3ah ;xsm5 equ 3bh ;xsm6 equ 3ch ;xsmm1 equ 3dhxsmm2 equ 3ehxsmm3 equ 3fhxsmm4 equ 40hxsmm5 equ 41hxsmm6 equ 42htxsjm equ 24hjpm equ 25hdqdsm equ 26htxzcbzm equ 27hxsclm equ 43h ;显示处理单元sjzzm equ 44hjpclbzm equ 49hraddlm equ 4chraddhm equ 4dhwdatam equ 4ehxsdsm1 equ 4fhxsjym equ 50hsecm equ 51h ;秒数据minm equ 52h ;分数据hrm equ 53h ;小时数据datem equ 54h ;日数据monthm equ 55h ;月数据weekm equ 56h ;星期数据yearm equ 57h ;年数据低2位kscanfm equ 58hkeyctm equ 59hkeym1 equ 5ahkeym2 equ 5bhkeybm1 equ 5chkeybm2 equ 5dhadsjdzl equ 34hadsjdzh equ 35hdpm equ 23hdp1 bit 18hdp2 bit 19hdp3 bit 1ahdp4 bit 1bhdp5 bit 1chdp6 bit 1dhptt bit 1ehswa bit 1fhorg 0000hljmp startorg 0003hljmp adzdorg 000bhljmp zdt0org 0100hstart:mov sp,#5eh;-------------------------------int0中断初始化、开中断setb it0setb ex0clr ie0;-------------------------------t0 10 ms中断初始化mov tmod,#00100001b; setb pt0mov tl0,#00hmov th0,#0dchsetb tr0setb et0setb ea;--------------------------数码管显示存储单元初始化mov dpm,#0ffhmov xsm1,#00hmov xsm2,#00hmov xsm3,#00hmov xsm4,#00hmov xsm5,#00hmov xsm6,#00hmov r4,#00h;------------------------------acall key0acall display;jk:nopjk4: mov a,kscanfmcjne a,#55h,jkljmp keyprjk3: acall key0ljmp jkkeypr: mov a,keym1cjne a,#0f7h,jk3 ;f1acall key0mov xsmm1,#01hmov xsmm2,#0ffhmov xsmm3,#0ffhmov xsmm4,#0ffhmov xsmm5,#0ffhmov xsmm6,#0ffhmov xsm1,xsmm1mov xsm2,xsmm2mov xsm3,xsmm3mov xsm4,xsmm4mov xsm5,xsmm5mov xsm6,xsmm6lcall displaykeypr9: mov a,kscanfmcjne a,#55h,keypr9mov a,keym2cjne a,#0feh,keypr3acall key0ljmp dsxg ;时钟修改0 keypr3: mov a,keym1cjne a,#7fh,keypr4acall key0ljmp dssxg ;时钟修改1 keypr4: mov a,keym2cjne a,#0f7h,keypr5acall key0ljmp adzh ;ad转换2keypr5: mov a,keym2cjne a,#7fh,keypr6acall key0ljmp cd4014o ;并串转换3keypr6: mov a,keym1cjne a,#0bfh,keypr7acall key0ljmp tx485 ;485通信4keypr7: mov a,keym2cjne a,#0fbh,keypr8acall key0ljmp tx232 ;232通信5keypr8: mov a,keym2cjne a,#0bfh,keypr10acall key0ljmp keyshou ;桉数字健显示健值6 keypr10:mov a,keym1cjne a,#0efh,keypr11 ;是否按下取消健acall key0ljmp jkkeypr11: ljmp keypr;---------------------------------;桉数字健显示健值;-----------------------键盘存储单元初始化key0: mov keybm1,#0ffhmov keybm2,#0ffhmov keym1,#0ffhmov keym2,#0ffhmov kscanfm,#00h ;kscanfm键盘扫描标志单元retdsxg: ljmp jk ;时钟修改0,dssxg: ljmp jk ;时钟修改1;-----------------------------------;a/d转换adzh: mov flag,#00h ;a/d转换路标号mov dpl,flagmov dph,#0e0h ;0e0xxh,a/d转换路地址movx @dptr,aadzh3: mov a,flagcjne a,#08h,adzh3mov adsjdzl,#00hmov adsjdzh,#00hadzh2: ljmp jkadzd: clr ex0push pswpush accpush dplpush dphmov dptr,#0f000hmovx a,@dptrmov dpl,adsjdzl ;adsjdzl模/数转换数据的外部ram存储地址mov dph,adsjdzh ;movx @dptr,ainc dptrmov adsjdzl,dplmov adsjdzh,dphmov a,flaginc amov flag,acjne a,#08h,adzd1ajmp adzd2adzd1: mov flag,amov dpl,flagmov dph,#0e0hmovx @dptr,aSETB EX0adzd2: pop dphpop dplpop accpop pswreti;-----------------------------------;cd4014并串转换cd4014o:lcall cd4014ljmp jk;-----------------------------------;cd4014cLk bit p1.6 ;定义4014的时钟线q8 bit p1.7 ;定义4014的串行输出数据线psc bit p1.5 ;定义并串控制线cd4014: clr eamov r0,#07hclr clksetb pscsetb clkmov c,q8rlc aclr pscrd14lp1:setb clkmov c,q8rlc aclr clkdjnz r0,rd14lp1mov dptr,#0010hnopnopmovx @dptr,asetb earet;-----------------------tx485: ljmp jk ;485通信4 tx232: ljmp jk ;232通信5 keyshou:mov a,kscanfmcjne a,#55h,keyshoumov a,keym1cjne a,#0efh,keyshou0 ;是否按下取消健acall key0ljmp jkkeyshou0:acall cbzc0mov xsm2,r4acall displayacall key0ajmp keyshou;-----------------------------------;10ms中断扫描zdt0:push pswpush accpush dplpush dphclr PSW.4setb PSW.3mov tl0,#00hmov th0,#0dchsetb tr0setb et0zdjp9: acall zdjp1 ;读键值mov a,keyctmjz zdjp90 ;是否健按下jz zdjp91ljmp zdjp6 ;键盘存储单元初始化zdjp91: mov a,kscanfm ;kscanfm键盘扫描标志单元cjne a,#00h,zdjp8 ;kscanfm=00h,无健按下mov kscanfm,#44hmov keybm1,keym1 ;keybm1键盘前次读数存储单元1mov keybm2,keym2 ;keybm2键盘前次读数存储单元2ljmp zddszdjp90: mov a,kscanfm ;kscanfm键盘扫描标志单元cjne a,#0aah,zdjp92 ;kscanfm=aah,健按下mov kscanfm,#55h ;健释放,执行任务,kscanfm=55h;----------------------------------健值翻译mov keym1,keybm1mov keym2,keybm2; acall cbzc0;---------------------------------;桉数字健显示健值; mov xsm2,r4; acall display;--------------------------; acall key0zdjp92: cjne a,#44h,zdjp93ljmp zddszdjp8: cjne a,#44h,zdjp93 ;kscanfm=44h,暂态,健按下去抖动mov a,keym1cjne a,keybm1,zdjp6mov a,keym2cjne a,keybm2,zdjp6mov kscanfm,#0aahzdjp93: ljmp zddszdjp6: mov kscanfm,#00hmov keybm1,#0ffhmov keybm2,#0ffhmov keym1,#0ffhmov keym2,#0ffhzdds: pop dphpop dplpop accpop pswreti;--------------------------读键值zdjp1: mov r0,#08hmov keyctm,#00hmov dpl,#00h ;cs4mov dph,#11000000bmovx a,@dptrmov keym1,a ;keym1键盘读数存储单元1 zdjp3: rlc ajc zdjp2inc keyctm ;键盘计数单元zdjp2: djnz r0,zdjp3mov r0,#08hmov dpl,#00h ;cs5mov dph,#11010000bmovx a,@dptrmov keym2,a ;keym2键盘读数存储单元2 zdjp5: rlc ajc zdjp4inc keyctm ;键盘计数单元zdjp4: djnz r0,zdjp5ret;-----------------------------------;健值翻译cbzc0: mov a,keym1cjne a,#0ffh,dssxg1mov a,keym2cjne a,#0ffh,dssxg2retdssxg1: mov jpm,a ;jpm键盘数值mov dptr,#table1lcall cbzcretdssxg2: mov jpm,a ;jpm键盘数值mov dptr,#table2lcall cbzcret;-----------------------------------查表翻译健值cbzc:cb2: clr amovc a,@a+dptrcjne a,jpm,cb1inc dptrclr amovc a,@a+dptrmov r4,aljmp cb3cb1: inc dptrinc dptrcjne a,#0ffh,cb2mov r4,#0ahcb3: rettable1: db 7fh,01h,0bfh,04h,0dfh,07h,0ffh,0ffh; 1 4 7table2: db 0f7h,02h,0fbh,05h,0fdh,08h,0feh,00h,7fh,03h,0bfh,06h,0dfh,09h,0ffh,0ffh; 2 5 8 0 3 6 9;-----------------------------sz1: mov a,xsm1inc amov xsm1,acjne a,#0ah,sz2mov xsm1,#00hsz2: retdisplay:clr p3.5mov dptr,#8000h ;数码管小数点、通信口转换控制地址;mov a,dpmmovx @dptr,amov dptr,#9000h ;1、2位数码管地址anl xsm1,#0fh ;xsm1、xsm2、xsm3显示缓冲单元,10进制数anl xsm2,#0fhmov xsclm,xsm1 ;xsclm显示处理单元orl xsclm,#0f0hmov a,xsm2swap aorl a,#0fhanl a,xsclmmovx @dptr,amov dptr,#0a000h ;3、4位数码管地址;anl xsm3,#0fhanl xsm4,#0fhmov xsclm,xsm3orl xsclm,#0f0hmov a,xsm4swap aorl a,#0fhanl a,xsclmmovx @dptr,amov dptr,#0b000h ;5、6位数码管地址;anl xsm5,#0fhanl xsm6,#0fhmov xsclm,xsm5orl xsclm,#0f0hmov a,xsm6swap aorl a,#0fhanl a,xsclmmovx @dptr,a; acall sz1ret; ------------------------------------------------------------------------display1: clr p3.5mov dptr,#8000h ;数码管小数点、通信口转换控制地址;mov a,#00hnopnopmovx @dptr,a;1、2位数码管地址mov dptr,#9000h ;mov a,#0ffhnopnopmovx @dptr,amov dptr,#0a000h ;3、4位数码管地址mov a,#0ffhmovx @dptr,amov dptr,#0b000h ;5、6位数码管地址;mov a,#0ffhnopnopmovx @dptr,aretend。

串并转换实验

串并转换实验

实验五串并转换实验一.实验目的了解单片机串口方式0,及移位寄存器 164 的应用。

熟悉89C51单片机LED显示器外部引脚接线方法。

学习基本I/O口的使用方法及编程方法。

进一步掌握单片机全系统调试的过程及方法。

二.实验说明利用单片机的串行接口方式0 扩展并行输入输出口,在LED 上循环显示00~99。

三、实验原理:.LED数码显示原理七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。

LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形, LED显示器工作于静态显示方式时,各位的共阳极连接在一起并接电源,每位的段码线分别与一个8位的锁存器输出相连。

四、实验流程:五.将实验程序打入KEIL软件:然后进行编译连接。

六.实验电路图:七、进行仿真,数码显示管显示00-99:仿真成功。

八.实验源程序:ORG 0000HAJMP MAIN;;******************************************************** ; /*主程序*/ * ;******************************************************** ;ORG 0030HMAIN: MOV SP,#60HMOV R2,#00HMOV R1,#00HMAIN1: MOV A,R1MOV DPTR,#SGTB1MOVC A,@A+DPTRMOV SBUF,AMOV A,SBUFJNB TI,$CLR TIMOV A,R2MOVC A,@A+DPTRMOV SBUF,AJNB TI,$CLR TICALL DELAYCALL DELAYCALL DELAYCJNE R1,#9,MAIN2MOV R1,#00HINC R2CJNE R2,#10,MAIN3AJMP MAINMAIN2: INC R1MAIN3: AJMP MAIN1;;******************************************************** ; /*延时子程序*/ * ;******************************************************** ;DELAY: MOV R6,#250DELAY1: MOV R7,#250DJNZ R7,$DJNZ R6,DELAY1RET;*********************************************************; /*字符编码*/ *;*********************************************************;SGTB1: DB 03H ;0DB 9FH ;1DB 25H ;2DB 0DH ;3DB 99H ;4DB 49H ;5DB 41H ;6DB 1FH ;7DB 01H ;8DB 09H ;9END九.实验总结:通过此次实验,熟悉了LED数码管的显示原理和接线方法。

实验二D/A转换实验

实验二D/A转换实验

&实验二D/A转换实验一、实验目的1. 理解D/A转换芯片0832与单片机接口及编程方法。

2. 了解D/A转换的基本原理。

3. 了解单片机系统中扩展D/A转换的基本方法。

二、实验原理及内容1.实验原理DAC0832内部具有输入寄存器和DAC寄存器两级数据寄存器,它不需要外加其它电路便可以与单片机的数据总线相连。

DAC0832引脚说明如下:D0~D7:8位数据输入。

I out1和I out2:DAC电流输出1和DAC电流输出2,I out1和I out2之和为一常量。

R FB:反馈信号输入端。

DAC0832的输出是电流型的,为了取得电压输出需在电压输出端接运算放大器,R FB即为运算放大器的反馈电阻端。

反馈电阻在片内。

ILE:允许输入锁存信号。

1WR:锁存输入数据的写信号和锁存输入寄存器输出数据的写信号。

WR和2XFER:传送控制信号。

CS:片选信号。

DAC0832输出是电流型的,但实际应用中往往需要电压输出信号,所以电路中采用运算放大器来实现电流转换为电压。

本实验系统上,采用参考电压为5V,所以当数字量输入在00H~FFH范围时电压输出量为0~+5V,这种方式称单极型输出,若电压输出为±5V,则称为双极型输出。

实际应用中需要单极性输出,也需要双极型输出,所以电路应用两片运放LM741来实现两种极性的输出。

实验系统中原理图如图8-2所示。

DAC0832与单片机接口:0832的D0~D7接单片机P0口;DAC0832的片选接单片机的P2.7,为了避免模块之间的冲突,P2.7通过跳线J505与DAC0832相连。

DAC0832的WR信号接单片机的写信号WR,U506和U507是单运放LM741完成电流到电压和正负电压的转换。

单片机对DAC0832控制过程:使能CS 、XFER ,向寄存器中写入需转换数据。

2.实验内容1)将扩展板的电源J501与主板的电源接口J2或J14连接起来;将扩展板的信号接口J500与主板的信号接口J15或J13连接起来;将主板上的拨码开关5、6、7、8拨到ON ;2)在keil 编程环境下编写程序,完成实验功能。

【最新2018】电脑并口怎么转串口-精选word文档 (4页)

【最新2018】电脑并口怎么转串口-精选word文档 (4页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==电脑并口怎么转串口篇一:51单片机串并口转换实验我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。

在单片机开发试板上也是完美运行。

今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能#include<reg52.h>本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。

实验者请按上图连接好实验电路。

#include<reg52.h>#include< intrins.h >#define uchar unsigned char#define uintunsigned int#defineulong unsigned longcode uint a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};sbit SO=P1^0; //定义165的输出sbit STCP=P1^1;sbit DS=P1^2;sbit SHCP=P1^3;sbitSHLD=P1^4;sbit CLK=P1^5;sbit cs573=P1^6;/**************************************************/void delay(ulong X)//延时函数,采用了形参传递函数 {} while(X--);/**************************************************/void LED(); //函数声明/**************************************************/void main()//主函数{while(1) { } LED ();}/****************************************************/void LED(){uint i,j,k;uchar n,m;for(i=0;i<8;i++) {cs573=1;P2=a[i]; //往P2口送流水灯字符,因为有8个流水灯,所以i=8循环八次,LED小灯依次被点亮cs573=0; //把P2口送过来的数据锁存 SHLD=0;//74HC165开始装载数据delay(10); SHLD=1; for(j=0;j<8;j++) //开始八次循环移位 { } n<<=1; delay(10); CLK=0; n|=SO; delay(10); CLK=1;P3=n; m=n; for(k=0;k<8;k++) //74HC595开始转换数据 { SHCP=0;if((m&0x80)==0x80) DS=1; else DS=0; m<<=1; SHCP=1; delay(300); }STCP=0; STCP=1; delay(30000);}}篇二:如何安装并口转USB口驱动的打印机如何安装并口转USB口打印机的驱动目前市面上已经鲜见带并口输出的主板,但是您还想让十年前的并口打印机老兵继续服役,怎么办?没错,加一条并口转USB的转接线就行。

串并行转换实验报告

串并行转换实验报告

一、实验目的1. 理解串行和并行数据传输的基本概念。

2. 掌握串并行数据转换的方法和原理。

3. 通过实验验证串并行转换的正确性和实用性。

二、实验原理在数字通信和数据处理领域,串行和并行传输方式各有优缺点。

串行传输适合长距离传输,而并行传输适合短距离高速交换。

串并行转换技术可以将串行数据转换为并行数据,或将并行数据转换为串行数据,以满足不同场景下的传输需求。

串行数据传输:将多个数据位按顺序逐个发送,数据位之间有明显的间隔。

并行数据传输:将多个数据位同时发送,每个数据位通过独立的传输线路。

三、实验设备与材料1. 串并行转换模块2. 信号发生器3. 示波器4. 计算机及实验软件四、实验步骤1. 连接实验设备,确保串并行转换模块与信号发生器、示波器等设备连接正确。

2. 在计算机上打开实验软件,设置实验参数,如串行数据输入、并行数据输出等。

3. 启动信号发生器,产生串行数据信号。

4. 将串行数据信号输入到串并行转换模块,观察转换模块的输出信号。

5. 使用示波器观察串行数据信号和并行数据信号的波形,记录数据。

6. 改变实验参数,重复步骤3-5,验证串并行转换的正确性和实用性。

五、实验结果与分析1. 实验过程中,将串行数据信号输入到串并行转换模块,转换模块输出相应的并行数据信号。

2. 通过示波器观察串行数据信号和并行数据信号的波形,发现两者具有相同的数据位和时序。

3. 改变实验参数,如串行数据输入、并行数据输出等,发现串并行转换模块能够适应不同的实验需求。

4. 实验结果表明,串并行转换模块能够实现串行数据到并行数据的转换,以及并行数据到串行数据的转换,验证了实验原理的正确性。

六、实验结论1. 串并行转换技术能够实现串行数据到并行数据的转换,以及并行数据到串行数据的转换,具有实际应用价值。

2. 通过实验验证了串并行转换模块的正确性和实用性,为后续相关实验和研究提供了参考。

3. 在数字通信和数据处理领域,串并行转换技术具有重要的应用前景。

串并转换

串并转换

实验五串并转换实验一、实验目的1、掌握串并行转换的原理及采用74LS164扩展端口的方法。

2、掌握数码管显示的原理及方法。

3、学习用任意两根I/O口线进行数据传输的方法。

二、实验要求利用实验箱的显示电路,在数码管上循环显示0-9这10个数,每个数显示1秒。

完成后修改程序,仅在一个数码管上显示0-F这16个数(其它三个数码管不显示)。

三、实验原理实验设备中数码管为共阴接法,接线确定了各段从左至右的排列顺序为:abcdefgh。

如果要显示数字1,应该是b c段发光,所以b c段对应的位写1,其它不发光的位写0。

因此1的显示码为60H。

其它显示码可按此规律得出。

实验原理图见图二,串并转换芯片74LS164的A、B端为串行数据输入端,将其接到数据线P1.0上,CLK为时钟端接到时钟线P1.1上,Q0~Q7为并行输出端接数码管。

在P1.1产生的时钟脉冲的作用下,数据的显示码从74LS164输入端一位一位的输入,经164转换后,串行数据变为8位并行数据经其输出端Q0~Q7加到数码管上,数码管就能显示相应的数字。

下面是数据60H的传输及显示过程:1、将A中数据的最低位送到串口的数据线P1.0上。

2、在时钟线P1.1上产生一个脉冲。

3、在这个脉冲的作用下,P1.0上的数据被打入164的Q0输出端,原来Q0上的数据移到Q1,Q1的数移到Q2…,完成一位数的传输。

4、第1步到第3步重复8次,这样一个字节的数据就输出完毕,同时74LS164将接收到的串行数据转换成并行数据在数码管上显示出来。

四、实验框图实验框图见图一。

五、实验连线及步骤1、DIN接P1.0,CLK接P1.1,打开实验箱电源,打开串并转换数码管显示模块上的开关。

2、启动KEIL软件界面,根据框图编程。

在初始化框中有两个内容,它们分别是:* 送表指针初值---寄存器MOV R1,#0* 送表首地址---DPTR 图一串并转换程序框图 MOV DPTR,#TAB显示子程序如下,其中R4中的初值为8。

实验九 串、并转换实验

实验九 串、并转换实验

实验九串/并转换实验一、实验目的1. 熟悉并掌握串转并的I/O 口扩展方法2.在单片机的串行口外接一个串入并出8位移位寄存器74LS164,实现串口到并口的转换,数据从RXD端输出,移位脉冲从TXD端输出,波特率固定为单片机工作频率的1/12。

3. 写程序,通过单片机的串行口控制74HC164 的串行输入端口,实现串并转换,LED指示灯轮流点亮。

验证串并转换数据的正确性。

二、电路设计1.从PROTEUS库中选取元件①AT89C51:单片机;②RES:电阻;③74164:8位移位寄存器;④CAP、CAP-ELEC:电容、电解电容;⑤CRYSTAL:晶振;⑥NOT:非门。

2.放置元器件3.放置电源和地4.连线5.元器件属性设置6.电气检测三、源程序设计、生成目标代码文件1.流程图2.源程序设计通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC9.ASM。

通过菜单“sourc e→DZC9.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。

程序编辑好后,单击按钮存入文件DZC9.ASM。

3.源程序编译汇编、生成目标代码文件通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。

若编译失败,可对程序进行修改调试直至汇编成功。

四、PROTEUS仿真1.加载目标代码文件2.仿真单击按钮,启动仿真。

五、思考题:1.什么叫波特率?它反映的是什么?它与时钟频率是相同的吗?当串行口以每分钟传送3600个字符时,计算其传送波特率。

2.8051单片机的串口有哪几种工作方式?各有什么功能和特点?。

串并转换

串并转换

实验五串并转换实验一、实验目的1、掌握串并行转换的原理及采用74LS164扩展端口的方法。

2、掌握数码管显示的原理及方法。

3、学习用任意两根I/O口线进行数据传输的方法。

二、实验要求利用实验箱的显示电路,在数码管上循环显示0-9这10个数,每个数显示1秒。

完成后修改程序,仅在一个数码管上显示0-F这16个数(其它三个数码管不显示)。

三、实验原理实验设备中数码管为共阴接法,接线确定了各段从左至右的排列顺序为:abcdefgh。

如果要显示数字1,应该是b c段发光,所以b c段对应的位写1,其它不发光的位写0。

因此1的显示码为60H。

其它显示码可按此规律得出。

实验原理图见图二,串并转换芯片74LS164的A、B端为串行数据输入端,将其接到数据线P1.0上,CLK为时钟端接到时钟线P1.1上,Q0~Q7为并行输出端接数码管。

在P1.1产生的时钟脉冲的作用下,数据的显示码从74LS164输入端一位一位的输入,经164转换后,串行数据变为8位并行数据经其输出端Q0~Q7加到数码管上,数码管就能显示相应的数字。

下面是数据60H的传输及显示过程:1、将A中数据的最低位送到串口的数据线P1.0上。

2、在时钟线P1.1上产生一个脉冲。

3、在这个脉冲的作用下,P1.0上的数据被打入164的Q0输出端,原来Q0上的数据移到Q1,Q1的数移到Q2…,完成一位数的传输。

4、第1步到第3步重复8次,这样一个字节的数据就输出完毕,同时74LS164将接收到的串行数据转换成并行数据在数码管上显示出来。

四、实验框图实验框图见图一。

五、实验连线及步骤1、DIN接P1.0,CLK接P1.1,打开实验箱电源,打开串并转换数码管显示模块上的开关。

2、启动KEIL软件界面,根据框图编程。

在初始化框中有两个内容,它们分别是:* 送表指针初值---寄存器MOV R1,#0* 送表首地址---DPTR 图一串并转换程序框图MOV DPTR,#TAB显示子程序如下,其中R4中的初值为8。

实验四 串并转换实验

实验四 串并转换实验

a 0
b 1
c 1
8 9
TAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H 0FEH,0F6H
实验原理
TAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H 0FEH,0F6H
接线:
DIN接P1.0 CLK接P1.1
原理:
movar2loop一个数码管进行显示end指向表第一个数将a循环右移最低位赋p10给clk一个脉冲打入一个数据a0a7cya0a7cya0a7rrrrc不rr的区别丌影响标志位10000111h实验拓展将计数器实验的计数值在串口数码管上显示出来
实验四 串并转换实验
串并转换:
串行数据被转换成并行数据在数码管上显示出来
MOV R5,#10 ACALL DELAY INC R2
0
1
0
0 0
0 1
1
1
CY
A.7
A.0
CJNE R2,#10,EXIT MOV R2,#0 EXIT: AJMP LOOP
TAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H, 0FEH,0F6H
END
RRC 不RR的9这10个数,每个数显示时间为1s。 使用软件延时
数码管显示原理
a f b
显示数
0
1 2
显示码
0FCH 60H 0DAH 0F2H 66H 0B6H 0BEH
e
d
数码段 1
制表:
c g
d 0 e 0 f 0 g 0 h 0 60H
3 4 5 6 7
0E0H
0FEH 0F6H

单片机实验(AD转换)

单片机实验(AD转换)

实验三 A/D、D/A转换实验一、实验目的1.熟悉DAC0832并行接口数模转换器和TLC2543串行接口模数转换器的基本原理和编程方法。

2.进一步熟悉单片机应用系统开发步骤和方法。

二、实验电路实验所用元件清单如下表所示:1. 串行A/D转换器TLC25432.并行D/A转换器DA0832三、相关知识(一)串行A/D转换器TLC25431. TLC2543的特性与引脚TLC2543是TI公司的TLC2543 12位串行A/D转换器,使用开关电容逐次逼近技术完成A/D转换过程。

由于是串行输入结构,能够节省80C51系列单片机的I/O资源,而且价格适中。

主要特点如下:●12位分辨率A/D转换器。

●在工作温度范围内10 s转换时间。

●11个模拟输入通道。

●3路内置自测试方式。

●采样率为66kbps。

●线性误差+1LSB(max)。

●有转换结束(EOC)输出。

●具有单、双极性输出。

●可编程的MSB或LSB前导。

●可编程的输出数据长度。

2. TLC2543的工作过程TLC2543的工作过程分为两个周期:I/O 周期和实际转换周期。

1)I/O周期I/O周期由外部提供的I/O CLOCK定义,延续8、12或16个时钟周期,决定于选定的输出数据长度。

器件进入I/O周期后同时进行两种操作。

(1)在I/O CLOCK的前8个脉冲的上升沿,以MSB前导方式从DA TA INPUT端输入8位数据流到输入寄存器。

其中前4位为模拟通道地址,控制14通道模拟多路器从11个模拟输入和3个内部自测电压中,选通一路送到采样保持电路,该电路从第4个I/O CLOCK脉冲的下降沿开始,对所选信号进行采样,直到最后一个I/O CLOCK脉冲的下降沿。

I/O周期的时钟脉冲个数与输出数据长度(位数)有关,输出数据长度由输入数据的D3、D2选择为8、12或16位。

当工作于12或16位时,在前8个时钟脉冲之后,DATA INPUT无效。

(2)在DATA OUT端串行输出8、12或16位数据。

单片机实验五 串行口实验

单片机实验五 串行口实验

实验五串并转换实验一、实验目的:1、掌握串行口方式0工作方式及编程方法2、掌握利用串行口扩展IO通道的方法二、实验内容利用8051的串行口和串行输入、并行输出移位寄存器74LS164,扩展两个8位输出通道,用于驱动2个数码显示管,在数码管上循环显示0-9这10个数字。

三、实验原理:使用串行口的方式0:8位移位寄存器方式,波特率为fosc/12。

数据从RxD端发出,TxD端发出同步脉冲。

使用MOV SBUF,A 命令即可以启动数据传输。

共阴极的LED。

四、实验步骤①将S/P区DA TA插孔接BUS 3区P3.0(RXD)插孔。

②将S/P区CLK插孔接BUS 3区P3.1(TXD)插孔。

③将S/P区CLR插孔接MP区/SP插孔,上电时对164复位。

六、程序代码ORG 0000HN2: MOV R3,#00HN1: LCALL DISPINC R3LCALL DELA YCJNE R3, #100,N1SJMP N2DISP: MOV A,R3MOV R0,AANL A,#0FHLP: MOV DPTR,#TABMOVC A,@A+DPTRMOV SBUF,AMOV R7,#0FHH55S: DJNZ R7,H55SMOV A,R0SWAP AANL A,#0FHMOVC A,@A+DPTRMOV SBUF,AMOV R7,#0FHH55S1: DJNZ R7,H55S1RETDELA Y:MOV R6,#0FFhDEL Y2:MOV R7,#0FFhDEL Y1:DJNZ R7,DEL Y1DJNZ R6,DEL Y2RETTAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0hDB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8ehEND该程序的显示disp字程序入口参数在R3中不是必须的。

可以换到R0中,需要改下显示字程序的开始部分。

51单片机串口变并口汇编程序

51单片机串口变并口汇编程序

51单片机串口变并口汇编程序一、背景介绍单片机是一种集成了处理器、存储器和输入输出接口的微型计算机系统,广泛应用于各种电子设备中。

其中,51单片机是一种非常常见且功能强大的单片机型号。

而串口和并口是单片机与外部设备进行数据传输的两种常见方式。

本文将探讨如何使用汇编语言编写一个将串口转换为并口的51单片机程序。

二、串口与并口的概念1. 串口串口是指利用一对数据线进行数据传输的通信接口。

串口通信可以实现双向数据传输,常用于计算机与外部设备之间的数据交换。

串口通信的优势在于能够以较低的成本实现较长距离的数据传输,且占用的引脚较少。

2. 并口并口是指利用多条数据线进行数据传输的通信接口。

并口通信一般只能实现单向数据传输,常用于单片机与外围设备之间的数据交换。

并口通信的优势在于能够以较高的速度进行数据传输,但由于占用的引脚较多,因此在设计中需要考虑引脚的分配和接口电路的设计。

三、串口变并口的原理串口与并口的数据传输方式和电气特性不同,因此需要一定的电路转换才能实现串口变并口。

常见的串口变并口电路采用的是移位寄存器,通过串行-并行转换实现数据的传输。

串口变并口的原理如下:1.串口接收到的数据通过串行-并行转换电路和移位寄存器转换为并行数据。

2.并口的数据通过并行-串行转换电路和移位寄存器转换为串行数据,然后通过串口发送出去。

四、51单片机串口变并口汇编程序实现步骤以下是使用51单片机汇编语言编写的串口变并口程序的实现步骤:1.初始化串口:设置串口的波特率、数据位数、停止位、校验位等参数。

2.初始化并口:设置并口的工作模式、数据线的方向等参数。

3.循环接收串口数据:使用串口中断,将接收到的串口数据存储到缓冲区中。

4.将串口数据转换为并口数据:通过移位寄存器和并口接口电路将串口数据转换为并口数据。

5.将并口数据发送出去:将转换后的并口数据通过并口接口电路发送给外部设备。

6.跳转回循环接收串口数据的步骤,完成循环。

51单片机串并口转换实验

51单片机串并口转换实验

我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。

在单片机开发试板上也是完美运行。

今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能#include<reg52.h>本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。

实验者请按上图连接好实验电路。

#include<reg52.h>#include< intrins.h >#define uchar unsigned char#define uint unsigned int#define ulong unsigned longcode uint a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};sbit SO=P1^0; //定义165的输出sbit STCP=P1^1;sbit DS=P1^2;sbit SHCP=P1^3;sbit SHLD=P1^4;sbit CLK=P1^5;sbit cs573=P1^6;/**************************************************/void delay(ulong X) //延时函数,采用了形参传递函数{while(X--);}/**************************************************/void LED(); //函数声明/**************************************************/void main() //主函数{while(1){LED ();}}/****************************************************/void LED(){uint i,j,k;uchar n,m;for(i=0;i<8;i++){cs573=1;P2=a[i]; //往P2口送流水灯字符,因为有8个流水灯,所以i=8循环八次,LED小灯依次被点亮cs573=0; //把P2口送过来的数据锁存SHLD=0; //74HC165开始装载数据delay(10);SHLD=1;for(j=0;j<8;j++) //开始八次循环移位{n<<=1;delay(10);CLK=0;n|=SO;delay(10);CLK=1;}P3=n;m=n;for(k=0;k<8;k++) //74HC595开始转换数据{SHCP=0;if((m&0x80)==0x80)DS=1;elseDS=0;m<<=1;SHCP=1;delay(300);}STCP=0;STCP=1;delay(30000);}}。

51单片机 并行数转换串行数实验

51单片机 并行数转换串行数实验

实验十四并行数转换串行数实验一、实验目的掌握串行口方式0工作方式及编程方法。

掌握利用I/O扩展串行口通道的方法。

二、实验内容将外接的并行数利用74LS165读入,并且移位转换成串行数,利用单片机P1口串行读入。

三、实验原理图四、实验步骤1.硬件连接:165并串转换的OUT、CLK、SH分别接P3.0、P3.1、P1.0。

165并串转换Q0-Q7接数据开关的K1-K8。

P2口接发光二极管的L1-L8。

2.实验现象:拨动数据开关为1时相应的发光二极管亮。

拨动数据开关为0时相应的发光二极管灭。

五、实验程序$NOMOD51$INCLUDE (80C52.MCU);====================================================================; Desc: This is a simple 51 program for testing .; Processor: 80C51; Compiler: ASEM-51 (Proteus); Editor : zju_余楠; E-mail : 188122833@;====================================================================ORG 0000HLJMP MAINORG 0100HMAIN:MOV SCON,#10HMOV A,#00HCLR RILOOP:CLR P1.0JNB RI,$MOV A,SBUFMOV P2,ACLR RISETB P1.0ACALL DELAYSJMP LOOPDELAY:MOV R1,#01FHDJNZ R1,$RETEND六、实验结论七、实验情况实验老师签名:时间:。

51单片机串口变并口汇编程序

51单片机串口变并口汇编程序

51单片机串口变并口汇编程序51单片机是一种常用的微控制器,它具有高性能、低功耗、丰富的外设和广泛的应用领域。

其中,串口和并口是常见的通信接口方式。

本文将详细介绍51单片机串口变并口汇编程序的实现方法。

## 1. 串口和并口介绍### 1.1 串口串行通信接口(Serial Communication Interface),简称串口,是一种将数据以连续位的形式传输的通信方式。

它只需要两根线(发送线和接收线)即可实现数据传输,适用于远距离传输和多设备连接。

### 1.2 并口并行通信接口(Parallel Communication Interface),简称并口,是一种将数据以多个位同时传输的通信方式。

它需要多根线同时传输数据,适用于高速数据传输和短距离连接。

## 2. 串行通信与并行通信转换原理在51单片机中,通过软件编程可以实现串行通信与并行通信之间的转换。

下面是其基本原理:### 2.1 串行转并行在将串行数据转换为并行数据时,需要一个移位寄存器来存储接收到的串行数据,并通过时钟信号按位移出到并行总线上。

具体步骤如下:1. 初始化串口参数,包括波特率、数据位、停止位等。

2. 等待串口接收到数据。

3. 将接收到的串行数据写入移位寄存器。

4. 通过时钟信号依次将移位寄存器中的数据按位移出到并行总线上。

### 2.2 并行转串行在将并行数据转换为串行数据时,需要一个移位寄存器来存储要发送的并行数据,并通过时钟信号按位读取并发送出去。

具体步骤如下:1. 初始化串口参数,包括波特率、数据位、停止位等。

2. 将要发送的并行数据写入移位寄存器。

3. 通过时钟信号依次从移位寄存器中读取数据,并发送出去。

## 3. 51单片机串口变并口汇编程序实现下面是一个示例程序,演示了如何在51单片机中实现串口变并口的功能。

```assembly; 定义串口接收和发送函数USART_Rx: ; 串口接收函数MOV A, SBUF ; 读取SBUF中的接收数据RETUSART_Tx: ; 串口发送函数MOV SBUF, A ; 将A寄存器中的数据写入SBUFRET; 主程序入口MAIN:MOV TMOD, #20H ; 设置定时器1为工作模式2,用于串口通信 MOV TH1, #FDH ; 设置波特率为9600SETB TR1 ; 启动定时器1; 初始化串口参数MOV SCON, #50H ; 设置串口工作模式为8位数据位、1位停止位、可变波特率; 接收数据并转换为并行数据发送CALL USART_Rx ; 调用串口接收函数,将接收到的数据存入A寄存器MOV P0, A ; 将A寄存器中的数据写入P0,并行总线; 并行数据转换为串行数据发送MOV A, P1 ; 从P1并行总线读取要发送的数据,存入A寄存器CALL USART_Tx ; 调用串口发送函数,将A寄存器中的数据发送出去SJMP MAIN ; 无限循环END```上述汇编程序通过调用USART_Rx和USART_Tx函数实现了串口接收和发送功能。

单片机串并转换实验报告

单片机串并转换实验报告

实验五串并转换实验姓名:赵新专业:通信工程(401)学号:2011412547 成绩:一、实验目的1、掌握8051串行口方式0工作方式及编程方法;2、掌握利用串行口扩展I/O通道的方法;二、实验内容1、用Proteus画出仿真电路图。

利用8051串行口和串行输入并行输出移位寄存器74LS164可以进行I/O的扩展,要求以级联的形式用2片74LS164扩展两个8位I/O,驱动两个数码管,电路自行设计。

2、按流程图编写程序,在数码管上循环显示从8051串行口输出的0--9这10个数字。

3、编写程序,利用定时器T0产生1S的定时,通过数码管显示计时时间0~99秒,计到99秒后再减1计时,即由99~0。

三、实验原理及步骤1、串行口工作在方式0是时,可通过外接移位寄存器实现串并行转换。

在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率的1/12。

由软件置位串行控制寄存器(SCON)的REN后才能启动串行接受,在CPU将数据写入SBUF寄存器后,立即启动发送。

待8位数据输入完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。

2、74LS164:8位串入并出移位寄存器,共有14个引脚。

注意:74LS164接数码管时应接限流电阻(200欧姆左右),否则无法驱动级联的另一块74LS164。

3、实验步骤:1、用proteus设计串并转换电路;2、在Keil C51中编写控制程序,编译通过后,与Proteus联合调试;3、连续执行程序,在扩展的数码管上循环显示0~99这10个数字;4、修改程序,实现加减计时功能。

四、电路设计及调试1、实验电路2、程序设计与调试:单个数码管循环显示0~9:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar i=0;uchar code table[]={0x03,0x9f,0x25,0x0d, 0x99,0x49,0x41,0x1f,0x01,0x09};void delay(uint xms){uchar i,j;for(;xms>0;xms--)for(i=142;i>0;i--)for(j=2;j>0;j--);}void main() {SCON=0x10;PCON=0;while(1){SBUF=table[i++];while(TI==0);TI=0;delay(2000);if(i==10)i=0;}}0~99s计时:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar i;uchar c=0;uchar f=0;uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; void main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;SCON=0x10;PCON=0;while(1);}void int_t0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;c++;if(c>=20&&f==0){c=0;SBUF=table[i%10];while(TI==0);TI=0;SBUF=table[i/10];while(TI==0);TI=0;i++;if(i==100){f=1;i--;}}if(c>=20&&f==1){c=0;i--;SBUF=table[i%10];while(TI==0);TI=0;SBUF=table[i/10];while(TI==0);TI=0;if(i==0){f=0;i++;}}}五、经验总结做实验时要仔细,要按步骤来,避免人为错误。

单片机实验---串行数据转换为并行数据

单片机实验---串行数据转换为并行数据

实验六串并转换实验一、实验目の1、掌握8051串行口方式0工作方式及編程方法2、利用串行口擴展I/O通道の方法二、實驗說明本次實驗使用8051串行口和串行輸入並行輸出移位寄存器74LS164,構成單片機輸出介面電路,控制8只LED滾動顯示。

單片機工作於串口模式0,即移位寄存器輸入/輸出模式,串行數據通過RXD輸出,TXD 則用於輸出移位時鐘脈衝,這種模式有利於用最少硬體實現介面擴展。

_crol_()函數在inrtins.h檔中聲明如下:unsigned char _crol_(unsigned char val, unsigned n);//功能:將變數val二進位位迴圈左移n位例如:當val=15=0x0f=0000 1111B時,如果要將valの各二進位位迴圈左移2位,則val=0011 1100B。

該過程可用_crol_(15,2);來實現,_crol_(15,2)返回值是0011 1100B=0x3c=3*16+12=60三、實驗線路圖四、实验步骤1、先建立檔夾“ex6”,然後建立“ex6”工程專案,最後建立根源程式檔“ex6.c”,輸入如下根源程式;/*串行數據轉換為並行數據*/#include<reg51.h> //包含單片機寄存器の頭檔#include<intrins.h> //包含對片外存儲器地址進行操作の頭檔//延時void Delay(unsigned int ucms){unsigned inti;while(--ucms) for(i=0;i<120;i++);}//主程序void main(){unsigned char dat=0x80;SCON=0x00;//串口模式0,即移位寄存器輸入/輸出模式TI=1;//TI置1while(1){dat=_crol_(dat,1);SBUF=dat;while(TI==0) //等待發送結束TI=0;//TI軟體置位Delay(400);}}2、用Proteus軟體仿真經過Keil軟體編譯通過後,可利用Proteus軟體仿真。

串-并转换实验

串-并转换实验
• PC机 机 一台 • DP-51PROC单片机综合仿真实验仪 一台 单片机综合仿真实验仪
三、实验内容: 实验内容: (1)74LS164串-并转换实验 74LS164串 编写程序, 编写程序,通过单片机的串行口输 出一数据, 55H,控制74LS164芯片 出一数据,如55H,控制74LS164芯片 进行串-并转换,通过 进行串 并转换,通过LED1~LED8的 并转换 的 显示验证串-并数据转换的正确性。 显示验证串 并数据转换的正确性。 并数据转换的正确性
LED1~LED8
MCU
1
3 4 5 6 10 11 12 13 QA QB QC QD QE QF QG QH ( Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7)
(RXD)P3.0
A (SER INA)
74LS164
2 B (SER INB) 接+5V (CLR) CLR (TXD)P3.1 9 P1.0 的关系, 注:INA与INB为“与”的关系,不用的那个串行输入口需接高电 与 为 平 (CLK IN) CP 8
MCU
6 5 G P6 4
SW1~SW8
3 14 D P3 13 C P2 12 B P1 11 A P0) SIN (SER) H (P7 F E 8
P0.0 (RXD) P3.0 9 7
QH(Q7)
74LS165
QH (Q7) (PL) S/L 1 CLK2 15
P0.7 (TXD) P3.1 P1.0
(CLK1) CP 2
注:CLK1与CLK2为“或”的关 与 为 系
下次实验内容: 下次实验内容 实验14- 实验 -RS232串口通信实验 串口通信实验 预习要求: 预习要求: 1. 查资料熟悉 查资料熟悉MAX232芯片的工作原理和 芯片的工作原理和 使用方法。 使用方法。 • 2. 编写一段程序,利用单片机串行口向 编写一段程序,利用单片机串行口向PC 机连续发送0X55H,即大写字母“U”。 即大写字母“ 。 机连续发送 即大写字母 • 3. 编写一段程序,单片机接收PC机串行口 编写一段程序,单片机接收 机串行口 发送的0X55H(ASCII为大写字母“U”), 为大写字母“ ), 发送的 ( 为大写字母 在单片机正确接收到“ 时 在单片机正确接收到“U”时,返回一个大 写字母“ ,错误接收时返回一个“ 。 写字母“T”,错误接收时返回一个“F”。 • 注:串行口波特率:9600b/s。 串行口波特率: 。 • • • •
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机串并口转换实验 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】
我也是刚入手单片机,今天编了一段小程序,就是关于单片机串口转并口和并口转串口的一个小实验,本程序在PTOTUES中完美运行。

在单片机开发试板上也是完美运行。

今天贴出来供大家分享,看完本历程,有助于提高您对单片机IO口的基本操作,锁存器的用法以及串并转换的使用技能
#include<reg52.h>
本例程的电路连接图如上,在电路中使用了AT89C51单片机一块,74HC595八路串/并转换器,74HC165八路并串转换器和一片74HC573 锁存器。

实验者请按上图连接好实验电路。

#include<reg52.h>
#include< intrins.h >
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
code uint a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbit SO=P1^0; //定义165的输出
sbit STCP=P1^1;
sbit DS=P1^2;
sbit SHCP=P1^3;
sbit SHLD=P1^4;
sbit CLK=P1^5;
sbit cs573=P1^6;
/**************************************************/
void delay(ulong X) //延时函数,采用了形参传递函数{
while(X--);
}
/**************************************************/
void LED(); //函数声明
/**************************************************/
void main() //主函数
{
while(1)
{
LED ();
}
}
/****************************************************/
void LED()
{
uint i,j,k;
uchar n,m;
for(i=0;i<8;i++)
{
cs573=1;
P2=a[i]; //往P2口送流水灯字符,因为有8个流水灯,所以i=8循环八次,LED小灯依次被点亮
cs573=0; //把P2口送过来的数据锁存
SHLD=0; //74HC165开始装载数据
delay(10);
SHLD=1;
for(j=0;j<8;j++) //开始八次循环移位
{
n<<=1;
delay(10);
CLK=0;
n|=SO;
delay(10);
CLK=1;
}
P3=n;
m=n;
for(k=0;k<8;k++) //74HC595开始转换数据
{
SHCP=0;
if((m&0x80)==0x80)
DS=1;
else
DS=0;
m<<=1;
SHCP=1;
delay(300);
}
STCP=0;
STCP=1;
delay(30000);
}
}。

相关文档
最新文档