2013本一嵌入式实验报告模版 - 图文
更新时间:2024-05-25 21:54:01 阅读量: 综合文库 文档下载
- 嵌入式实验报告心得体会推荐度:
- 相关推荐
嵌入式系统及设计
综合实验报告
学 院:物理与信息工程学院 专 业:微电子 姓 名: 强书连 学 号: 111000628 指导老师:张志晓
实验一:GPIO、流水灯
1、实验目的
1. 熟悉Keil及protues的使用方法; 2. 熟悉keil和protues的联调方式;
3. 熟悉ARM7的GPIO功能特性及使用方法; 4. 掌握ARM7的中断控制过程及应用;
2、实验要求
应用GPIO设计流水灯,编写代码,与PROTUES联调仿真。
3、实验内容
(1、)通过I/O模拟同步串口与74HC595进行连接,控制74HC595驱动LED显示。
(2)、利用ARM开发工具,建立工程,并添加代码,编译并连接工程,生成HEX文件。
(3)、在PROTEUS软件中,连接电路原理图。右击LPC2124,弹出的Edit Component对话框中,为LPC2124添加HEX文件路径。启动仿真,观察结果。
4、设计流程图
5、实验总结
本次实验在既轻松又紧张的氛围中结束了,说起这次时长三节课的实验,满满的都是收获。
首先,对嵌入式的认识加深了一步。从大一到大二,直至大三,都感觉嵌入式是一个比较神圣庄严的学科,学好了就业就不愁的感觉。可是本门课一开课,就感觉,学的基本都是外部电路,对于一些指令并没有接触,或者说都是虚的东西,实验带我了解了嵌入式。
其次对上节课学的指令集有了一次切身的应用,更加印象深刻。虽说实验过程不算是很顺利,但总体来说是让我学到了东西的。
我会更加积极的进入接下来几次实验的学习。
6、附录 程序关键代码
#include \ uint32 i; #define uchar unsigned char for(;dly>0;dly--) #define uint32 unsigned int for(i=0;i<5000;i++); #define SPI_CS 0x00000100 /*P0.8*/ }
#define SPI_DATA 0x00000040 void HC595_SendDat(uint32 dat) /*P0.6*/ {
#define SPI_CLK 0x00000010 uint32 i; /*P0.4*/ IO0CLR=SPI_CS; #define PIN_P014 0x00004000 #define SPI_IOCON 0x00000150 for(i=0;i<8;i++) uint32 key_flag=1; { const uint32 IO0CLR=SPI_CLK; DISP_TAB[]={ 0x01,0x02,0x04,0x08,0x10 if((dat&0x80)!=0) ,0x20,0x40,0x80,0x00}; IO0SET=SPI_DATA; void delayns(uint32 dly) else { IO0CLR=SPI_DATA;
dat<<=1; IO0SET=SPI_CLK; } IO0SET=SPI_CS; }
int main(void) { uint32 i; PINSEL0=0x00000000; IO0DIR=SPI_IOCON; while(1) { for(i=0;i<8;i++)
{
HC595_SendDat(~DISP_TAB[i]); delayns(50);
while((IO0PIN&PIN_P014)==0 ) { delayns(10) ; } }} }
实验二:GPIO、中断应用
1、实验目的
5. 熟悉Keil及protues的使用方法; 6. 熟悉keil和protues的联调方式;
7. 熟悉ARM7的GPIO功能特性及使用方法; 8. 掌握ARM7的中断控制过程及应用;
2、实验要求
应用中断及GPIO设计一个按键控制秒表,编写代码,与PROTUES联调仿真。
3、实验内容
(1)、写出根据设计流程图,写出程序,并编译。
(2)、利用ARM开发工具,建立工程,并添加代码,编译并连接工程,生成HEX文件。
(3)、在PROTEUS软件中,连接电路原理图。右击LPC2124,弹出的Edit Component对话框中,为LPC2124添加HEX文件路径。启动仿真,观察结果。
4、设计流程图
5、实验总结
本次实验比上次的实验难了不少,不是纯粹的书上程序照抄下来。所以对我这种对指令集不是很熟悉的人来说,实验的困难程度还是有的,但在同学的帮助下,在自己的积极学习下,本次的实验顺利的结束了。
纵观本次实验,充满了讨论声,各种离开座位。因为不熟悉,也因为自己的学习能力不够,所以实验做得很吃力。
本次实验让我对相关内容有了更深刻的了解,尤其是通过跟同学的交流。并且让我对团队的力量有了更加坚定的信仰,一个人的力量小,可是一群人的力量是巨大的。
我会继续在接下来的实验中发挥自己的学习主动性。
6、附录 程序关键代码
#include
#define LED 0x00010000 //led灯
#define LED8 0x000ffff //数码管 const unsigned int DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
//数码管显示段码
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void Sec_Display(int second) { int sec_ge; int sec_shi; second = SEC; sec_ge = second; sec_shi = second/10; IO0CLR = LED8; IO0SET = DISP_TAB[sec_shi] | (DISP_TAB[sec_ge]<<8); }
void __irq IRQ_Rtc(void) { if( (IO0SET & LED) == 0 ) IO0SET = LED; //点亮LED else IO0CLR = LED; //熄
灭LED
Sec_Display(SEC); //显示秒值 ILR = 0x01; //清除中断标志位 VICVectAddr = 0x00; //清除中断地址 }
void RtcInit(void) { PREINT = Fpclk/32768-1; //设置预分频器 PREFRAC = Fpclk-(Fpclk/32768)*32768; YEAR = 2012; //时间初始化值 MONTH = 1; DOM = 10; HOUR = 8; MIN=30; SEC=0; CIIR = 0x01; //设置秒值的增量产生一次中断 CCR = 0X01; //启动RTC VICIntSelect = 0x00; //所有中断通道设置为IRQ中断 VICVectCntl0 = 0x2d; //RTC中断通道分配最高优先级 VICVectAddr0 = (unsigned long) IRQ_Rtc; //设置中断服务程序地址向量 VICIntEnable = 0x00002000; //使能RTC中断 }
void LedInit(void) { PINSEL0 = 0X00000000;
IO0DIR = LED | LED8; Sec_Display(0); }
int main() {
LedInit(); RtcInit();
while(1); }
实验三:UART、AD综合实验
1、 实验目的
1. 熟悉Keil及protues的使用方法; 2. 熟悉keil和protues的联调方式;
3. 熟悉ARM7的GPIO功能特性及使用方法; 4. 掌握ARM7的中断控制过程及应用;
2、实验要求
使用A/D转换器的AIN0和AIN1测量两路直流电压,然后将转换结果从串口输出。
3、 实验内容
(1)、LPC2124的P0.0和P0.1引脚连接到虚拟终端的RXD和TXD端口;AIN0和AIN1分别接到两个电阻器,当阻值变化时可引起转换结果变化。
(2)、利用ARM开发工具,建立工程,并添加代码,编译并连接工程,生成HEX文件。
(3)、在PROTEUS软件中,连接电路原理图。右击LPC2124,弹出的Edit Component对话框中,为LPC2124添加HEX文件路
径。启动仿真,观察结果。
4、 设计流程图
5、实验总结
本次实验室本学期最后一次实验,带着不舍离开实验室。虽说实验做完了,我对嵌入式的学习还是不会完的,况且这次的实验并不是那么的顺利。
本次实验让我对相关知识有了再深一步的了解,并且对嵌入式这门课有了更深一步的了解,嵌入式少了软件或硬件,你都不能学的很精。在未学之前,感觉嵌入式就是软件,学习刚开始,感觉学习是硬件,现在我的认识或许更加全面。
感谢老师的谆谆教诲,我会在以后的学习,工作道路上受益匪浅的。
6、附录
程序关键代码
/****************************************************************************
* 文 件 名:main.c
* 功 能:使用ADC模块的通道0、1进行电压的测量,然后将转换结果从串口输出,
****************************************************************************/
#include \#include
/****************************************************************************
* 名 称:DelayNS() * 功 能:长软件延时 * 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void DelayNS(uint32 dly) {
uint32 i;
for(; dly>0; dly--) {
for(i=0; i<5000; i++); } }
/****************************************************************************
* 名 称:UART0Init()
* 功 能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验 * 入口参数:bps 通讯波特率 * 出口参数:无
****************************************************************************/
void UART0Init(uint32 bps) {
uint16 Fdiv;
PINSEL0 = (PINSEL0 & (~0x0F)) | 0x05; // 不影响其它管脚连接,设置I/O连接到UART0
U0LCR = 0x83; // DLAB = 1,可设置波特率 Fdiv = (Fpclk / 16) / bps; // 设置波特率 U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03; }
/****************************************************************************
* 名 称:UART0SendByte()
* 功 能:向串口发送字节数据,并等待发送完毕。
* 入口参数:data 要发送的数据 * 出口参数:无
****************************************************************************/
void UART0SendByte(uint8 data) {
U0THR = data;
// 发送数据
while( (U0LSR&0x20)==0 ); // 等待数据发送完毕 }
/****************************************************************************
* 名 称:UART0SendStr()
* 功 能:向串口发送一字符串 * 入口参数:srt 要发送的字符串的指针
* 出口参数:无
****************************************************************************/
void UART0SendStr(char *str) {
while(1) {
if( *str == '\\0' ) break; UART0SendByte(*str++); // 发送数据 } }
/****************************************************************************
* 名 称:main() * 功 能:进行通道0、1电压ADC转换,并把结果转换成电压值,然后发送到串口。* 说 明:在CONFIG.H文件中包含stdio.h。
****************************************************************************/
int main(void) {
uint32 ADC_Data; char str[20];
UART0Init(9600);
// 初始化UART0 PINSEL1 = 0x01400000; // 设置P0.27、P0.28连接到AIN0、AIN1
/* 进行ADC模块设置,其中x< ((Fpclk / 1000000 - 1) << 8) | // CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz (0 << 16) | // BURST = 0 ,软件控制转换操作 (0 << 17) | // CLKS = 0 ,使用11clock转换 (1 << 21) | // PDN = 1 , 正常工作模式(非掉电转换模式) (0 << 22) | // TEST1:0 = 00 ,正常工作模式(非测试模式) (1 << 24) | // START = 1 ,直接启动ADC转换 (0 << 27); // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换) DelayNS(10); ADC_Data = ADDR; // 读取ADC结果,并清除DONE标志位 while(1) { ADCR = (ADCR&0x00FFFF00)|0x01|(1 << 24); // 设置通道1,并进行第一次转换 while( (ADDR&0x80000000)==0 ); // 等待转换结束 ADCR = ADCR | (1 << 24); // 再次启运转换 while( (ADDR&0x80000000)==0 ); // 等待转换结束 ADC_Data = ADDR; // 读取ADC结果 ADC_Data = (ADC_Data>>6) & 0x3FF; // 提取AD转换值 ADC_Data = ADC_Data * 3300/1024; // 数值转换 sprintf(str, \\\r\ADC_Data); UART0SendStr(str); DelayNS(100); ADCR = (ADCR&0x00FFFF00)|0x02|(1 << 24); // 设置通道2,并进行第一次转换 while( (ADDR&0x80000000)==0 ); // 等待转换结束 ADCR = ADCR | (1 << 24); // 再次启运转换 while( (ADDR&0x80000000)==0 ); // 等待转换结束 ADC_Data = ADDR; // 读取ADC结果 ADC_Data = (ADC_Data>>6) & 0x3FF; // 提取AD转换值 ADC_Data = ADC_Data * 3300/1024; // 数值转换 sprintf(str, \\\r\ADC_Data); UART0SendStr(str); DelayNS(100); } }
正在阅读:
2013本一嵌入式实验报告模版 - 图文05-25
严以修身——践行社会主义核心价值观 坚守共产党人的精神高地05-10
初中语文教学中对先学后教模式的实际应用03-10
掌握买房时如何与开发商谈判的技巧09-19
110kV清涧站35kV I段PT柜局放检测案例 - 图文04-09
2016秋2014级MATLAB程序设计实验指导书01-06
支付系统行号管理指引0081312-09
UG命令:边倒圆06-05
不可以错过的英美文学选读要点总结精心整理11-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 嵌入式
- 模版
- 实验
- 图文
- 报告
- 2013
- 擎洲广达-浙江2010定额软件操作说明书2003
- 高考作文素材
- 2009年各地一
- 县水利局年度工作总结范文
- 塑料编织彩布项目可行性研究报告(发改立项备案+2013年最新案例
- 兰大《行政管理学》17春平时作业2
- 2015英语六级写作翻译汇总
- 2011年全国各地中考数学试卷试题实数
- 部编本人教版2018-2019年小学一年级语文下册期中测试卷(精品)W
- 国际结算
- 如何设计跑车型DVD迷你组合音响项目可行性研究报告评审方案(201
- 2011年度江永县文化局政府信息公开工作年度报告
- 重点概念提示及传播学十大经典解读
- 钻井队突发事故应急处置方案 - 图文
- JGJ 162-2008建筑施工模板安全技术
- 各类稳定土拌和设备(厂拌)设备参数
- 2-6年级多近反词汇
- 一年级简单看图写话图片及答案
- 杨萌的论文(科研广角)
- 公务员考试常识