1、 单片机原理及应用课程设计单片机原理及应用课程设计 学院名称:学院名称: 计算机学院计算机学院 专业班级:专业班级: 计算机计算机 1001 1001 学生姓名:学生姓名: 学生学号:学生学号: 指导教师姓名:指导教师姓名: 完成时间:完成时间: 20132013 年年 7 7 月月 5 5 日日 点阵式液晶显示屏的显示程序设计点阵式液晶显示屏的显示程序设计 一、设计目的一、设计目的 1熟练掌握 C51 系统仿真开发系统的应用。 2加强单片机的综合运用能力、提高单片机的软件编程和调试能力,为以后的学习和 开发工作打下良好基础。 3掌握的液晶的工作原理以及应用设计。 4掌握小系统开发设计的流程以
2、及设计思路。 二、设计方案二、设计方案 1 1、实验要求:、实验要求: 1)字符方式:从下到上滚动显示: “江苏大学计算机学院”然后交替显示: “2013 年单 片机课程设计” “液晶点阵显示屏程序设计” “作者姓名、班级、学号” 2)图片方式:显示相应图片(有左、右移,上下卷等多种动态方式 ) 3) 模拟量采样值显示(温度、压力、电位) 4) 其它功能不限,可自由发挥(时钟、秒表、计算器、菜单等) ,拓展要求 2 2、设计思路:、设计思路: 将程序分成四个模块: 1.主函数模块 main.c 2.模数转换模块 ADC.c 3.液晶显示模块 KS0108.c 4.测试模块 test7279.c
3、 其中,在 main.c 中定义一个功能选择菜单图片,包含课设的简介,图片的变换,模拟 量的采集以及计算器的实现,该菜单功能的切换由按键功能来实现。 在 KS0108.c 中定义了两张图片分别来简单介绍一下该课程设计,包含“江苏大学计算 机学院、2013 年单片机课程设计”和“秦佳、计算机 1001、3100602007” ;还定义了字符方 式下的 “液晶点阵显示屏程序设计” ; 定义了在 ADC 中要用到的 0-9 的数字以及计算器中要 用到的各种运算符。在其中还定义了上移、下移、左移和右移函数以及计算器实现的函数。 在 ADC.c 中定义了字符形式的“温度压力电位”以及将模拟量转换成数字量
4、的 showadc 函数。 三、三、程序流程图:程序流程图: a a、系统主流程图系统主流程图 b b、主函数流程图主函数流程图 c c、显示模块流程图显示模块流程图 d d、模数转换模块流程图模数转换模块流程图 开始 模数转换模块 液晶显示模块 主函数模块 各函数说明 初始化各部件 开中断 显示菜单 判断键入值并 调用相应函数 a b 判断 KS0108 是否空闲 向 LCD 发送控制命令 定义各类显示函数 定义初始化 LCD 函数 定义各类图像变换函数 以及字符显示函数 c 开始 读取 No 和模拟量 No=1 No=2 No=3 返回温度 返回电位 返回压力 结束 d 四、四、主要的主要
5、的源程序及注释源程序及注释 1 1、main.cmain.c #include “c8051f020.h“ #include void Delay1us(unsigned char us) while (us) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); -us; void SYSCLK_Init (void) int i; / delay counter OSCXCN = 0x67; / start external oscillator with / 18.432MHz crystal for (i=0; i 8; / set Timer0 t
6、o overflow in 1ms TL0 = -SYSCLK/1000; TR0 = 1; / START Timer0 IE|= 0x2; void Timer0_ISR (void) interrupt 1 /1ms TH0 = (-SYSCLK/1000) 8; TL0 = -SYSCLK/1000; if (Count1ms) Count1ms-; void Delay1ms(unsigned char T) Count1ms=T; while (Count1ms); void Delay1s(unsigned char T) while (T) Delay1ms(200); Delay