欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
msp430單片機(jī)AD轉(zhuǎn)換1602顯示Proteus仿真+代碼
[打印本頁(yè)]
作者:
lokk_jk
時(shí)間:
2019-5-23 10:19
標(biāo)題:
msp430單片機(jī)AD轉(zhuǎn)換1602顯示Proteus仿真+代碼
msp430,AD轉(zhuǎn)換1602顯示仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(14.84 KB, 下載次數(shù): 70)
下載附件
2019-5-24 01:14 上傳
0.png
(9.8 KB, 下載次數(shù): 70)
下載附件
2019-5-24 01:14 上傳
單片機(jī)源程序如下:
/******************************************************************
* 實(shí)驗(yàn)名稱:LCD1602 顯示仿真 (MSP430F249)
*
* 實(shí)驗(yàn)說明:
* 通設(shè)置系統(tǒng)主時(shí)鐘(MCLK=8Mhz ) 、輔助時(shí)鐘(ACLK=8Mhz )、
* 子系統(tǒng)時(shí)鐘(SMCLK=8Mhz )
* 編譯軟件:Embedded Workbench 5.3
*
*仿真軟件:proteus7.7 sp 2
******************************************************************/
#include <MSP430x24x.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
/**************定義接口************************/
#define LCDIO P1OUT
#define LCD1602_RS_1 P2OUT|=1
#define LCD1602_RS_0 P2OUT&=~1
#define LCD1602_RW_1 P2OUT|=2
#define LCD1602_RW_0 P2OUT&=~2
#define LCD1602_EN_1 P2OUT|=4
#define LCD1602_EN_0 P2OUT&=~4
/**************定義函數(shù)************************/
void LCD_write_command(unsigned char command);//寫入指令函數(shù)
void LCD_write_dat( unsigned char dat);//寫入數(shù)據(jù)函數(shù)
void LCD_set_xy( unsigned char x, unsigned char y );//設(shè)置顯示位置函數(shù)
void LCD_dsp_char( unsigned char x,unsigned char y, char dat);//顯示一個(gè)字符函數(shù)
void LCD_dsp_string(unsigned char X,unsigned char Y,const char *s);//顯示字符串函數(shù)
void LCD_init(void);//初始化函數(shù)
void delay_nms(unsigned int n);//延時(shí)函數(shù)
/********************************************/
void delayms(uint t)
{
uint i;
while(t--)
for(i=1330;i>0;i--);//進(jìn)過參數(shù)的調(diào)整
}
/*******檢查忙函數(shù)*************/
void LCD_check_busy() //實(shí)踐證明,在我的LCD1602上,檢查忙指令通過率極低,以
{ //至于不能正常使用LCD。因此我沒有再用檢查忙函數(shù)。而使
P1DIR=0x00;
LCDIO=0xff;
LCD1602_RS_0; //要用200次循環(huán)便能完成。
LCD1602_RW_1;
LCD1602_EN_1;
while(P1IN&0x80);
LCD1602_EN_0;
P1OUT=0x00;
P1DIR=0xFF;
}
/******************************/
/**************寫指令函數(shù)********************************/
void LCD_write_command(unsigned char command)
{
//LCD_check_busy(); //加上這句仿真無法通過
LCD1602_RS_0;
LCDIO=command;
LCD1602_EN_1;
//delayms(1);
LCD1602_EN_0;
delayms(1);
}
/***************************************************/
/****************寫數(shù)據(jù)函數(shù)************************/
void LCD_write_dat( unsigned char dat)
{
//LCD_check_busy(); //加上這句仿真無法通過
LCD1602_RS_1;
LCDIO=dat;
LCD1602_EN_1;
//delayms(1);
LCD1602_EN_0;
delayms(1);
LCD1602_RS_0;
}
/****************************************************/
/***************設(shè)置顯示位置**************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 1)
address = 0x80+x;
else if (y == 2)
{
address=0x80+0x40+x;
}
LCD_write_command(address);
}
/***************************************************/
/****************顯示一個(gè)字符**********************/
void LCD_dsp_char( unsigned char x,unsigned char y, char dat)
{
LCD_set_xy( x, y );
LCD_write_dat(dat);
}
/**********************************************/
/***************顯示字符串函數(shù)***************/
void LCD_dsp_string(unsigned char X,unsigned char Y,const char *s)
{
uchar len,List;
len=strlen(s);
LCD_set_xy( X, Y );
for(List=0;List<len;List++)
//LCD_dsp_char(X+List,Y,s[List]);
LCD_write_dat(s[List]);
}
/***********************************************/
/********** 延時(shí)**********************/
void delay_nms(unsigned int n)
{
unsigned int i=0,j=0;
for (i=n;i>0;i--)
for (j=0;j<10;j++);
}
/**************************************/
/************初始化函數(shù)****************/
void LCD_init(void)
{
LCD1602_RW_0;
LCD1602_EN_0;
//CLEARSCREEN;//clear screen
LCD_write_command(0x38);//set 8 bit data transmission mode
delayms(1);
LCD_write_command(0x38);//set 8 bit data transmission mode
delayms(1);
LCD_write_command(0x38);//set 8 bit data transmission mode
delayms(1);
LCD_write_command(0x06);//open display (enable lcd display)
delayms(1);
LCD_write_command(0x0C);//set lcd first display address
delayms(1);
LCD_write_command(0x01);//clear screen
delayms(1);
//LCD_write_command(0x80);//clear screen
//delayms(1);
}
/****************************************************/
void main(void)
{
WDTCTL=WDTPW + WDTHOLD; // 關(guān)閉看門狗
P1DIR=0xFF; // 設(shè)置方向
P1SEL=0; // 設(shè)置為普通I/O 口
P2DIR=0xFF; // 設(shè)置方向
P2SEL=0; // 設(shè)置為普通I/O 口
P2OUT=0x00;
P1OUT=0x00;
delayms(200);
LCD_init();
while(1)
{
LCD_dsp_string(1,1," LCD TEST ");//在第一行第一列顯示"LCD TEST"
LCD_dsp_string(1,2," SUCCSEEE! ");//在第一行第一列顯示"LCD TEST"
_BIS_SR(LPM0_bits+ GIE);//進(jìn)入低功耗睡眠模式
}
}
復(fù)制代碼
所有資料51hei提供下載:
LCD1602.rar
(243.5 KB, 下載次數(shù): 59)
2019-5-23 10:18 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
靜靜的咸魚1
時(shí)間:
2019-5-26 14:47
謝謝樓主分享! ......
作者:
51hei電控200522
時(shí)間:
2019-5-26 23:53
這篇帖子大家千萬別下,這根本實(shí)現(xiàn)不了AD采集,僅僅是一個(gè)液晶的測(cè)試程序。強(qiáng)烈建議站長(zhǎng)給刪掉~!!!!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1