logo资料库

郭天祥 十天学通单片机和C语言 课后作业+答案,整理7章.doc

第1页 / 共64页
第2页 / 共64页
第3页 / 共64页
第4页 / 共64页
第5页 / 共64页
第6页 / 共64页
第7页 / 共64页
第8页 / 共64页
资料共64页,剩余部分请下载后查看
郭天祥 《十天学通单片机》 ———“ TX-1C 单片机实验板”所有课后作业+答案,特别整理,供单片机 爱好与学习者使用 第一讲 学单片机预备知识、 如何点亮一个发光管 单片机能做什么,基本电子知识,如何用 TX-1C 单片机学习板学 习单片机,C51 知识简介,如何申请免费芯片样品。点亮一个发光管, 第二讲 流水灯设计、蜂鸣器发声、继电器控制 简单延时程序、子程序调用、带参数 子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概 念及应用。 第三讲 数码管显示的原理、数码管的静态显示 共阳、共阴数码管显示原理、定时器 工作方式介绍、重点讲述工作方式 2、中断概念及中断函数写法、外部中断试验、定时器中 断应用 第四讲 数码管的动态显示原理及应用实现 动态扫描概念、定时器、中断加深 用单片机的定时器及中断设计一个 60 秒定时器 第五讲 独立键盘、矩阵键盘 的检测原理及实现 键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函 数写法及应用 第六讲 AD、DA 的工作原理 及实现、运放电路 模拟电压与数字电压的关系、为什么要使用 AD 及 DA、ADC0804 的操作方法、DAC0832 的操作方法 第七讲 串口通讯原理及操作流程 串口通讯工作方式、10 位数据通讯、波特率概念、 如何根据波特率计算定时器初值、串口打印在调试程序中的应用。 第八讲 1602 液晶、12864 液晶显示原理及实现 最简单液晶工作原理、如何开始对一 个没有任何概念的芯片开始单片机的操作 第九讲 IIC 总线 AT24C02 芯片工作原理 IIC 总线工作原理、 目前非常通用的一种通信机制 第十讲 利用 51 单片机的定时器设计一个时钟 综合运用 51 单片机知识设计一个可 以随意调节时间、带整点闹铃的时钟。(其中用到定时器、中断、按键、蜂鸣器、数码管或
串口通信) 第十一讲 用 DS12C887 时钟芯片设计一个高精度时钟 DS12C887 内 部 带 有 锂 电 池,系统掉电情况下可自行精确走 10 年,并带有闹钟功能、年、月、日、时、分、秒等。 (本节由学生自己设计电路) 第十二讲 使用 Protell99 绘制电路图全过程 Protell99 软件使用、元件库、封装 库设计、绘制原理图、错误检查、生成 PCB、手动、自动布线、送去加工 第十三讲 Altium designer 6.5 绘制电路图全过程 最顶级电路板设计软件 Altium Designer 使用、元件库、封装库设计、绘制原理图、错误检查、生成 PCB、手动、自动布线、 送去加工 lesson1 对照 TX-1C 单片机学习板原理图写程序,用位操作和总线操作两种方法完成 以下题目 1.熟练建立 KEIL 工程 2.点亮第一个发光管. 3.点亮最后一个发光管 4.点亮 1、3、5、7 5.点亮二、四、五、六 6.尝试让第一个发光管闪烁 7.尝试设计出流水灯程序 ====================================================== lesson2 第一个发光管以间隔 200ms 闪烁 8 个发光管由上至下间隔 1s 流动,其中每个管亮 500ms,灭 500ms,亮时蜂鸣 器响,灭时关闭蜂鸣器,一直重复下去。 8 个发光管来回流动,第个管亮 100ms,流动时让蜂鸣器发出“滴滴”声。 用 8 个发光管演示出 8 位二进制数累加过程。 8 个发光管间隔 200ms 由上至下,再由下至上,再重复一次,然后全部熄灭 再以 300ms 间隔全部闪烁 5 次。重复此过程。
间隔 300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到 8 个管 亮,然后重复整个过程。 间隔 300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别 从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发 光管,程序停止。 ================================================================= lesson3 1、利用定时/计数器 T0 从 P1.0 输出周期为 1s 的方波,让发光二极管以 1HZ 闪烁,设晶振频率为 12MHz。。 2、利用定时/计数器 T1 产生定时时钟,由 P1 口控制 8 个发光二极管,使 8 个指示灯依次一个一个闪动,闪动频率为 10 次/秒(8 个灯依次亮一遍为一个周 期),循环。 3、同时用两个定时器控制蜂鸣器发声,定时器 0 控制频率,定时器 1 控制 同个频率持续的时间,间隔 300ms 依次输出 1,10,50,100,200,400,800, 1k(hz)的方波。 4、用定时器以间隔 500MS 在 6 位数码管上依次显示 0、1、2、3….C、D、E、 F,重复。 ================================================================= lesson4 1.利用动态扫描方法在六位数码管上显示出稳定的 654321. 2.用动态扫描方法和定时器 1 在数码管的前三位显示出秒表,精确到 1%秒, 即后两位显示 1%秒,一直循环下去。 3.利用动态扫描和定时器 1 在数码管上显示出从 765432 开始以 1/10 秒的速 度往下递减直至 765398 并保持显示此数,与此同时利用定时器 0 以 500MS 速度 进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然 后全部开始闪烁,3 秒后(用 T0 定时)流水灯全部关闭、数码管上显示出“HELLO”。 到此保持住。 lesson5
数码管前三位显示一个跑表,从 000 到 999 之间以 1%秒速度运行,当按下 一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。 在上题的基础上,用另外三个独立键盘实现按下第一个时计时停止,按下第 二个时计时开始,按下第三个是计数值清零从头开始。 按下 16 个矩阵键盘依次在数码管上显示 1-16 的平方。如按下第一个显示 1, 第二个显示 4... ================================================================= lesson7 1.由上位机发送 1 给单片机时,蜂鸣器以 400ms 频率发声,发 2 时以 200ms 频率发声,发 3 时以 100ms 频率发声,发 4 时关闲蜂鸣器。 1.以 2400bps 从计算机发送任一字节数据,当单片机收到该数据后,在此数 据前加上一序号然后连同此数据一起发送至计算机,当序号超过 255 时归零。 2.以 16 进制发送一个 0-65536 之间的任一数,当单片机收到后在数码管上 动态显示出来,波特率自定。 3. 用 AD 以 1HZ 的频率采集模拟信号,然后转换成数字量,再将其以 1200bps 发送到计算机,在计算机上显示。 4.按下矩阵键盘第一行时以 1200bps 发送,1,2,3,4,第二行时以 2400bps 发送 5,6,7,8,第三行以 4800bps 发送,9,10,11,12,第四行以 9600pbs 发 送,13,14,15,16. ================================================================= Lesson1 作业 1 用位操作点亮第一个发光管. // 适用 TX-1C 单片机实验板 // 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数
{ } led1=0; //将单片机 P1.0 口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 2/ 用总线操作点亮第一个发光管. // 适用 TX-1C 单片机实验板 // 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 void main() //主函数 { } P1=0xfe; //将单片机 P1 口的 8 个口由高到低分别赋值为 11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。 3 / / 用位操作点亮最后一个发光管. // 适用 TX-1C 单片机实验板 // 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 sbit led8=P1^7; //单片机管脚位声明 void main() //主函数 { } led8=0; //将单片机 P1.7 口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 4 // 用总线操作点亮最后一个发光管.
// 适用 TX-1C 单片机实验板 // 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 void main() //主函数 { } P1=0x7f; //将单片机 P1 口的 8 个口由高到低分别赋值为 01111111 while(1); //程序停止在这里,在后面会讲到为什么这样写。 5 // 用位操作点亮 1,3,5,7 发光管. // 适用 TX-1C 单片机实验板 // 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 sbit led1=P1^0; //单片机管脚位声明 sbit led3=P1^2; //单片机管脚位声明 sbit led5=P1^4; //单片机管脚位声明 sbit led7=P1^6; //单片机管脚位声明 void main() //主函数 { } 6 led1=0; led3=0; led5=0; led7=0; //将单片机 P1.0 口清零 //将单片机 P1.2 口清零 //将单片机 P1.4 口清零 //将单片机 P1.6 口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 // 用总线操作点亮 1,3,5,7 发光管. // 适用 TX-1C 单片机实验板
// 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 void main() //主函数 P1=0xaa; //将单片机 P1 口的 8 个口由高到低分别赋值为 10101010 while(1); //程序停止在这里,在后面会讲到为什么这样写。 { } 7 // 用位操作点亮 2,4,5,6 发光管. // 适用 TX-1C 单片机实验板 // 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 sbit led2=P1^1; //单片机管脚位声明 sbit led4=P1^3; //单片机管脚位声明 sbit led5=P1^4; //单片机管脚位声明 sbit led6=P1^5; //单片机管脚位声明 void main() //主函数 { } 8 led2=0; led4=0; led5=0; led6=0; //将单片机 P1.1 口清零 //将单片机 P1.3 口清零 //将单片机 P1.4 口清零 //将单片机 P1.5 口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 // 用总线操作点亮 2,4,5,6 发光管. // 适用 TX-1C 单片机实验板
// 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 void main() //主函数 { } 9 P1=0xc5; //将单片机 P1 口的 8 个口由高到低分别赋值为 11000101 while(1); //程序停止在这里,在后面会讲到为什么这样写。 // 尝试让第一个发光管闪烁.(程序看不懂没关系,后面章节会有详细讲解) // 适用 TX-1C 单片机实验板 // 晶振为 11.0592M /*********************************************************/ #include //52 单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数 unsigned int i; //定义一个 int 型变量 while(1) { } i=50000; //变量赋初值为 50000 led1=0; //点亮灯 while(i--); //延时 i=50000; led1=1; //熄灭灯 while(i--); { }
分享到:
收藏