標題:
單片機直接驅動40-IO驅動段碼LCD_6個8
[打印本頁]
作者:
pandabentobe
時間:
2018-9-5 15:12
標題:
單片機直接驅動40-IO驅動段碼LCD_6個8
IO直接驅動LCD
0.jpg
(94.55 KB, 下載次數: 89)
下載附件
2018-9-14 03:37 上傳
單片機源程序如下:
#include <intrins.h>
#include "config.h"
#include "timer.h"
#include "LCD_IO16.h"
/************* 功能說明 **************
用STC115系列測試IO直接驅動段碼LCD(6個8字LCD, 1/4 Dutys, 1/3 bias)。
上電后顯示一個時間(時分秒).
P3.2對地接一個開關,用來進入睡眠或喚醒.
******************************************/
/************* 本地常量聲明 **************/
/************* 本地變量聲明 **************/
u8 cnt_500ms;
u8 second,minute,hour;
bit B_Second; //秒信號
/************* 本地函數聲明 **************/
/************* 外部函數和變量聲明 *****************/
extern bit B_2ms;
/************************ 定時器配置 ****************************/
void Timer_config(void)
{
TIM_InitTypeDef TIM_InitStructure; //結構定義
TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; //指定工作模式, TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
TIM_InitStructure.TIM_Polity = PolityLow; //指定中斷優(yōu)先級, PolityHigh,PolityLow
TIM_InitStructure.TIM_Interrupt = ENABLE; //中斷是否允許, ENABLE或DISABLE
TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; //指定時鐘源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
TIM_InitStructure.TIM_ClkOut = DISABLE; //是否輸出高速脈沖, ENABLE或DISABLE
TIM_InitStructure.TIM_Value = 65536 - (MAIN_Fosc / 500); //初值, 節(jié)拍為500HZ
TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后啟動定時器, ENABLE或DISABLE
Timer_Inilize(Timer0,&TIM_InitStructure); //初始化Timer0 Timer0,Timer1,Timer2
}
/******************** 顯示時間 **************************/
void LoadRTC(void)
{
LCD_load(1,hour/10);
LCD_load(2,hour%10);
LCD_load(3,minute/10);
LCD_load(4,minute%10);
LCD_load(5,second/10);
LCD_load(6,second%10);
}
//========================================================================
// 函數: void delay_ms(unsigned char ms)
// 描述: 延時函數。
// 參數: ms,要延時的ms數, 這里只支持1~255ms. 自動適應主時鐘.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 備注:
//========================================================================
void delay_ms(u8 ms)
{
unsigned int i;
do{
i = MAIN_Fosc / 13000;
while(--i) ; //14T per loop
}while(--ms);
}
/******************** 主函數**************************/
void main(void)
{
Init_LCD_Buffer();
Timer_config();
EA = 1;
LCD_SET_2M; //顯示時分間隔:
LCD_SET_4M; //顯示分秒間隔:
LoadRTC(); //顯示時間
while (1)
{
PCON |= 0x01; //為了省電, 進入空閑模式(電流大約2.5~3.0mA @5V),由Timer0 2ms喚醒退出
_nop_();
_nop_();
_nop_();
if(B_2ms) //2ms節(jié)拍到
{
B_2ms = 0;
if(++cnt_500ms >= 250) //500ms到
{
cnt_500ms = 0;
// LCD_FLASH_2M; //閃爍時分間隔:
// LCD_FLASH_4M; //閃爍分秒間隔:
B_Second = ~B_Second;
if(B_Second)
{
if(++second >= 60) //1分鐘到
{
second = 0;
if(++minute >= 60) //1小時到
{
minute = 0;
if(++hour >= 24) hour = 0; //24小時到
}
}
LoadRTC(); //顯示時間
}
}
if(!P32) //鍵按下,準備睡眠
{
LCD_CLR_2M; //顯示時分間隔:
LCD_CLR_4M; //顯示分秒間隔:
LCD_load(1,DIS_BLACK);
LCD_load(2,DIS_BLACK);
LCD_load(3,0);
LCD_load(4,0x0F);
LCD_load(5,0x0F);
LCD_load(6,DIS_BLACK);
while(!P32) delay_ms(10); //等待釋放按鍵
delay_ms(50);
while(!P32) delay_ms(10); //再次等待釋放按鍵
TR0 = 0; //關閉定時器
IE0 = 0; //外中斷0標志位
EX0 = 1; //INT0 Enable
IT0 = 1; //INT0 下降沿中斷
P1n_push_pull(0xff); //com和seg全部輸出0
P2n_push_pull(0xff); //com和seg全部輸出0
P1 = 0;
P2 = 0;
PCON |= 0x02; //Sleep
_nop_();
_nop_();
_nop_();
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
40-IO-LCD-8x6-2014-6-19.rar
(1.72 MB, 下載次數: 54)
2018-9-5 15:11 上傳
點擊文件名下載附件
io控制lcd
下載積分: 黑幣 -5
作者:
pandabentobe
時間:
2018-9-5 15:12
請問怎么做呀,我查了許多資料,不太懂,求大神解決
作者:
mafachang
時間:
2021-1-30 21:34
應該很不錯非常需要
作者:
chenglcd123
時間:
2022-8-25 14:41
LCD段碼 I.O直驅
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1