1、(1,波特率相同 2,帧格式也要相同)10. 8051单片机最小系统原理图11. 8051控制74HC164, PCF8563, DS18B20 , TLC549 ,数码管要几根线(分别为2根,2根,1根,3根,)12. 异步串行通讯标准波特率是哪些值(11520,12800,14400,19200,28800,38400,57600,115200)13. REG52.H文件的作用是什么(定义了一些宏,把单片机中的寄存器地址封装)14. display.h ,pcf8563.h , ds18B20.h, tlc549.h文件中一般有什么内容display.hvoid shift(unsigne
2、d char n,flag);void display(unsigned char j0,j1,j2,j3,j4,j5,j6,j7);sbit sda=P05;sbit scl=P06;code char led_code19= /display code 0x11,0xd7,0x32,0x92,0xd4,/0,1,2,3,4 0x98,0x18,0xd3,0x10,0x90,/5,6,7,8,9 0x50,0x1c,0x39,0x16,0x38,/a,b,c,d,e 0x78,0xfe,0xef,0xff / f - dot dark ; pcf8563.hsbit sda_8563 = P
3、03;sbit scl_8563 = P02;unsigned char year,mon,day,hou=0x16,min=0x16,sec=0x20,week,last_week=7;const unsigned char time7=0x09,0x11,0x20,0x05,0x11,0x14,0x30;/设置初值:年.月.日.星期.时.分.秒/与PCF8563有关的函数声明void start(void); /开始子程序void stop(void); /结束子程序unsigned char writebyte_8563(unsigned char );/写一个字节=unsigned c
4、har readbyte_8563(void); /读一个字节void read_time_8563(void); /读日期,数据放于year,mon,day,hou,min,sec,weekvoid write_time_8563(void); /写日期初值ds18B20.hsbit DQ = P04;void delay(unsigned int );void init_DS18B20(void);uchar read_one_char(void);void write_one_char(unsigned char);int read_temperature(void);tlc549.hS
5、bit cs_549=P37;Sbit sda_549=P36;Sbit scl_549=P35;Void delay(unsigned char);unsigned char read_549();15. 手工推导数码管显示代码首先运行数组LED=0x00,0x01,0x02,0x40,0x08,0x10,0x20,0x40,0x80,0xff然后标出顺序,根据顺序计算代码16. 延时约约1秒左右的程序void delay1s(void) /延时1000000us,误差 0us unsigned char a,b,c; for(c=167;c0;c-) for(b=171;bb-) for(
6、a=16;aa-); 17. 接P2口的发光二极管显示花样程序#include void delay_1s(unsigned int x);main() while(1) P2=0xfe; /11111110 delay_1s(42000); P2=0xfd; /11111101 delay_1s(42000); P2=0xfb; /11111011 P2=0xf7; /11110111 P2=0xef; /11101111 P2=0xdf; /11011111 P2=0xbf; /10111111 P2=0x7f; /01111111 18. 数码管移位程序(使用74HC164芯片)void
7、 shift(uchar n) uchar m,i; m=tablen; scl=0; for(i=0;i8;i+) if(m&0x80) sda=1; else sda=0; scl=1; scl=0; m=1;19. 写出8个数码管显示(使用74HC164芯片)void shift(unsigned char);sbit sda=P00; / must modifysbit scl=P01; / must modifycode char led_code12= 0xff, 0xff, 0xff, 0xff,0xfe, 0xfd, 0xfb, 0xf7,0xef,0xdf, 0xbf, 0x
8、7f, ;main() unsigned char i;while(1) for(i=0;10;i+) shift(i); void shift(unsigned char n) unsigned char m,i;m=led_coden;scl=0;i+) if (m & 0x80) sda=1; else sda=0; scl=1;m void delay_1s(unsigned int x) while(x- -)20. 写出一个60以内整数变成可以用两个数码管十进制显示的拆分程序Separate(int i) For(i=0;60;I0=i/10;I1=i%10;21. 写出一个255
9、以内整数变成可以用两个数码管(十六进制)显示的拆分程序Separate(unsigned int a) A0=a/16; A1=a%16;22. 设单片机晶振频率为4MHZ,使用定时器1以工作方式2产生周期为200微秒的等宽的方波脉冲,并在P16端输出, 写出完整程序计算:机器周期为T=12/4=3(us)现在要产生200us的等宽方波脉冲, Main()Sbit out=P1.6 TMOD=0x20;/定时器1和工作方式2 TH1=(256-66)/16; TL1=(256-66)%16; EA=1;ET1=1;TR1=1;While(1);Void time1()interuppt 2 P
10、1.6=!P1.6;这道题用定时器很难得到完全准确的时间,这里是用大概的时间!23. 写出两机通讯程序#includei-) dat=dat1; if(sda_8563)dat|=0x01; return(dat);3. 写一个字节程序;unsigned char writebyte_8563(unsigned char dat) /写一个字节 unsigned int i; unsigned char ack=1; for(i=8; if(dat&0x80)sda_8563 = 1; else sda_8563 = 0; dat4&0x0f)*10+(sec&0x0f); min=(min&
11、0x0f)*10+(min& hou=(hou&0x0f)*10+(hou& day=(day&0x0f)*10+(day& mon=(mon&0x0f)*10+(mon& year=(year&0x0f)*10+(year& /BCD码转换成10进制数25. 根据1Wire总线协议和给出DS18B20波形图,写出DS18B20:1. 启动总线程序void init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /拉高总线 de
12、lay(35);2. 写一个字节程序void write_one_char(unsigned char dat) unsigned char i=0; for (i=8; i i-) DQ = dat&0x01; delay(5); dat3. 读两个字节程序uchar read_one_char(void) unsigned char i = 0; unsigned char dat = 0; /给脉冲信号 /先进行移位操作,以免最后一位不能读出 if (DQ) dat |= 0x80; delay(4); return dat;4. 字节合并与折分程序int read_temperatur
13、e(void) unsigned char a=0; unsigned char b=0; int t=0; init_DS18B20(); /初始化 write_one_char(0xCC); / 跳过读序号列号的操作 write_one_char(0x44); / 启动温度转换 /跳过读序号列号的操作 write_one_char(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a = read_one_char(); b = read_one_char(); t = b; t TEMP_L=Temp;high_T=(TEMP_H /整数部分ow_T =(unsign
14、ed char)(TEMP_L&0x0f)*0.625*10);/小数部分LastTemp = Temp;/保存现在的温度值,准备与下一个读出的温度比较separate(low_T,high_T);display(j0,j1,j2,j3,j4,j5,j6,j7);void separate(unsigned char low_T,high_T)j0=low_T%10;j1=low_T/10;j2=high_T%10;j3=high_T/10;26. 根据SPI总线协议和给出TLC549波形图,写出TLC549芯片的读A/D程序ad549.hunsigned char Read_549()unsigned char value_549=0;sda_549=1; /释放总线scl_549=0; /时钟低cs_549=1; /完成准备状态cs_549=0;delay(10);if(sda_549=1) value_549|=0x01;value_549scl_549=1;return (value_549);27. 本课程的上机实验操作过程有关要点28. 本课程的上机实验时的出错信息的含义
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1