中国石油大学华东单片机实验程序全部Word格式文档下载.docx
- 文档编号:21207541
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:26
- 大小:21.74KB
中国石油大学华东单片机实验程序全部Word格式文档下载.docx
《中国石油大学华东单片机实验程序全部Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《中国石油大学华东单片机实验程序全部Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
*TACCR0会清零所以要重装TACCR0的值*/
TA0CTL|=TASSEL_1+MC_1+TACLR;
//选择ACLK为时钟源,增计数,计数器清零
//装入比较值
TA0CCTL0|=CCIE;
//使能捕获比较中断
#pragmavector=TIMER0_A0_VECTOR
TA0CCR0=32768-1;
//重新装入比较值
/*二、连续计数,TA0CCR0中断,溢出中断*/
P8DIR|=BIT1;
P8OUT|=BIT1;
TA0CTL|=TASSEL_1+MC_2+TACLR+TAIE;
//选择ACLK为时钟源,连续计数,计数器清零,溢出中断使能
TA0CCR0=20000;
//装入比较值
//比较中断
TA0CCR0+=20000;
//重新装入比较值
//溢出中断
__interruptvoidTAFLOW(void){
P8OUT^=BIT1;
/*--------------------------ADC12----------------------------*/
/*课件第一个例子*/
intADC12_Result;
ADC12CTL1|=ADC12CONSEQ_2;
//单通道重复采样模式
ADC12CTL0|=ADC12SREF2_5V+ADC12REFON;
//选择内部参考源2.5V,打开基准源,打开ADC内核
ADC12CTL0|=ADC12SHT0_4;
//过采样率设置为64个采样周期,打开AD转换
ADC12CTL1|=ADC12SSEL_1+ADC12DIV_1;
//ACLK2分频为采样时钟
ADC12MCTL0|=ADC12INCH_1;
//选择通道A1
ADC12CTL0|=ADC12ON;
//开启ADC12
for(inti=0;
i<
20;
i++){
ADC12CTL0|=ENC+ADC12SC;
//开始转换
while((BIT0&
ADC12IFG)==0);
//等待ADC12IFG标志变高(转换完成)
ADC12_Result+=ADC12MEM0;
//读取采样结果
}
ADC12_Result=ADC12_Result/20;
/*----------------------------实验程序---------------------------*/
/*---------------------------实验2---------------------------*/
/*1.控制指示灯LED1、LED2和LED3闪烁*/
#include<
msp430f5529.h>
voidmain(void)
{
volatileunsignedinti;
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗
//P1.0设为输出
P8DIR|=BIT1+BIT2;
//P8.1P8.2设为输出
while
(1)//死循环
{
//P1.0取反输出
P8OUT^=(BIT1+BIT2);
//P8.1P8.2取反输出
for(i=50000;
i>
0;
i--);
//延迟
/*2.LED4亮,LED5和LED6灭,然后LED5亮,LED4和LED6灭,
然后LED6亮,LED4和LED5灭,按此顺序循环*/
P1DIR|=BIT1+BIT2+BIT3;
//P1.1P1.2P1.3设为输出
P1OUT=0x02;
//P1.1输出高,P1.2P1.3输出低
for(i=0;
i<
60000;
i++);
P1OUT=0x04;
//P1.2输出高,P1.1P1.3输出低
P1OUT=0x08;
//P1.3输出高,P1.1P1.2输出低
/*3.检测按键S1,按键按下时产生IO口输入中断,设置变量NUM记录按键次数*/
unsignedintNUM=0;
P1DIR&
=~BIT7;
//P1.7设置为输入
P1OUT|=BIT7;
P1REN|=BIT7;
//P1.7上拉使能
P1IES|=BIT7;
//下降沿触发中断
P1IE|=BIT7;
//IO中断使能
P1IFG&
_BIS_SR(LPM3_bits+GIE);
//进入低功耗模式LPM3,开总中断
while
(1);
#pragmavector=PORT1_VECTOR
__interruptvoidport1_7inter(void){
NUM++;
//清中断标志
/*4.4.检测按键S1,按键按下时中断,按键控制LED4交替点亮或熄灭,
即按键按一下LED4,按键再按一下LED4灭,如此循环*/
//P1.0设置为输出
/*---------------------------实验3---------------------------*/
/**/
/*LCD_TestbyTY.c
*1.show"
a=x,b=x,sum=a+b=x"
*2.graphy(trangle,rectangle,line,trapezium)andmovetheshape
*3.settheContrastandbacklight
*/
msp430f5529.h"
HAL_Dogs102x6.h"
string.h"
stdlib.h>
stdio.h>
#defineuintunsignedint
uinta=1;
uintb=2;
uintSum=0;
uintpage=0;
//第0页是菜单,第1页是功能实现
uintselector=0;
//所选择项的标志
uinty=0;
//上下移动的坐标
uintcontrast=15,backlight=5;
/****子函数****/
voidIO_init(void);
voidCrystal_init(void);
voidDraw_absum(void);
voidLCD_mainmenu(void);
voidpaint(uintx,uinty,uintflag);
/****initial****/
//关闭看门狗
IO_init();
//IO初始化
LCD_init();
//LCD初始化
GIE;
//开启总中断
LPM3;
/****IOinitial****/
voidIO_init(void){
/****setthes1(P1.7)****/
//P1.7设置为输入
//上拉电阻使能
//中断使能
//下降沿触发
//中断标志清除
/****setthes2(P2.2)****/
P2DIR&
=~BIT2;
//P2.2设置为输入
P2OUT|=BIT2;
P2REN|=BIT2;
//上拉使能
P2IE|=BIT2;
P2IES|=BIT2;
P2IFG&
/****LCDinitial****/
voidLCD_init(void){
Dogs102x6_init();
Dogs102x6_backlightInit();
Dogs102x6_clearScreen();
/****S1interrupt****/
#pragmavector=PORT1_VECTOR
__interruptvoidP1_7(void){
unsignedinti;
if(!
(P1IN&
BIT7)){
for(i=100;
//消抖
while(!
BIT7));
if(page==0){
if(selector==6)selector=0;
selector++;
Dogs102x6_clearImage(48,6,8,0);
//清除选项标志'
*'
Dogs102x6_charDraw(selector,0,'
0);
}else{
switch(selector){
case1:
a++;
Dogs102x6_stringDraw(0,0,"
a=1,b=2,sum=a+b"
0);
Draw_absum();
case2:
paint(0,y,0);
//绘制图形
case3:
paint(0,y,1);
if(y==38)y=0;
//重置纵坐标
y++;
//纵坐标增加
case4:
if(y==0)y=38;
y--;
//纵坐标减
case5:
charbuffer[15];
contrast++;
//对比度增加
if(contrast==32)contrast=0;
//重置对比度
Dogs102x6_setContrast(contrast);
//设置对比度
/****显示对比度值****/
sprintf(buffer,"
Contrast=%d"
contrast);
Dogs102x6_stringDraw(4,12,buffer,0);
case6:
backlight++;
//增加背光亮度
if(backlight==12)backlight=0;
//重置背光
Dogs102x6_setBacklight(backlight);
//设置背光
/****显示背光值****/
Backlight=%d"
backlight);
default:
P1IFG&
=~BIT7;
/****S2中断****/
#pragmavector=PORT2_VECTOR
__interruptvoidP2_2(void)
(P2IN&
BIT2))
BIT2));
page==1;
//显示a,b,sum
//绘制图形
paint(0,0,0);
//下移图形
//上移图形
//显示对比度
//显示背光值
page=0;
LCD_mainmenu();
P2IFG&
=~BIT2;
//中断标志清除
/*menu:
*Caculatea+b
*Paint
*Contrast
*backlight
voidLCD_mainmenu(void){
//清屏
Dogs102x6_stringDraw(0,36,"
Menu:
"
Dogs102x6_stringDraw(1,6,"
Calculatea+b"
Dogs102x6_stringDraw(2,6,"
Paint"
Dogs102x6_stringDraw(3,6,"
Movedown"
Dogs102x6_stringDraw(4,6,"
Moveup"
Dogs102x6_stringDraw(5,6,"
Contrast"
Dogs102x6_stringDraw(6,6,"
backlight"
/****a=1,b=2,sum=a+b****/
voidDraw_absum(void){
//清屏
Sum=a+b;
charbuffer[12];
a=%d"
a);
//数字——>
字符串
Dogs102x6_stringDraw(4,0,buffer,0);
//“a=1”
B=%d"
b);
Dogs102x6_stringDraw(5,0,buffer,0);
//“B=2”
Sum=a+b=%d"
Sum);
Dogs102x6_stringDraw(6,0,buffer,0);
//“Sum=a+b=3”
/****drawtheshapes****/
voidpaint(uintx,uinty,uintflag){
//clearthescreen
/**********************trangle**********************/
Dogs102x6_horizontalLineDraw(5+x,45+x,25+y,0);
Dogs102x6_verticalLineDraw(5+y,25+y,5+x,0);
//drawaverticalline
Dogs102x6_lineDraw(5+x,5+y,45+x,25+y,0);
//drawaline
if(flag==0){
/************************line***********************/
Dogs102x6_horizontalLineDraw(0,101,32,0);
//drawahorizontalline
Dogs102x6_verticalLineDraw(0,64,51,0);
Dogs102x6_lineDraw(5,5,96,58,0);
//drawaline
/***********************circle**********************/
Dogs102x6_circleDraw(60,45,10,0);
//drawacircle
/**********************rectangle********************/
Dogs102x6_horizontalLineDraw(5,45,35,0);
Dogs102x6_horizontalLineDraw(5,45,55,0);
Dogs102x6_verticalLineDraw(35,55,5,0);
Dogs102x6_verticalLineDraw(35,55,45,0);
/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国 石油大学 华东 单片机 实验 程序 全部